Full Code of avast/retdec for AI

master 8be53bbd3d2c cached
3847 files
68.4 MB
14.2M tokens
14478 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (56,616K chars total). Download the full file to get everything.
Repository: avast/retdec
Branch: master
Commit: 8be53bbd3d2c
Files: 3847
Total size: 68.4 MB

Directory structure:
gitextract_9nmdfk99/

├── .clang-format
├── .github/
│   └── workflows/
│       ├── Linux/
│       │   ├── build.sh
│       │   ├── ignore_Debug
│       │   ├── ignore_Release
│       │   ├── install-deps.sh
│       │   ├── prepare-clang.sh
│       │   └── run-tests.sh
│       ├── Windows/
│       │   ├── build.sh
│       │   ├── ignore_Debug
│       │   ├── ignore_Release
│       │   ├── install-deps.sh
│       │   ├── prepare-clang.sh
│       │   └── run-tests.sh
│       ├── common/
│       │   └── prepare-retdec-tests.sh
│       ├── macOS/
│       │   ├── build.sh
│       │   ├── ignore_Debug
│       │   ├── ignore_Release
│       │   ├── install-deps.sh
│       │   ├── prepare-clang.sh
│       │   └── run-tests.sh
│       ├── retdec-ci.yml
│       └── retdec-release.yml
├── .gitignore
├── .travis.yml
├── CHANGELOG.md
├── CITATION
├── CMakeLists.txt
├── Dockerfile
├── Dockerfile.dev
├── LICENSE
├── LICENSE-PELIB
├── LICENSE-THIRD-PARTY
├── README.md
├── SECURITY.md
├── cmake/
│   ├── GetGitRevisionDescription.cmake
│   ├── GetGitRevisionDescription.cmake.in
│   ├── deps.cmake
│   ├── options.cmake
│   └── utils.cmake
├── deps/
│   ├── CMakeLists.txt
│   ├── authenticode-parser/
│   │   ├── CMakeLists.txt
│   │   ├── include/
│   │   │   └── authenticode-parser/
│   │   │       └── authenticode.h
│   │   ├── retdec-authenticode-config.cmake
│   │   └── src/
│   │       ├── authenticode.c
│   │       ├── certificate.c
│   │       ├── certificate.h
│   │       ├── countersignature.c
│   │       ├── countersignature.h
│   │       ├── helper.c
│   │       ├── helper.h
│   │       ├── structs.c
│   │       └── structs.h
│   ├── capstone/
│   │   ├── CMakeLists.txt
│   │   ├── retdec-capstone-config.cmake
│   │   └── retdec-system-capstone-config.cmake
│   ├── eigen/
│   │   ├── Eigen/
│   │   │   ├── Cholesky
│   │   │   ├── Core
│   │   │   ├── Householder
│   │   │   ├── Jacobi
│   │   │   ├── QR
│   │   │   └── src/
│   │   │       ├── Cholesky/
│   │   │       │   ├── LDLT.h
│   │   │       │   ├── LLT.h
│   │   │       │   └── LLT_LAPACKE.h
│   │   │       ├── Core/
│   │   │       │   ├── Array.h
│   │   │       │   ├── ArrayBase.h
│   │   │       │   ├── ArrayWrapper.h
│   │   │       │   ├── Assign.h
│   │   │       │   ├── AssignEvaluator.h
│   │   │       │   ├── Assign_MKL.h
│   │   │       │   ├── BandMatrix.h
│   │   │       │   ├── Block.h
│   │   │       │   ├── BooleanRedux.h
│   │   │       │   ├── CommaInitializer.h
│   │   │       │   ├── ConditionEstimator.h
│   │   │       │   ├── CoreEvaluators.h
│   │   │       │   ├── CoreIterators.h
│   │   │       │   ├── CwiseBinaryOp.h
│   │   │       │   ├── CwiseNullaryOp.h
│   │   │       │   ├── CwiseTernaryOp.h
│   │   │       │   ├── CwiseUnaryOp.h
│   │   │       │   ├── CwiseUnaryView.h
│   │   │       │   ├── DenseBase.h
│   │   │       │   ├── DenseCoeffsBase.h
│   │   │       │   ├── DenseStorage.h
│   │   │       │   ├── Diagonal.h
│   │   │       │   ├── DiagonalMatrix.h
│   │   │       │   ├── DiagonalProduct.h
│   │   │       │   ├── Dot.h
│   │   │       │   ├── EigenBase.h
│   │   │       │   ├── ForceAlignedAccess.h
│   │   │       │   ├── Fuzzy.h
│   │   │       │   ├── GeneralProduct.h
│   │   │       │   ├── GenericPacketMath.h
│   │   │       │   ├── GlobalFunctions.h
│   │   │       │   ├── Inverse.h
│   │   │       │   ├── Map.h
│   │   │       │   ├── MapBase.h
│   │   │       │   ├── MathFunctions.h
│   │   │       │   ├── MathFunctionsImpl.h
│   │   │       │   ├── Matrix.h
│   │   │       │   ├── MatrixBase.h
│   │   │       │   ├── NestByValue.h
│   │   │       │   ├── NoAlias.h
│   │   │       │   ├── NumTraits.h
│   │   │       │   ├── PermutationMatrix.h
│   │   │       │   ├── PlainObjectBase.h
│   │   │       │   ├── Product.h
│   │   │       │   ├── ProductEvaluators.h
│   │   │       │   ├── Random.h
│   │   │       │   ├── Redux.h
│   │   │       │   ├── Ref.h
│   │   │       │   ├── Replicate.h
│   │   │       │   ├── ReturnByValue.h
│   │   │       │   ├── Reverse.h
│   │   │       │   ├── Select.h
│   │   │       │   ├── SelfAdjointView.h
│   │   │       │   ├── SelfCwiseBinaryOp.h
│   │   │       │   ├── Solve.h
│   │   │       │   ├── SolveTriangular.h
│   │   │       │   ├── SolverBase.h
│   │   │       │   ├── StableNorm.h
│   │   │       │   ├── Stride.h
│   │   │       │   ├── Swap.h
│   │   │       │   ├── Transpose.h
│   │   │       │   ├── Transpositions.h
│   │   │       │   ├── TriangularMatrix.h
│   │   │       │   ├── VectorBlock.h
│   │   │       │   ├── VectorwiseOp.h
│   │   │       │   ├── Visitor.h
│   │   │       │   ├── arch/
│   │   │       │   │   ├── AVX/
│   │   │       │   │   │   ├── Complex.h
│   │   │       │   │   │   ├── MathFunctions.h
│   │   │       │   │   │   ├── PacketMath.h
│   │   │       │   │   │   └── TypeCasting.h
│   │   │       │   │   ├── AVX512/
│   │   │       │   │   │   ├── MathFunctions.h
│   │   │       │   │   │   └── PacketMath.h
│   │   │       │   │   ├── AltiVec/
│   │   │       │   │   │   ├── Complex.h
│   │   │       │   │   │   ├── MathFunctions.h
│   │   │       │   │   │   └── PacketMath.h
│   │   │       │   │   ├── CUDA/
│   │   │       │   │   │   ├── Complex.h
│   │   │       │   │   │   ├── Half.h
│   │   │       │   │   │   ├── MathFunctions.h
│   │   │       │   │   │   ├── PacketMath.h
│   │   │       │   │   │   ├── PacketMathHalf.h
│   │   │       │   │   │   └── TypeCasting.h
│   │   │       │   │   ├── Default/
│   │   │       │   │   │   ├── ConjHelper.h
│   │   │       │   │   │   └── Settings.h
│   │   │       │   │   ├── NEON/
│   │   │       │   │   │   ├── Complex.h
│   │   │       │   │   │   ├── MathFunctions.h
│   │   │       │   │   │   └── PacketMath.h
│   │   │       │   │   ├── SSE/
│   │   │       │   │   │   ├── Complex.h
│   │   │       │   │   │   ├── MathFunctions.h
│   │   │       │   │   │   ├── PacketMath.h
│   │   │       │   │   │   └── TypeCasting.h
│   │   │       │   │   └── ZVector/
│   │   │       │   │       ├── Complex.h
│   │   │       │   │       ├── MathFunctions.h
│   │   │       │   │       └── PacketMath.h
│   │   │       │   ├── functors/
│   │   │       │   │   ├── AssignmentFunctors.h
│   │   │       │   │   ├── BinaryFunctors.h
│   │   │       │   │   ├── NullaryFunctors.h
│   │   │       │   │   ├── StlFunctors.h
│   │   │       │   │   ├── TernaryFunctors.h
│   │   │       │   │   └── UnaryFunctors.h
│   │   │       │   ├── products/
│   │   │       │   │   ├── GeneralBlockPanelKernel.h
│   │   │       │   │   ├── GeneralMatrixMatrix.h
│   │   │       │   │   ├── GeneralMatrixMatrixTriangular.h
│   │   │       │   │   ├── GeneralMatrixMatrixTriangular_BLAS.h
│   │   │       │   │   ├── GeneralMatrixMatrix_BLAS.h
│   │   │       │   │   ├── GeneralMatrixVector.h
│   │   │       │   │   ├── GeneralMatrixVector_BLAS.h
│   │   │       │   │   ├── Parallelizer.h
│   │   │       │   │   ├── SelfadjointMatrixMatrix.h
│   │   │       │   │   ├── SelfadjointMatrixMatrix_BLAS.h
│   │   │       │   │   ├── SelfadjointMatrixVector.h
│   │   │       │   │   ├── SelfadjointMatrixVector_BLAS.h
│   │   │       │   │   ├── SelfadjointProduct.h
│   │   │       │   │   ├── SelfadjointRank2Update.h
│   │   │       │   │   ├── TriangularMatrixMatrix.h
│   │   │       │   │   ├── TriangularMatrixMatrix_BLAS.h
│   │   │       │   │   ├── TriangularMatrixVector.h
│   │   │       │   │   ├── TriangularMatrixVector_BLAS.h
│   │   │       │   │   ├── TriangularSolverMatrix.h
│   │   │       │   │   ├── TriangularSolverMatrix_BLAS.h
│   │   │       │   │   └── TriangularSolverVector.h
│   │   │       │   └── util/
│   │   │       │       ├── BlasUtil.h
│   │   │       │       ├── Constants.h
│   │   │       │       ├── DisableStupidWarnings.h
│   │   │       │       ├── ForwardDeclarations.h
│   │   │       │       ├── MKL_support.h
│   │   │       │       ├── Macros.h
│   │   │       │       ├── Memory.h
│   │   │       │       ├── Meta.h
│   │   │       │       ├── NonMPL2.h
│   │   │       │       ├── ReenableStupidWarnings.h
│   │   │       │       ├── StaticAssert.h
│   │   │       │       └── XprHelper.h
│   │   │       ├── Householder/
│   │   │       │   ├── BlockHouseholder.h
│   │   │       │   ├── Householder.h
│   │   │       │   └── HouseholderSequence.h
│   │   │       ├── Jacobi/
│   │   │       │   └── Jacobi.h
│   │   │       ├── QR/
│   │   │       │   ├── ColPivHouseholderQR.h
│   │   │       │   ├── ColPivHouseholderQR_LAPACKE.h
│   │   │       │   ├── CompleteOrthogonalDecomposition.h
│   │   │       │   ├── FullPivHouseholderQR.h
│   │   │       │   ├── HouseholderQR.h
│   │   │       │   └── HouseholderQR_LAPACKE.h
│   │   │       └── plugins/
│   │   │           ├── ArrayCwiseBinaryOps.h
│   │   │           ├── ArrayCwiseUnaryOps.h
│   │   │           ├── BlockMethods.h
│   │   │           ├── CommonCwiseBinaryOps.h
│   │   │           ├── CommonCwiseUnaryOps.h
│   │   │           ├── MatrixCwiseBinaryOps.h
│   │   │           └── MatrixCwiseUnaryOps.h
│   │   ├── README.md
│   │   └── license.txt
│   ├── elfio/
│   │   ├── CMakeLists.txt
│   │   ├── COPYING.txt
│   │   ├── README.md
│   │   ├── include/
│   │   │   └── elfio/
│   │   │       ├── elf_types.hpp
│   │   │       ├── elfio.hpp
│   │   │       ├── elfio_dump.hpp
│   │   │       ├── elfio_dynamic.hpp
│   │   │       ├── elfio_header.hpp
│   │   │       ├── elfio_note.hpp
│   │   │       ├── elfio_relocation.hpp
│   │   │       ├── elfio_section.hpp
│   │   │       ├── elfio_segment.hpp
│   │   │       ├── elfio_strings.hpp
│   │   │       ├── elfio_symbols.hpp
│   │   │       └── elfio_utils.hpp
│   │   └── retdec-elfio-config.cmake
│   ├── googletest/
│   │   └── CMakeLists.txt
│   ├── keystone/
│   │   └── CMakeLists.txt
│   ├── llvm/
│   │   ├── CMakeLists.txt
│   │   └── retdec-llvm-config.cmake
│   ├── rapidjson/
│   │   ├── CMakeLists.txt
│   │   ├── README.md
│   │   ├── include/
│   │   │   └── rapidjson/
│   │   │       ├── allocators.h
│   │   │       ├── cursorstreamwrapper.h
│   │   │       ├── document.h
│   │   │       ├── encodedstream.h
│   │   │       ├── encodings.h
│   │   │       ├── error/
│   │   │       │   ├── en.h
│   │   │       │   └── error.h
│   │   │       ├── filereadstream.h
│   │   │       ├── filewritestream.h
│   │   │       ├── fwd.h
│   │   │       ├── internal/
│   │   │       │   ├── biginteger.h
│   │   │       │   ├── clzll.h
│   │   │       │   ├── diyfp.h
│   │   │       │   ├── dtoa.h
│   │   │       │   ├── ieee754.h
│   │   │       │   ├── itoa.h
│   │   │       │   ├── meta.h
│   │   │       │   ├── pow10.h
│   │   │       │   ├── regex.h
│   │   │       │   ├── stack.h
│   │   │       │   ├── strfunc.h
│   │   │       │   ├── strtod.h
│   │   │       │   └── swap.h
│   │   │       ├── istreamwrapper.h
│   │   │       ├── memorybuffer.h
│   │   │       ├── memorystream.h
│   │   │       ├── msinttypes/
│   │   │       │   ├── inttypes.h
│   │   │       │   └── stdint.h
│   │   │       ├── ostreamwrapper.h
│   │   │       ├── pointer.h
│   │   │       ├── prettywriter.h
│   │   │       ├── rapidjson.h
│   │   │       ├── reader.h
│   │   │       ├── schema.h
│   │   │       ├── stream.h
│   │   │       ├── stringbuffer.h
│   │   │       └── writer.h
│   │   ├── license.txt
│   │   └── retdec-rapidjson-config.cmake
│   ├── stb/
│   │   ├── CMakeLists.txt
│   │   ├── include/
│   │   │   └── stb/
│   │   │       └── stb_image.h
│   │   ├── retdec-stb-config.cmake
│   │   └── stb_image.c
│   ├── tinyxml2/
│   │   ├── CMakeLists.txt
│   │   ├── LICENSE.txt
│   │   ├── README.md
│   │   ├── include/
│   │   │   └── tinyxml2/
│   │   │       └── tinyxml2.h
│   │   ├── retdec-tinyxml2-config.cmake
│   │   └── tinyxml2.cpp
│   ├── tlsh/
│   │   ├── CMakeLists.txt
│   │   ├── WinFunctions.cpp
│   │   ├── include/
│   │   │   └── tlsh/
│   │   │       ├── WinFunctions.h
│   │   │       ├── tlsh.h
│   │   │       ├── tlsh_impl.h
│   │   │       ├── tlsh_util.h
│   │   │       ├── version.h
│   │   │       └── win_version.h
│   │   ├── retdec-tlsh-config.cmake
│   │   ├── tlsh.cpp
│   │   ├── tlsh_impl.cpp
│   │   └── tlsh_util.cpp
│   ├── whereami/
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── retdec-whereami-config.cmake
│   │   └── whereami/
│   │       ├── whereami.c
│   │       └── whereami.h
│   ├── yara/
│   │   ├── CMakeLists.txt
│   │   ├── patch.cmake
│   │   └── retdec-libyara-config.cmake
│   └── yaramod/
│       ├── CMakeLists.txt
│       └── retdec-yaramod-config.cmake
├── doc/
│   ├── CMakeLists.txt
│   └── doxygen/
│       ├── CMakeLists.txt
│       ├── doxygen.cfg.in
│       ├── doxygen.h
│       └── show_doxygen_log.cmake
├── include/
│   └── retdec/
│       ├── ar-extractor/
│       │   ├── archive_wrapper.h
│       │   └── detection.h
│       ├── bin2llvmir/
│       │   ├── analyses/
│       │   │   ├── ctor_dtor.h
│       │   │   ├── indirectly_called_funcs_analysis.h
│       │   │   ├── reachable_funcs_analysis.h
│       │   │   ├── reaching_definitions.h
│       │   │   └── symbolic_tree.h
│       │   ├── optimizations/
│       │   │   ├── asm_inst_remover/
│       │   │   │   └── asm_inst_remover.h
│       │   │   ├── class_hierarchy/
│       │   │   │   ├── hierarchy.h
│       │   │   │   └── hierarchy_analysis.h
│       │   │   ├── cond_branch_opt/
│       │   │   │   └── cond_branch_opt.h
│       │   │   ├── constants/
│       │   │   │   └── constants.h
│       │   │   ├── decoder/
│       │   │   │   ├── decoder.h
│       │   │   │   ├── decoder_debug.h
│       │   │   │   ├── decoder_ranges.h
│       │   │   │   └── jump_targets.h
│       │   │   ├── dump_module/
│       │   │   │   └── dump_module.h
│       │   │   ├── idioms/
│       │   │   │   ├── idioms.h
│       │   │   │   ├── idioms_abstract.h
│       │   │   │   ├── idioms_analysis.h
│       │   │   │   ├── idioms_borland.h
│       │   │   │   ├── idioms_common.h
│       │   │   │   ├── idioms_gcc.h
│       │   │   │   ├── idioms_intel.h
│       │   │   │   ├── idioms_llvm.h
│       │   │   │   ├── idioms_magicdivmod.h
│       │   │   │   ├── idioms_owatcom.h
│       │   │   │   ├── idioms_types.h
│       │   │   │   └── idioms_vstudio.h
│       │   │   ├── idioms_libgcc/
│       │   │   │   └── idioms_libgcc.h
│       │   │   ├── inst_opt/
│       │   │   │   ├── inst_opt.h
│       │   │   │   └── inst_opt_pass.h
│       │   │   ├── inst_opt_rda/
│       │   │   │   ├── inst_opt_rda.h
│       │   │   │   └── inst_opt_rda_pass.h
│       │   │   ├── main_detection/
│       │   │   │   └── main_detection.h
│       │   │   ├── param_return/
│       │   │   │   ├── collector/
│       │   │   │   │   ├── collector.h
│       │   │   │   │   └── pic32.h
│       │   │   │   ├── data_entries.h
│       │   │   │   ├── filter/
│       │   │   │   │   ├── filter.h
│       │   │   │   │   └── ms_x64.h
│       │   │   │   └── param_return.h
│       │   │   ├── phi_remover/
│       │   │   │   └── phi_remover.h
│       │   │   ├── provider_init/
│       │   │   │   └── provider_init.h
│       │   │   ├── register_localization/
│       │   │   │   └── register_localization.h
│       │   │   ├── select_functions/
│       │   │   │   └── select_functions.h
│       │   │   ├── simple_types/
│       │   │   │   └── simple_types.h
│       │   │   ├── stack/
│       │   │   │   └── stack.h
│       │   │   ├── stack_pointer_ops/
│       │   │   │   └── stack_pointer_ops.h
│       │   │   ├── syscalls/
│       │   │   │   └── syscalls.h
│       │   │   ├── types_propagator/
│       │   │   │   └── types_propagator.h
│       │   │   ├── unreachable_funcs/
│       │   │   │   └── unreachable_funcs.h
│       │   │   ├── value_protect/
│       │   │   │   └── value_protect.h
│       │   │   ├── writer_bc/
│       │   │   │   └── writer_bc.h
│       │   │   ├── writer_config/
│       │   │   │   └── writer_config.h
│       │   │   ├── writer_dsm/
│       │   │   │   └── writer_dsm.h
│       │   │   ├── writer_ll/
│       │   │   │   └── writer_ll.h
│       │   │   ├── x86_addr_spaces/
│       │   │   │   ├── x86_addr_spaces.h
│       │   │   │   └── x86_addr_spaces_pass.h
│       │   │   └── x87_fpu/
│       │   │       └── x87_fpu.h
│       │   ├── providers/
│       │   │   ├── abi/
│       │   │   │   ├── abi.h
│       │   │   │   ├── arm.h
│       │   │   │   ├── arm64.h
│       │   │   │   ├── mips.h
│       │   │   │   ├── mips64.h
│       │   │   │   ├── ms_x64.h
│       │   │   │   ├── pic32.h
│       │   │   │   ├── powerpc.h
│       │   │   │   ├── powerpc64.h
│       │   │   │   ├── x64.h
│       │   │   │   └── x86.h
│       │   │   ├── asm_instruction.h
│       │   │   ├── calling_convention/
│       │   │   │   ├── arm/
│       │   │   │   │   └── arm_conv.h
│       │   │   │   ├── arm64/
│       │   │   │   │   └── arm64_conv.h
│       │   │   │   ├── calling_convention.h
│       │   │   │   ├── mips/
│       │   │   │   │   ├── mips_conv.h
│       │   │   │   │   └── mips_psp.h
│       │   │   │   ├── mips64/
│       │   │   │   │   └── mips64_conv.h
│       │   │   │   ├── pic32/
│       │   │   │   │   └── pic32_conv.h
│       │   │   │   ├── powerpc/
│       │   │   │   │   └── powerpc_conv.h
│       │   │   │   ├── powerpc64/
│       │   │   │   │   └── powerpc64_conv.h
│       │   │   │   ├── x64/
│       │   │   │   │   ├── x64_conv.h
│       │   │   │   │   ├── x64_microsoft.h
│       │   │   │   │   └── x64_systemv.h
│       │   │   │   └── x86/
│       │   │   │       ├── x86_cdecl.h
│       │   │   │       ├── x86_conv.h
│       │   │   │       ├── x86_fastcall.h
│       │   │   │       ├── x86_pascal.h
│       │   │   │       ├── x86_thiscall.h
│       │   │   │       └── x86_watcom.h
│       │   │   ├── config.h
│       │   │   ├── debugformat.h
│       │   │   ├── demangler.h
│       │   │   ├── fileimage.h
│       │   │   ├── lti.h
│       │   │   └── names.h
│       │   └── utils/
│       │       ├── capstone.h
│       │       ├── ctypes2llvm.h
│       │       ├── debug.h
│       │       ├── ir_modifier.h
│       │       ├── llvm.h
│       │       └── symbolic_tree_match.h
│       ├── capstone2llvmir/
│       │   ├── arm/
│       │   │   ├── arm.h
│       │   │   └── arm_defs.h
│       │   ├── arm64/
│       │   │   ├── arm64.h
│       │   │   └── arm64_defs.h
│       │   ├── capstone2llvmir.h
│       │   ├── exceptions.h
│       │   ├── mips/
│       │   │   ├── mips.h
│       │   │   └── mips_defs.h
│       │   ├── powerpc/
│       │   │   ├── powerpc.h
│       │   │   └── powerpc_defs.h
│       │   └── x86/
│       │       ├── x86.h
│       │       └── x86_defs.h
│       ├── common/
│       │   ├── address.h
│       │   ├── architecture.h
│       │   ├── basic_block.h
│       │   ├── calling_convention.h
│       │   ├── class.h
│       │   ├── file_format.h
│       │   ├── file_type.h
│       │   ├── function.h
│       │   ├── language.h
│       │   ├── object.h
│       │   ├── pattern.h
│       │   ├── range.h
│       │   ├── storage.h
│       │   ├── tool_info.h
│       │   ├── type.h
│       │   └── vtable.h
│       ├── config/
│       │   ├── config.h
│       │   ├── config_exceptions.h
│       │   └── parameters.h
│       ├── cpdetect/
│       │   ├── cpdetect.h
│       │   ├── cptypes.h
│       │   ├── errors.h
│       │   ├── heuristics/
│       │   │   ├── elf_heuristics.h
│       │   │   ├── heuristics.h
│       │   │   ├── macho_heuristics.h
│       │   │   └── pe_heuristics.h
│       │   ├── search.h
│       │   ├── settings.h
│       │   └── signature.h
│       ├── ctypes/
│       │   ├── annotation.h
│       │   ├── annotation_in.h
│       │   ├── annotation_inout.h
│       │   ├── annotation_optional.h
│       │   ├── annotation_out.h
│       │   ├── array_type.h
│       │   ├── call_convention.h
│       │   ├── composite_type.h
│       │   ├── context.h
│       │   ├── ctypes.h
│       │   ├── enum_type.h
│       │   ├── exceptions.h
│       │   ├── floating_point_type.h
│       │   ├── function.h
│       │   ├── function_declaration.h
│       │   ├── function_type.h
│       │   ├── header_file.h
│       │   ├── integral_type.h
│       │   ├── member.h
│       │   ├── module.h
│       │   ├── named_type.h
│       │   ├── parameter.h
│       │   ├── pointer_type.h
│       │   ├── reference_type.h
│       │   ├── struct_type.h
│       │   ├── type.h
│       │   ├── typedefed_type.h
│       │   ├── union_type.h
│       │   ├── unknown_type.h
│       │   ├── visit_all_visitor.h
│       │   ├── visitable.h
│       │   ├── visitor.h
│       │   └── void_type.h
│       ├── ctypesparser/
│       │   ├── ctypes_parser.h
│       │   ├── exceptions.h
│       │   ├── json_ctypes_parser.h
│       │   └── type_config.h
│       ├── debugformat/
│       │   └── debugformat.h
│       ├── demangler/
│       │   ├── ast_ctypes_parser.h
│       │   ├── borland_ast/
│       │   │   ├── array_type.h
│       │   │   ├── borland_ast.h
│       │   │   ├── built_in_type.h
│       │   │   ├── char_type.h
│       │   │   ├── conversion_operator.h
│       │   │   ├── float_type.h
│       │   │   ├── function_node.h
│       │   │   ├── function_type.h
│       │   │   ├── integral_type.h
│       │   │   ├── name_node.h
│       │   │   ├── named_type.h
│       │   │   ├── node.h
│       │   │   ├── node_array.h
│       │   │   ├── parentheses_node.h
│       │   │   ├── pointer_type.h
│       │   │   ├── qualifiers.h
│       │   │   ├── reference_type.h
│       │   │   ├── rreference_type.h
│       │   │   ├── template_node.h
│       │   │   └── type_node.h
│       │   ├── borland_ast_ctypes_parser.h
│       │   ├── borland_ast_parser.h
│       │   ├── borland_demangler.h
│       │   ├── context.h
│       │   ├── demangler.h
│       │   ├── demangler_base.h
│       │   ├── itanium_ast_ctypes_parser.h
│       │   ├── itanium_demangler.h
│       │   ├── microsoft_demangler.h
│       │   └── ms_ast_ctypes_parser.h
│       ├── fileformat/
│       │   ├── fftypes.h
│       │   ├── file_format/
│       │   │   ├── coff/
│       │   │   │   └── coff_format.h
│       │   │   ├── elf/
│       │   │   │   └── elf_format.h
│       │   │   ├── file_format.h
│       │   │   ├── intel_hex/
│       │   │   │   ├── intel_hex_format.h
│       │   │   │   └── intel_hex_parser/
│       │   │   │       ├── intel_hex_parser.h
│       │   │   │       └── intel_hex_tokenizer.h
│       │   │   ├── macho/
│       │   │   │   └── macho_format.h
│       │   │   ├── pe/
│       │   │   │   ├── pe_format.h
│       │   │   │   ├── pe_format_parser.h
│       │   │   │   └── pe_template_aux.h
│       │   │   └── raw_data/
│       │   │       └── raw_data_format.h
│       │   ├── fileformat.h
│       │   ├── format_factory.h
│       │   ├── types/
│       │   │   ├── certificate_table/
│       │   │   │   ├── certificate.h
│       │   │   │   └── certificate_table.h
│       │   │   ├── dotnet_headers/
│       │   │   │   ├── blob_stream.h
│       │   │   │   ├── clr_header.h
│       │   │   │   ├── guid_stream.h
│       │   │   │   ├── metadata_header.h
│       │   │   │   ├── metadata_stream.h
│       │   │   │   ├── metadata_table.h
│       │   │   │   ├── metadata_tables.h
│       │   │   │   ├── stream.h
│       │   │   │   ├── string_stream.h
│       │   │   │   └── user_string_stream.h
│       │   │   ├── dotnet_types/
│       │   │   │   ├── dotnet_class.h
│       │   │   │   ├── dotnet_data_types.h
│       │   │   │   ├── dotnet_field.h
│       │   │   │   ├── dotnet_method.h
│       │   │   │   ├── dotnet_parameter.h
│       │   │   │   ├── dotnet_property.h
│       │   │   │   ├── dotnet_type.h
│       │   │   │   └── dotnet_type_reconstructor.h
│       │   │   ├── dynamic_table/
│       │   │   │   ├── dynamic_entry.h
│       │   │   │   └── dynamic_table.h
│       │   │   ├── export_table/
│       │   │   │   ├── export.h
│       │   │   │   └── export_table.h
│       │   │   ├── import_table/
│       │   │   │   ├── elf_import_table.h
│       │   │   │   ├── import.h
│       │   │   │   ├── import_table.h
│       │   │   │   └── pe_import.h
│       │   │   ├── note_section/
│       │   │   │   ├── elf_core.h
│       │   │   │   └── elf_notes.h
│       │   │   ├── pdb_info/
│       │   │   │   └── pdb_info.h
│       │   │   ├── pe_timestamps/
│       │   │   │   └── pe_timestamps.h
│       │   │   ├── relocation_table/
│       │   │   │   ├── relocation.h
│       │   │   │   └── relocation_table.h
│       │   │   ├── resource_table/
│       │   │   │   ├── bitmap_image.h
│       │   │   │   ├── resource.h
│       │   │   │   ├── resource_icon.h
│       │   │   │   ├── resource_icon_group.h
│       │   │   │   ├── resource_table.h
│       │   │   │   └── resource_tree.h
│       │   │   ├── rich_header/
│       │   │   │   ├── linker_info.h
│       │   │   │   └── rich_header.h
│       │   │   ├── sec_seg/
│       │   │   │   ├── elf_section.h
│       │   │   │   ├── elf_segment.h
│       │   │   │   ├── macho_section.h
│       │   │   │   ├── pe_coff_section.h
│       │   │   │   ├── sec_seg.h
│       │   │   │   ├── section.h
│       │   │   │   └── segment.h
│       │   │   ├── strings/
│       │   │   │   ├── character_iterator.h
│       │   │   │   └── string.h
│       │   │   ├── symbol_table/
│       │   │   │   ├── elf_symbol.h
│       │   │   │   ├── macho_symbol.h
│       │   │   │   ├── symbol.h
│       │   │   │   └── symbol_table.h
│       │   │   ├── tls_info/
│       │   │   │   └── tls_info.h
│       │   │   └── visual_basic/
│       │   │       ├── visual_basic_extern.h
│       │   │       ├── visual_basic_info.h
│       │   │       ├── visual_basic_object.h
│       │   │       └── visual_basic_structures.h
│       │   └── utils/
│       │       ├── asn1.h
│       │       ├── byte_array_buffer.h
│       │       ├── conversions.h
│       │       ├── crypto.h
│       │       ├── file_io.h
│       │       ├── format_detection.h
│       │       └── other.h
│       ├── llvmir-emul/
│       │   ├── exceptions.h
│       │   └── llvmir_emul.h
│       ├── llvmir2hll/
│       │   ├── analysis/
│       │   │   ├── alias_analysis/
│       │   │   │   ├── alias_analyses/
│       │   │   │   │   ├── basic_alias_analysis.h
│       │   │   │   │   └── simple_alias_analysis.h
│       │   │   │   ├── alias_analysis.h
│       │   │   │   └── alias_analysis_factory.h
│       │   │   ├── break_in_if_analysis.h
│       │   │   ├── def_use_analysis.h
│       │   │   ├── expr_types_analysis.h
│       │   │   ├── goto_target_analysis.h
│       │   │   ├── indirect_func_ref_analysis.h
│       │   │   ├── no_init_var_def_analysis.h
│       │   │   ├── null_pointer_analysis.h
│       │   │   ├── special_fp_analysis.h
│       │   │   ├── use_def_analysis.h
│       │   │   ├── used_types_visitor.h
│       │   │   ├── used_vars_visitor.h
│       │   │   ├── value_analysis.h
│       │   │   ├── var_uses_visitor.h
│       │   │   └── written_into_globals_visitor.h
│       │   ├── config/
│       │   │   ├── config.h
│       │   │   └── configs/
│       │   │       └── json_config.h
│       │   ├── evaluator/
│       │   │   ├── arithm_expr_evaluator.h
│       │   │   ├── arithm_expr_evaluator_factory.h
│       │   │   └── arithm_expr_evaluators/
│       │   │       ├── c_arithm_expr_evaluator.h
│       │   │       └── strict_arithm_expr_evaluator.h
│       │   ├── graphs/
│       │   │   ├── cfg/
│       │   │   │   ├── cfg.h
│       │   │   │   ├── cfg_builder.h
│       │   │   │   ├── cfg_builders/
│       │   │   │   │   ├── non_recursive_cfg_builder.h
│       │   │   │   │   └── recursive_cfg_builder.h
│       │   │   │   ├── cfg_traversal.h
│       │   │   │   ├── cfg_traversals/
│       │   │   │   │   ├── lhs_rhs_uses_cfg_traversal.h
│       │   │   │   │   ├── modified_before_read_cfg_traversal.h
│       │   │   │   │   ├── no_var_def_cfg_traversal.h
│       │   │   │   │   ├── nodes_of_var_use_cfg_traversal.h
│       │   │   │   │   ├── optim_func_info_cfg_traversal.h
│       │   │   │   │   ├── var_def_cfg_traversal.h
│       │   │   │   │   └── var_use_cfg_traversal.h
│       │   │   │   ├── cfg_writer.h
│       │   │   │   ├── cfg_writer_factory.h
│       │   │   │   └── cfg_writers/
│       │   │   │       └── graphviz_cfg_writer.h
│       │   │   └── cg/
│       │   │       ├── cg.h
│       │   │       ├── cg_builder.h
│       │   │       ├── cg_writer.h
│       │   │       ├── cg_writer_factory.h
│       │   │       └── cg_writers/
│       │   │           └── graphviz_cg_writer.h
│       │   ├── hll/
│       │   │   ├── bir_writer.h
│       │   │   ├── bracket_manager.h
│       │   │   ├── bracket_managers/
│       │   │   │   ├── c_bracket_manager.h
│       │   │   │   └── no_bracket_manager.h
│       │   │   ├── compound_op_manager.h
│       │   │   ├── compound_op_managers/
│       │   │   │   ├── c_compound_op_manager.h
│       │   │   │   └── no_compound_op_manager.h
│       │   │   ├── hll_writer.h
│       │   │   ├── hll_writer_factory.h
│       │   │   ├── hll_writers/
│       │   │   │   └── c_hll_writer.h
│       │   │   ├── output_manager.h
│       │   │   └── output_managers/
│       │   │       ├── json_manager.h
│       │   │       └── plain_manager.h
│       │   ├── ir/
│       │   │   ├── add_op_expr.h
│       │   │   ├── address_op_expr.h
│       │   │   ├── and_op_expr.h
│       │   │   ├── array_index_op_expr.h
│       │   │   ├── array_type.h
│       │   │   ├── assign_op_expr.h
│       │   │   ├── assign_stmt.h
│       │   │   ├── binary_op_expr.h
│       │   │   ├── bit_and_op_expr.h
│       │   │   ├── bit_cast_expr.h
│       │   │   ├── bit_or_op_expr.h
│       │   │   ├── bit_shl_op_expr.h
│       │   │   ├── bit_shr_op_expr.h
│       │   │   ├── bit_xor_op_expr.h
│       │   │   ├── break_stmt.h
│       │   │   ├── call_expr.h
│       │   │   ├── call_stmt.h
│       │   │   ├── cast_expr.h
│       │   │   ├── comma_op_expr.h
│       │   │   ├── const_array.h
│       │   │   ├── const_bool.h
│       │   │   ├── const_float.h
│       │   │   ├── const_int.h
│       │   │   ├── const_null_pointer.h
│       │   │   ├── const_string.h
│       │   │   ├── const_struct.h
│       │   │   ├── const_symbol.h
│       │   │   ├── constant.h
│       │   │   ├── continue_stmt.h
│       │   │   ├── deref_op_expr.h
│       │   │   ├── div_op_expr.h
│       │   │   ├── empty_stmt.h
│       │   │   ├── eq_op_expr.h
│       │   │   ├── expression.h
│       │   │   ├── ext_cast_expr.h
│       │   │   ├── float_type.h
│       │   │   ├── for_loop_stmt.h
│       │   │   ├── fp_to_int_cast_expr.h
│       │   │   ├── function.h
│       │   │   ├── function_builder.h
│       │   │   ├── function_type.h
│       │   │   ├── global_var_def.h
│       │   │   ├── goto_stmt.h
│       │   │   ├── gt_eq_op_expr.h
│       │   │   ├── gt_op_expr.h
│       │   │   ├── if_stmt.h
│       │   │   ├── int_to_fp_cast_expr.h
│       │   │   ├── int_to_ptr_cast_expr.h
│       │   │   ├── int_type.h
│       │   │   ├── lt_eq_op_expr.h
│       │   │   ├── lt_op_expr.h
│       │   │   ├── mod_op_expr.h
│       │   │   ├── module.h
│       │   │   ├── mul_op_expr.h
│       │   │   ├── neg_op_expr.h
│       │   │   ├── neq_op_expr.h
│       │   │   ├── not_op_expr.h
│       │   │   ├── or_op_expr.h
│       │   │   ├── pointer_type.h
│       │   │   ├── ptr_to_int_cast_expr.h
│       │   │   ├── return_stmt.h
│       │   │   ├── statement.h
│       │   │   ├── string_type.h
│       │   │   ├── struct_index_op_expr.h
│       │   │   ├── struct_type.h
│       │   │   ├── sub_op_expr.h
│       │   │   ├── switch_stmt.h
│       │   │   ├── ternary_op_expr.h
│       │   │   ├── trunc_cast_expr.h
│       │   │   ├── type.h
│       │   │   ├── ufor_loop_stmt.h
│       │   │   ├── unary_op_expr.h
│       │   │   ├── unknown_type.h
│       │   │   ├── unreachable_stmt.h
│       │   │   ├── value.h
│       │   │   ├── var_def_stmt.h
│       │   │   ├── variable.h
│       │   │   ├── void_type.h
│       │   │   └── while_loop_stmt.h
│       │   ├── llvm/
│       │   │   ├── llvm_debug_info_obtainer.h
│       │   │   ├── llvm_intrinsic_converter.h
│       │   │   ├── llvm_support.h
│       │   │   ├── llvmir2bir_converter/
│       │   │   │   ├── basic_block_converter.h
│       │   │   │   ├── cfg_node.h
│       │   │   │   ├── labels_handler.h
│       │   │   │   ├── llvm_constant_converter.h
│       │   │   │   ├── llvm_fcmp_converter.h
│       │   │   │   ├── llvm_instruction_converter.h
│       │   │   │   ├── llvm_type_converter.h
│       │   │   │   ├── llvm_value_converter.h
│       │   │   │   ├── structure_converter.h
│       │   │   │   └── variables_manager.h
│       │   │   ├── llvmir2bir_converter.h
│       │   │   └── string_conversions.h
│       │   ├── llvmir2hll.h
│       │   ├── obtainer/
│       │   │   ├── call_info_obtainer.h
│       │   │   ├── call_info_obtainer_factory.h
│       │   │   ├── call_info_obtainers/
│       │   │   │   ├── optim_call_info_obtainer.h
│       │   │   │   └── pessim_call_info_obtainer.h
│       │   │   ├── calls_in_module_obtainer.h
│       │   │   └── calls_obtainer.h
│       │   ├── optimizer/
│       │   │   ├── func_optimizer.h
│       │   │   ├── optimizer.h
│       │   │   ├── optimizer_manager.h
│       │   │   └── optimizers/
│       │   │       ├── bit_op_to_log_op_optimizer.h
│       │   │       ├── bit_shift_optimizer.h
│       │   │       ├── break_continue_return_optimizer.h
│       │   │       ├── c_array_arg_optimizer.h
│       │   │       ├── c_cast_optimizer.h
│       │   │       ├── copy_propagation_optimizer.h
│       │   │       ├── dead_code_optimizer.h
│       │   │       ├── dead_local_assign_optimizer.h
│       │   │       ├── deref_address_optimizer.h
│       │   │       ├── deref_to_array_index_optimizer.h
│       │   │       ├── empty_array_to_string_optimizer.h
│       │   │       ├── empty_stmt_optimizer.h
│       │   │       ├── goto_stmt_optimizer.h
│       │   │       ├── if_before_loop_optimizer.h
│       │   │       ├── if_structure_optimizer.h
│       │   │       ├── if_to_switch_optimizer.h
│       │   │       ├── llvm_intrinsics_optimizer.h
│       │   │       ├── loop_last_continue_optimizer.h
│       │   │       ├── no_init_var_def_optimizer.h
│       │   │       ├── pre_while_true_loop_conv_optimizer.h
│       │   │       ├── remove_all_casts_optimizer.h
│       │   │       ├── remove_useless_casts_optimizer.h
│       │   │       ├── self_assign_optimizer.h
│       │   │       ├── simple_copy_propagation_optimizer.h
│       │   │       ├── simplify_arithm_expr/
│       │   │       │   ├── bool_comparison_optimizer.h
│       │   │       │   ├── change_order_of_operands_sub_optimizer.h
│       │   │       │   ├── const_operator_const_sub_optimizer.h
│       │   │       │   ├── equal_operands_sub_optimizer.h
│       │   │       │   ├── negation_operator_sub_optimizer.h
│       │   │       │   ├── negative_operand_sub_optimizer.h
│       │   │       │   ├── one_sub_optimizer.h
│       │   │       │   ├── sub_optimizer.h
│       │   │       │   ├── sub_optimizer_factory.h
│       │   │       │   ├── ternary_operator_sub_optimizer.h
│       │   │       │   ├── three_operands_sub_optimizer.h
│       │   │       │   └── zero_sub_optimizer.h
│       │   │       ├── simplify_arithm_expr_optimizer.h
│       │   │       ├── unused_global_var_optimizer.h
│       │   │       ├── var_def_for_loop_optimizer.h
│       │   │       ├── var_def_stmt_optimizer.h
│       │   │       ├── void_return_optimizer.h
│       │   │       ├── while_true_to_for_loop_optimizer.h
│       │   │       ├── while_true_to_ufor_loop_optimizer.h
│       │   │       └── while_true_to_while_cond_optimizer.h
│       │   ├── pattern/
│       │   │   ├── pattern.h
│       │   │   ├── pattern_finder.h
│       │   │   ├── pattern_finder_factory.h
│       │   │   ├── pattern_finder_runner.h
│       │   │   ├── pattern_finder_runners/
│       │   │   │   ├── cli_pattern_finder_runner.h
│       │   │   │   └── no_action_pattern_finder_runner.h
│       │   │   ├── pattern_finders/
│       │   │   │   ├── api_call/
│       │   │   │   │   ├── api_call_info.h
│       │   │   │   │   ├── api_call_info_seq.h
│       │   │   │   │   ├── api_call_info_seq_parser.h
│       │   │   │   │   ├── api_call_seq_data.h
│       │   │   │   │   ├── api_call_seq_finder.h
│       │   │   │   │   └── api_call_seq_finders/
│       │   │   │   │       └── basic_block_api_call_seq_finder.h
│       │   │   │   ├── api_call_pattern_finder.h
│       │   │   │   └── api_call_seq_pattern_finder.h
│       │   │   └── patterns/
│       │   │       └── stmts_pattern.h
│       │   ├── semantics/
│       │   │   ├── semantics/
│       │   │   │   ├── compound_semantics.h
│       │   │   │   ├── compound_semantics_builder.h
│       │   │   │   ├── default_semantics.h
│       │   │   │   ├── gcc_general_semantics/
│       │   │   │   │   ├── get_c_header_file_for_func.h
│       │   │   │   │   ├── get_name_of_param.h
│       │   │   │   │   ├── get_name_of_var_storing_result.h
│       │   │   │   │   └── get_symbolic_names_for_param.h
│       │   │   │   ├── gcc_general_semantics.h
│       │   │   │   ├── impl_support/
│       │   │   │   │   ├── get_c_header_file_for_func.h
│       │   │   │   │   ├── get_name_of_param.h
│       │   │   │   │   ├── get_name_of_var_storing_result.h
│       │   │   │   │   └── get_symbolic_names_for_param.h
│       │   │   │   ├── libc_semantics/
│       │   │   │   │   ├── func_never_returns.h
│       │   │   │   │   ├── get_c_header_file_for_func.h
│       │   │   │   │   ├── get_name_of_param.h
│       │   │   │   │   ├── get_name_of_var_storing_result.h
│       │   │   │   │   └── get_symbolic_names_for_param.h
│       │   │   │   ├── libc_semantics.h
│       │   │   │   ├── win_api_semantics/
│       │   │   │   │   ├── func_never_returns.h
│       │   │   │   │   ├── get_c_header_file_for_func.h
│       │   │   │   │   ├── get_name_of_param/
│       │   │   │   │   │   ├── a.h
│       │   │   │   │   │   ├── b.h
│       │   │   │   │   │   ├── c1.h
│       │   │   │   │   │   ├── c2.h
│       │   │   │   │   │   ├── d.h
│       │   │   │   │   │   ├── e.h
│       │   │   │   │   │   ├── f.h
│       │   │   │   │   │   ├── g1.h
│       │   │   │   │   │   ├── g2.h
│       │   │   │   │   │   ├── h.h
│       │   │   │   │   │   ├── i.h
│       │   │   │   │   │   ├── j.h
│       │   │   │   │   │   ├── k.h
│       │   │   │   │   │   ├── l.h
│       │   │   │   │   │   ├── m.h
│       │   │   │   │   │   ├── n.h
│       │   │   │   │   │   ├── o.h
│       │   │   │   │   │   ├── p.h
│       │   │   │   │   │   ├── q.h
│       │   │   │   │   │   ├── r.h
│       │   │   │   │   │   ├── s.h
│       │   │   │   │   │   ├── t.h
│       │   │   │   │   │   ├── u.h
│       │   │   │   │   │   ├── v.h
│       │   │   │   │   │   ├── w.h
│       │   │   │   │   │   ├── x.h
│       │   │   │   │   │   ├── y.h
│       │   │   │   │   │   └── z.h
│       │   │   │   │   ├── get_name_of_param.h
│       │   │   │   │   ├── get_name_of_var_storing_result.h
│       │   │   │   │   └── get_symbolic_names_for_param.h
│       │   │   │   └── win_api_semantics.h
│       │   │   ├── semantics.h
│       │   │   └── semantics_factory.h
│       │   ├── support/
│       │   │   ├── caching.h
│       │   │   ├── const_symbol_converter.h
│       │   │   ├── debug.h
│       │   │   ├── expr_types_fixer.h
│       │   │   ├── expression_negater.h
│       │   │   ├── factory.h
│       │   │   ├── global_vars_sorter.h
│       │   │   ├── headers_for_declared_funcs.h
│       │   │   ├── library_funcs_remover.h
│       │   │   ├── metadatable.h
│       │   │   ├── observer.h
│       │   │   ├── singleton.h
│       │   │   ├── smart_ptr.h
│       │   │   ├── statements_counter.h
│       │   │   ├── struct_types_sorter.h
│       │   │   ├── subject.h
│       │   │   ├── types.h
│       │   │   ├── unreachable_code_in_cfg_remover.h
│       │   │   ├── valid_state.h
│       │   │   ├── value_text_repr_visitor.h
│       │   │   ├── variable_replacer.h
│       │   │   ├── visitable.h
│       │   │   ├── visitor.h
│       │   │   ├── visitor_adapter.h
│       │   │   └── visitors/
│       │   │       └── ordered_all_visitor.h
│       │   ├── utils/
│       │   │   ├── graphviz.h
│       │   │   ├── ir.h
│       │   │   ├── loop_optimizer.h
│       │   │   └── string.h
│       │   ├── validator/
│       │   │   ├── validator.h
│       │   │   ├── validator_factory.h
│       │   │   └── validators/
│       │   │       ├── break_outside_loop_validator.h
│       │   │       ├── no_global_var_def_validator.h
│       │   │       └── return_validator.h
│       │   ├── var_name_gen/
│       │   │   ├── var_name_gen.h
│       │   │   ├── var_name_gen_factory.h
│       │   │   └── var_name_gens/
│       │   │       ├── fruit_var_name_gen.h
│       │   │       ├── num_var_name_gen.h
│       │   │       └── word_var_name_gen.h
│       │   └── var_renamer/
│       │       ├── var_renamer.h
│       │       ├── var_renamer_factory.h
│       │       └── var_renamers/
│       │           ├── address_var_renamer.h
│       │           ├── hungarian_var_renamer.h
│       │           ├── readable_var_renamer.h
│       │           ├── simple_var_renamer.h
│       │           └── unified_var_renamer.h
│       ├── loader/
│       │   ├── image_factory.h
│       │   ├── loader/
│       │   │   ├── coff/
│       │   │   │   └── coff_image.h
│       │   │   ├── elf/
│       │   │   │   └── elf_image.h
│       │   │   ├── image.h
│       │   │   ├── intel_hex/
│       │   │   │   └── intel_hex_image.h
│       │   │   ├── macho/
│       │   │   │   └── macho_image.h
│       │   │   ├── pe/
│       │   │   │   └── pe_image.h
│       │   │   ├── raw_data/
│       │   │   │   └── raw_data_image.h
│       │   │   ├── segment.h
│       │   │   └── segment_data_source.h
│       │   ├── loader.h
│       │   └── utils/
│       │       ├── name_generator.h
│       │       ├── overlap_resolver.h
│       │       └── range.h
│       ├── macho-extractor/
│       │   └── break_fat.h
│       ├── patterngen/
│       │   ├── pattern_extractor/
│       │   │   ├── pattern_extractor.h
│       │   │   └── types/
│       │   │       └── symbol_pattern.h
│       │   └── patterngen.h
│       ├── pdbparser/
│       │   ├── pdb_file.h
│       │   ├── pdb_info.h
│       │   ├── pdb_symbols.h
│       │   ├── pdb_types.h
│       │   └── pdb_utils.h
│       ├── pelib/
│       │   ├── BoundImportDirectory.h
│       │   ├── CoffSymbolTable.h
│       │   ├── ComHeaderDirectory.h
│       │   ├── ConfigDirectory.h
│       │   ├── DebugDirectory.h
│       │   ├── DelayImportDirectory.h
│       │   ├── ExportDirectory.h
│       │   ├── IatDirectory.h
│       │   ├── ImageLoader.h
│       │   ├── ImportDirectory.h
│       │   ├── InputBuffer.h
│       │   ├── OutputBuffer.h
│       │   ├── PeFile.h
│       │   ├── PeLibAux.h
│       │   ├── PeLibInc.h
│       │   ├── RelocationsDirectory.h
│       │   ├── ResourceDirectory.h
│       │   ├── RichHeader.h
│       │   ├── SecurityDirectory.h
│       │   └── TlsDirectory.h
│       ├── retdec/
│       │   └── retdec.h
│       ├── rtti-finder/
│       │   ├── rtti/
│       │   │   ├── rtti_gcc.h
│       │   │   ├── rtti_gcc_parser.h
│       │   │   ├── rtti_msvc.h
│       │   │   └── rtti_msvc_parser.h
│       │   ├── rtti_finder.h
│       │   └── vtable/
│       │       ├── vtable_finder.h
│       │       ├── vtable_gcc.h
│       │       └── vtable_msvc.h
│       ├── serdes/
│       │   ├── address.h
│       │   ├── architecture.h
│       │   ├── basic_block.h
│       │   ├── calling_convention.h
│       │   ├── class.h
│       │   ├── file_format.h
│       │   ├── file_type.h
│       │   ├── function.h
│       │   ├── language.h
│       │   ├── object.h
│       │   ├── pattern.h
│       │   ├── std.h
│       │   ├── storage.h
│       │   ├── tool_info.h
│       │   ├── type.h
│       │   └── vtable.h
│       ├── stacofin/
│       │   └── stacofin.h
│       ├── unpacker/
│       │   ├── decompression/
│       │   │   ├── compressed_data.h
│       │   │   ├── lzma/
│       │   │   │   └── lzma_data.h
│       │   │   ├── lzmat/
│       │   │   │   └── lzmat_data.h
│       │   │   └── nrv/
│       │   │       ├── bit_parsers.h
│       │   │       ├── nrv2b_data.h
│       │   │       ├── nrv2d_data.h
│       │   │       ├── nrv2e_data.h
│       │   │       └── nrv_data.h
│       │   ├── plugin.h
│       │   ├── signature.h
│       │   ├── unpacker_exception.h
│       │   └── unpacking_stub.h
│       ├── unpackertool/
│       │   └── unpackertool.h
│       ├── utils/
│       │   ├── alignment.h
│       │   ├── array.h
│       │   ├── binary_path.h
│       │   ├── byte_value_storage.h
│       │   ├── container.h
│       │   ├── conversion.h
│       │   ├── crc32.h
│       │   ├── debug.h
│       │   ├── dynamic_buffer.h
│       │   ├── equality.h
│       │   ├── file_io.h
│       │   ├── filesystem.h
│       │   ├── filter_iterator.h
│       │   ├── io/
│       │   │   ├── log.h
│       │   │   └── logger.h
│       │   ├── math.h
│       │   ├── memory.h
│       │   ├── non_copyable.h
│       │   ├── ord_lookup.h
│       │   ├── os.h
│       │   ├── scope_exit.h
│       │   ├── string.h
│       │   ├── system.h
│       │   ├── time.h
│       │   └── version.h
│       └── yaracpp/
│           ├── doxygen.h
│           ├── yara_detector.h
│           ├── yara_match.h
│           ├── yara_meta.h
│           └── yara_rule.h
├── publications/
│   └── README.md
├── retdec-config.cmake
├── scripts/
│   ├── CMakeLists.txt
│   ├── retdec-archive-decompiler.py
│   ├── retdec-fileinfo.py
│   ├── retdec-signature-from-library-creator.py
│   ├── retdec-tests-runner.py
│   ├── retdec-unpacker.py
│   ├── retdec-utils.py
│   └── type_extractor/
│       ├── .gitignore
│       ├── Makefile
│       ├── extract_types.py
│       ├── gen_cstdlib_and_linux_jsons.sh
│       ├── gen_windows_and_windrivers_jsons.sh
│       ├── merge_jsons.py
│       ├── optimize_jsons.py
│       ├── tests/
│       │   ├── arg_parser_tests.py
│       │   ├── func_info_tests.py
│       │   ├── header_text_filters_tests.py
│       │   ├── io_tests.py
│       │   ├── json_types_tests.py
│       │   ├── merge_files_tests.py
│       │   ├── params_info_tests.py
│       │   ├── parse_enums_tests.py
│       │   ├── parse_includes_tests.py
│       │   ├── parse_structs_unions_tests.py
│       │   ├── remove_json_types_tests.py
│       │   ├── substitute_json_keys_tests.py
│       │   └── utils_tests.py
│       └── type_extractor/
│           ├── __init__.py
│           ├── arg_parser.py
│           ├── common_types.py
│           ├── func_info.py
│           ├── header_text_filters.py
│           ├── io.py
│           ├── json_types.py
│           ├── lti_types.py
│           ├── merge_files.py
│           ├── params_info.py
│           ├── parse_enums.py
│           ├── parse_includes.py
│           ├── parse_structs_unions.py
│           ├── remove_json_types.py
│           ├── substitute_json_keys.py
│           └── utils.py
├── src/
│   ├── CMakeLists.txt
│   ├── ar-extractor/
│   │   ├── CMakeLists.txt
│   │   ├── archive_wrapper.cpp
│   │   ├── detection.cpp
│   │   ├── doxygen.h
│   │   └── retdec-ar-extractor-config.cmake
│   ├── ar-extractortool/
│   │   ├── CMakeLists.txt
│   │   └── ar_extractor.cpp
│   ├── bin2llvmir/
│   │   ├── CMakeLists.txt
│   │   ├── analyses/
│   │   │   ├── ctor_dtor.cpp
│   │   │   ├── indirectly_called_funcs_analysis.cpp
│   │   │   ├── reachable_funcs_analysis.cpp
│   │   │   ├── reaching_definitions.cpp
│   │   │   └── symbolic_tree.cpp
│   │   ├── doxygen.h
│   │   ├── optimizations/
│   │   │   ├── asm_inst_remover/
│   │   │   │   └── asm_inst_remover.cpp
│   │   │   ├── class_hierarchy/
│   │   │   │   ├── hierarchy.cpp
│   │   │   │   └── hierarchy_analysis.cpp
│   │   │   ├── cond_branch_opt/
│   │   │   │   └── cond_branch_opt.cpp
│   │   │   ├── constants/
│   │   │   │   └── constants.cpp
│   │   │   ├── decoder/
│   │   │   │   ├── arm.cpp
│   │   │   │   ├── arm64.cpp
│   │   │   │   ├── bbs.cpp
│   │   │   │   ├── decoder.cpp
│   │   │   │   ├── decoder_init.cpp
│   │   │   │   ├── decoder_ranges.cpp
│   │   │   │   ├── functions.cpp
│   │   │   │   ├── ir_modifications.cpp
│   │   │   │   ├── jump_targets.cpp
│   │   │   │   ├── mips.cpp
│   │   │   │   ├── patterns.cpp
│   │   │   │   ├── powerpc.cpp
│   │   │   │   └── x86.cpp
│   │   │   ├── dump_module/
│   │   │   │   └── dump_module.cpp
│   │   │   ├── idioms/
│   │   │   │   ├── idioms.cpp
│   │   │   │   ├── idioms_abstract.cpp
│   │   │   │   ├── idioms_analysis.cpp
│   │   │   │   ├── idioms_borland.cpp
│   │   │   │   ├── idioms_common.cpp
│   │   │   │   ├── idioms_gcc.cpp
│   │   │   │   ├── idioms_intel.cpp
│   │   │   │   ├── idioms_llvm.cpp
│   │   │   │   ├── idioms_magicdivmod.cpp
│   │   │   │   ├── idioms_owatcom.cpp
│   │   │   │   └── idioms_vstudio.cpp
│   │   │   ├── idioms_libgcc/
│   │   │   │   └── idioms_libgcc.cpp
│   │   │   ├── inst_opt/
│   │   │   │   ├── inst_opt.cpp
│   │   │   │   └── inst_opt_pass.cpp
│   │   │   ├── inst_opt_rda/
│   │   │   │   ├── inst_opt_rda.cpp
│   │   │   │   └── inst_opt_rda_pass.cpp
│   │   │   ├── main_detection/
│   │   │   │   └── main_detection.cpp
│   │   │   ├── param_return/
│   │   │   │   ├── collector/
│   │   │   │   │   ├── collector.cpp
│   │   │   │   │   └── pic32.cpp
│   │   │   │   ├── data_entries.cpp
│   │   │   │   ├── filter/
│   │   │   │   │   ├── filter.cpp
│   │   │   │   │   └── ms_x64.cpp
│   │   │   │   └── param_return.cpp
│   │   │   ├── phi_remover/
│   │   │   │   └── phi_remover.cpp
│   │   │   ├── provider_init/
│   │   │   │   └── provider_init.cpp
│   │   │   ├── register_localization/
│   │   │   │   └── register_localization.cpp
│   │   │   ├── select_functions/
│   │   │   │   └── select_functions.cpp
│   │   │   ├── simple_types/
│   │   │   │   └── simple_types.cpp
│   │   │   ├── stack/
│   │   │   │   └── stack.cpp
│   │   │   ├── stack_pointer_ops/
│   │   │   │   └── stack_pointer_ops.cpp
│   │   │   ├── syscalls/
│   │   │   │   ├── arm.cpp
│   │   │   │   ├── arm64.cpp
│   │   │   │   ├── mips.cpp
│   │   │   │   ├── syscalls.cpp
│   │   │   │   └── x86.cpp
│   │   │   ├── types_propagator/
│   │   │   │   └── types_propagator.cpp
│   │   │   ├── unreachable_funcs/
│   │   │   │   └── unreachable_funcs.cpp
│   │   │   ├── value_protect/
│   │   │   │   └── value_protect.cpp
│   │   │   ├── writer_bc/
│   │   │   │   └── writer_bc.cpp
│   │   │   ├── writer_config/
│   │   │   │   └── writer_config.cpp
│   │   │   ├── writer_dsm/
│   │   │   │   └── writer_dsm.cpp
│   │   │   ├── writer_ll/
│   │   │   │   └── writer_ll.cpp
│   │   │   ├── x86_addr_spaces/
│   │   │   │   ├── x86_addr_spaces.cpp
│   │   │   │   └── x86_addr_spaces_pass.cpp
│   │   │   └── x87_fpu/
│   │   │       └── x87_fpu.cpp
│   │   ├── providers/
│   │   │   ├── abi/
│   │   │   │   ├── abi.cpp
│   │   │   │   ├── arm.cpp
│   │   │   │   ├── arm64.cpp
│   │   │   │   ├── mips.cpp
│   │   │   │   ├── mips64.cpp
│   │   │   │   ├── ms_x64.cpp
│   │   │   │   ├── pic32.cpp
│   │   │   │   ├── powerpc.cpp
│   │   │   │   ├── powerpc64.cpp
│   │   │   │   ├── x64.cpp
│   │   │   │   └── x86.cpp
│   │   │   ├── asm_instruction.cpp
│   │   │   ├── calling_convention/
│   │   │   │   ├── arm/
│   │   │   │   │   └── arm_conv.cpp
│   │   │   │   ├── arm64/
│   │   │   │   │   └── arm64_conv.cpp
│   │   │   │   ├── calling_convention.cpp
│   │   │   │   ├── mips/
│   │   │   │   │   ├── mips_conv.cpp
│   │   │   │   │   └── mips_psp.cpp
│   │   │   │   ├── mips64/
│   │   │   │   │   └── mips64_conv.cpp
│   │   │   │   ├── pic32/
│   │   │   │   │   └── pic32_conv.cpp
│   │   │   │   ├── powerpc/
│   │   │   │   │   └── powerpc_conv.cpp
│   │   │   │   ├── powerpc64/
│   │   │   │   │   └── powerpc64_conv.cpp
│   │   │   │   ├── x64/
│   │   │   │   │   ├── x64_conv.cpp
│   │   │   │   │   ├── x64_microsoft.cpp
│   │   │   │   │   └── x64_systemv.cpp
│   │   │   │   └── x86/
│   │   │   │       ├── x86_cdecl.cpp
│   │   │   │       ├── x86_conv.cpp
│   │   │   │       ├── x86_fastcall.cpp
│   │   │   │       ├── x86_pascal.cpp
│   │   │   │       ├── x86_thiscall.cpp
│   │   │   │       └── x86_watcom.cpp
│   │   │   ├── config.cpp
│   │   │   ├── debugformat.cpp
│   │   │   ├── demangler.cpp
│   │   │   ├── fileimage.cpp
│   │   │   ├── lti.cpp
│   │   │   └── names.cpp
│   │   ├── retdec-bin2llvmir-config.cmake
│   │   └── utils/
│   │       ├── capstone.cpp
│   │       ├── ctypes2llvm.cpp
│   │       ├── debug.cpp
│   │       ├── ir_modifier.cpp
│   │       └── llvm.cpp
│   ├── bin2pat/
│   │   ├── CMakeLists.txt
│   │   └── bin2pat.cpp
│   ├── capstone2llvmir/
│   │   ├── CMakeLists.txt
│   │   ├── arm/
│   │   │   ├── arm.cpp
│   │   │   ├── arm_impl.h
│   │   │   └── arm_init.cpp
│   │   ├── arm64/
│   │   │   ├── arm64.cpp
│   │   │   ├── arm64_impl.h
│   │   │   └── arm64_init.cpp
│   │   ├── capstone2llvmir.cpp
│   │   ├── capstone2llvmir_impl.cpp
│   │   ├── capstone2llvmir_impl.h
│   │   ├── capstone_utils.h
│   │   ├── exceptions.cpp
│   │   ├── llvmir_utils.cpp
│   │   ├── llvmir_utils.h
│   │   ├── mips/
│   │   │   ├── mips.cpp
│   │   │   ├── mips_impl.h
│   │   │   └── mips_init.cpp
│   │   ├── powerpc/
│   │   │   ├── powerpc.cpp
│   │   │   ├── powerpc_impl.h
│   │   │   └── powerpc_init.cpp
│   │   ├── retdec-capstone2llvmir-config.cmake
│   │   └── x86/
│   │       ├── x86.cpp
│   │       ├── x86_impl.h
│   │       └── x86_init.cpp
│   ├── capstone2llvmirtool/
│   │   ├── CMakeLists.txt
│   │   └── capstone2llvmir.cpp
│   ├── common/
│   │   ├── CMakeLists.txt
│   │   ├── address.cpp
│   │   ├── architecture.cpp
│   │   ├── basic_block.cpp
│   │   ├── calling_convention.cpp
│   │   ├── class.cpp
│   │   ├── file_format.cpp
│   │   ├── file_type.cpp
│   │   ├── function.cpp
│   │   ├── language.cpp
│   │   ├── object.cpp
│   │   ├── pattern.cpp
│   │   ├── retdec-common-config.cmake
│   │   ├── storage.cpp
│   │   ├── tool_info.cpp
│   │   ├── type.cpp
│   │   └── vtable.cpp
│   ├── config/
│   │   ├── CMakeLists.txt
│   │   ├── config.cpp
│   │   ├── parameters.cpp
│   │   └── retdec-config-config.cmake
│   ├── cpdetect/
│   │   ├── CMakeLists.txt
│   │   ├── cpdetect.cpp
│   │   ├── cptypes.cpp
│   │   ├── doxygen.h
│   │   ├── errors.cpp
│   │   ├── heuristics/
│   │   │   ├── elf_heuristics.cpp
│   │   │   ├── heuristics.cpp
│   │   │   ├── macho_heuristics.cpp
│   │   │   └── pe_heuristics.cpp
│   │   ├── retdec-cpdetect-config.cmake
│   │   ├── search.cpp
│   │   └── signature.cpp
│   ├── ctypes/
│   │   ├── CMakeLists.txt
│   │   ├── annotation.cpp
│   │   ├── annotation_in.cpp
│   │   ├── annotation_inout.cpp
│   │   ├── annotation_optional.cpp
│   │   ├── annotation_out.cpp
│   │   ├── array_type.cpp
│   │   ├── call_convention.cpp
│   │   ├── composite_type.cpp
│   │   ├── context.cpp
│   │   ├── doxygen.h
│   │   ├── enum_type.cpp
│   │   ├── floating_point_type.cpp
│   │   ├── function.cpp
│   │   ├── function_declaration.cpp
│   │   ├── function_type.cpp
│   │   ├── header_file.cpp
│   │   ├── integral_type.cpp
│   │   ├── member.cpp
│   │   ├── module.cpp
│   │   ├── named_type.cpp
│   │   ├── parameter.cpp
│   │   ├── pointer_type.cpp
│   │   ├── reference_type.cpp
│   │   ├── retdec-ctypes-config.cmake
│   │   ├── struct_type.cpp
│   │   ├── type.cpp
│   │   ├── typedefed_type.cpp
│   │   ├── union_type.cpp
│   │   ├── unknown_type.cpp
│   │   ├── visit_all_visitor.cpp
│   │   ├── visitor.cpp
│   │   └── void_type.cpp
│   ├── ctypesparser/
│   │   ├── CMakeLists.txt
│   │   ├── ctypes_parser.cpp
│   │   ├── doxygen.h
│   │   ├── json_ctypes_parser.cpp
│   │   ├── retdec-ctypesparser-config.cmake
│   │   └── type_config.cpp
│   ├── debugformat/
│   │   ├── CMakeLists.txt
│   │   ├── debugformat.cpp
│   │   ├── dwarf.cpp
│   │   ├── pdb.cpp
│   │   └── retdec-debugformat-config.cmake
│   ├── demangler/
│   │   ├── CMakeLists.txt
│   │   ├── ast_ctypes_parser.cpp
│   │   ├── borland_ast/
│   │   │   ├── array_type.cpp
│   │   │   ├── built_in_type.cpp
│   │   │   ├── char_type.cpp
│   │   │   ├── conversion_operator.cpp
│   │   │   ├── float_type.cpp
│   │   │   ├── function_node.cpp
│   │   │   ├── function_type.cpp
│   │   │   ├── integral_type.cpp
│   │   │   ├── name_node.cpp
│   │   │   ├── named_type.cpp
│   │   │   ├── node.cpp
│   │   │   ├── node_array.cpp
│   │   │   ├── parentheses_node.cpp
│   │   │   ├── pointer_type.cpp
│   │   │   ├── qualifiers.cpp
│   │   │   ├── reference_type.cpp
│   │   │   ├── rreference_type.cpp
│   │   │   ├── template_node.cpp
│   │   │   └── type_node.cpp
│   │   ├── borland_ast_ctypes_parser.cpp
│   │   ├── borland_ast_parser.cpp
│   │   ├── borland_demangler.cpp
│   │   ├── context.cpp
│   │   ├── demangler_base.cpp
│   │   ├── itanium_ast_ctypes_parser.cpp
│   │   ├── itanium_demangler_adapter.cpp
│   │   ├── microsoft_demangler_adapter.cpp
│   │   ├── ms_ast_ctypes_parser.cpp
│   │   └── retdec-demangler-config.cmake
│   ├── demanglertool/
│   │   ├── CMakeLists.txt
│   │   └── demangler.cpp
│   ├── fileformat/
│   │   ├── CMakeLists.txt
│   │   ├── doxygen.h
│   │   ├── file_format/
│   │   │   ├── coff/
│   │   │   │   └── coff_format.cpp
│   │   │   ├── elf/
│   │   │   │   └── elf_format.cpp
│   │   │   ├── file_format.cpp
│   │   │   ├── intel_hex/
│   │   │   │   ├── intel_hex_format.cpp
│   │   │   │   └── intel_hex_parser/
│   │   │   │       ├── intel_hex_parser.cpp
│   │   │   │       └── intel_hex_tokenizer.cpp
│   │   │   ├── macho/
│   │   │   │   └── macho_format.cpp
│   │   │   ├── pe/
│   │   │   │   ├── pe_dll_list.cpp
│   │   │   │   └── pe_format.cpp
│   │   │   └── raw_data/
│   │   │       └── raw_data_format.cpp
│   │   ├── format_factory.cpp
│   │   ├── retdec-fileformat-config.cmake
│   │   ├── types/
│   │   │   ├── certificate_table/
│   │   │   │   ├── certificate.cpp
│   │   │   │   └── certificate_table.cpp
│   │   │   ├── dotnet_headers/
│   │   │   │   ├── blob_stream.cpp
│   │   │   │   ├── clr_header.cpp
│   │   │   │   ├── guid_stream.cpp
│   │   │   │   ├── metadata_header.cpp
│   │   │   │   ├── metadata_stream.cpp
│   │   │   │   ├── metadata_tables.cpp
│   │   │   │   ├── string_stream.cpp
│   │   │   │   └── user_string_stream.cpp
│   │   │   ├── dotnet_types/
│   │   │   │   ├── dotnet_class.cpp
│   │   │   │   ├── dotnet_data_types.cpp
│   │   │   │   ├── dotnet_field.cpp
│   │   │   │   ├── dotnet_method.cpp
│   │   │   │   ├── dotnet_parameter.cpp
│   │   │   │   ├── dotnet_property.cpp
│   │   │   │   ├── dotnet_type.cpp
│   │   │   │   └── dotnet_type_reconstructor.cpp
│   │   │   ├── dynamic_table/
│   │   │   │   ├── dynamic_entry.cpp
│   │   │   │   └── dynamic_table.cpp
│   │   │   ├── export_table/
│   │   │   │   ├── export.cpp
│   │   │   │   └── export_table.cpp
│   │   │   ├── import_table/
│   │   │   │   ├── elf_import_table.cpp
│   │   │   │   ├── import.cpp
│   │   │   │   ├── import_table.cpp
│   │   │   │   └── pe_import.cpp
│   │   │   ├── note_section/
│   │   │   │   ├── elf_core.cpp
│   │   │   │   └── elf_notes.cpp
│   │   │   ├── pdb_info/
│   │   │   │   └── pdb_info.cpp
│   │   │   ├── relocation_table/
│   │   │   │   ├── relocation.cpp
│   │   │   │   └── relocation_table.cpp
│   │   │   ├── resource_table/
│   │   │   │   ├── bitmap_image.cpp
│   │   │   │   ├── resource.cpp
│   │   │   │   ├── resource_icon.cpp
│   │   │   │   ├── resource_icon_group.cpp
│   │   │   │   ├── resource_table.cpp
│   │   │   │   └── resource_tree.cpp
│   │   │   ├── rich_header/
│   │   │   │   ├── linker_info.cpp
│   │   │   │   └── rich_header.cpp
│   │   │   ├── sec_seg/
│   │   │   │   ├── elf_section.cpp
│   │   │   │   ├── elf_segment.cpp
│   │   │   │   ├── macho_section.cpp
│   │   │   │   ├── pe_coff_section.cpp
│   │   │   │   ├── sec_seg.cpp
│   │   │   │   ├── section.cpp
│   │   │   │   └── segment.cpp
│   │   │   ├── strings/
│   │   │   │   └── string.cpp
│   │   │   ├── symbol_table/
│   │   │   │   ├── elf_symbol.cpp
│   │   │   │   ├── macho_symbol.cpp
│   │   │   │   ├── symbol.cpp
│   │   │   │   └── symbol_table.cpp
│   │   │   ├── tls_info/
│   │   │   │   └── tls_info.cpp
│   │   │   └── visual_basic/
│   │   │       ├── visual_basic_extern.cpp
│   │   │       ├── visual_basic_info.cpp
│   │   │       └── visual_basic_object.cpp
│   │   └── utils/
│   │       ├── asn1.cpp
│   │       ├── byte_array_buffer.cpp
│   │       ├── conversions.cpp
│   │       ├── crypto.cpp
│   │       ├── file_io.cpp
│   │       ├── format_detection.cpp
│   │       └── other.cpp
│   ├── fileinfo/
│   │   ├── CMakeLists.txt
│   │   ├── doxygen.h
│   │   ├── file_detector/
│   │   │   ├── coff_detector.cpp
│   │   │   ├── coff_detector.h
│   │   │   ├── detector_factory.cpp
│   │   │   ├── detector_factory.h
│   │   │   ├── elf_detector.cpp
│   │   │   ├── elf_detector.h
│   │   │   ├── file_detector.cpp
│   │   │   ├── file_detector.h
│   │   │   ├── intel_hex_detector.cpp
│   │   │   ├── intel_hex_detector.h
│   │   │   ├── macho_detector.cpp
│   │   │   ├── macho_detector.h
│   │   │   ├── pe_detector.cpp
│   │   │   ├── pe_detector.h
│   │   │   ├── raw_data_detector.cpp
│   │   │   └── raw_data_detector.h
│   │   ├── file_information/
│   │   │   ├── file_information.cpp
│   │   │   ├── file_information.h
│   │   │   └── file_information_types/
│   │   │       ├── data_directory.cpp
│   │   │       ├── data_directory.h
│   │   │       ├── dotnet_info.cpp
│   │   │       ├── dotnet_info.h
│   │   │       ├── dynamic_section/
│   │   │       │   ├── dynamic_entry.cpp
│   │   │       │   ├── dynamic_entry.h
│   │   │       │   ├── dynamic_section.cpp
│   │   │       │   └── dynamic_section.h
│   │   │       ├── elf_core.cpp
│   │   │       ├── elf_core.h
│   │   │       ├── elf_notes.cpp
│   │   │       ├── elf_notes.h
│   │   │       ├── export_table.cpp
│   │   │       ├── export_table.h
│   │   │       ├── file_header.cpp
│   │   │       ├── file_header.h
│   │   │       ├── file_information_types.h
│   │   │       ├── file_section.cpp
│   │   │       ├── file_section.h
│   │   │       ├── file_segment.cpp
│   │   │       ├── file_segment.h
│   │   │       ├── flags.cpp
│   │   │       ├── flags.h
│   │   │       ├── import_table.cpp
│   │   │       ├── import_table.h
│   │   │       ├── loader_info.cpp
│   │   │       ├── loader_info.h
│   │   │       ├── pattern/
│   │   │       │   ├── pattern.cpp
│   │   │       │   ├── pattern.h
│   │   │       │   ├── pattern_match.cpp
│   │   │       │   └── pattern_match.h
│   │   │       ├── pdb_info.cpp
│   │   │       ├── pdb_info.h
│   │   │       ├── relocation_table/
│   │   │       │   ├── relocation.cpp
│   │   │       │   ├── relocation.h
│   │   │       │   ├── relocation_table.cpp
│   │   │       │   └── relocation_table.h
│   │   │       ├── resource_table/
│   │   │       │   ├── resource.cpp
│   │   │       │   ├── resource.h
│   │   │       │   ├── resource_table.cpp
│   │   │       │   └── resource_table.h
│   │   │       ├── rich_header.cpp
│   │   │       ├── rich_header.h
│   │   │       ├── special_information.cpp
│   │   │       ├── special_information.h
│   │   │       ├── strings.cpp
│   │   │       ├── strings.h
│   │   │       ├── symbol_table/
│   │   │       │   ├── symbol.cpp
│   │   │       │   ├── symbol.h
│   │   │       │   ├── symbol_table.cpp
│   │   │       │   └── symbol_table.h
│   │   │       ├── tls_info.cpp
│   │   │       ├── tls_info.h
│   │   │       ├── type_conversions.cpp
│   │   │       ├── type_conversions.h
│   │   │       ├── visual_basic_info.cpp
│   │   │       └── visual_basic_info.h
│   │   ├── file_presentation/
│   │   │   ├── config_presentation.cpp
│   │   │   ├── config_presentation.h
│   │   │   ├── file_presentation.cpp
│   │   │   ├── file_presentation.h
│   │   │   ├── getters/
│   │   │   │   ├── format.cpp
│   │   │   │   ├── format.h
│   │   │   │   ├── iterative_getter/
│   │   │   │   │   ├── iterative_distribution_getter/
│   │   │   │   │   │   ├── anomalies_plain_getter.cpp
│   │   │   │   │   │   ├── anomalies_plain_getter.h
│   │   │   │   │   │   ├── data_directory_plain_getter.cpp
│   │   │   │   │   │   ├── data_directory_plain_getter.h
│   │   │   │   │   │   ├── dynamic_sections_plain_getter.cpp
│   │   │   │   │   │   ├── dynamic_sections_plain_getter.h
│   │   │   │   │   │   ├── elf_auxv_plain_getter.cpp
│   │   │   │   │   │   ├── elf_auxv_plain_getter.h
│   │   │   │   │   │   ├── elf_core_map_plain_getter.cpp
│   │   │   │   │   │   ├── elf_core_map_plain_getter.h
│   │   │   │   │   │   ├── elf_notes_plain_getter.cpp
│   │   │   │   │   │   ├── elf_notes_plain_getter.h
│   │   │   │   │   │   ├── export_table_plain_getter.cpp
│   │   │   │   │   │   ├── export_table_plain_getter.h
│   │   │   │   │   │   ├── import_table_plain_getter.cpp
│   │   │   │   │   │   ├── import_table_plain_getter.h
│   │   │   │   │   │   ├── iterative_distribution_getter.cpp
│   │   │   │   │   │   ├── iterative_distribution_getter.h
│   │   │   │   │   │   ├── loader_info_plain_getter.cpp
│   │   │   │   │   │   ├── loader_info_plain_getter.h
│   │   │   │   │   │   ├── missing_deps_plain_getter.cpp
│   │   │   │   │   │   ├── missing_deps_plain_getter.h
│   │   │   │   │   │   ├── pattern_matches_plain_getter.cpp
│   │   │   │   │   │   ├── pattern_matches_plain_getter.h
│   │   │   │   │   │   ├── relocation_tables_plain_getter.cpp
│   │   │   │   │   │   ├── relocation_tables_plain_getter.h
│   │   │   │   │   │   ├── resource_plain_getter.cpp
│   │   │   │   │   │   ├── resource_plain_getter.h
│   │   │   │   │   │   ├── rich_header_plain_getter.cpp
│   │   │   │   │   │   ├── rich_header_plain_getter.h
│   │   │   │   │   │   ├── section_plain_getter.cpp
│   │   │   │   │   │   ├── section_plain_getter.h
│   │   │   │   │   │   ├── segment_plain_getter.cpp
│   │   │   │   │   │   ├── segment_plain_getter.h
│   │   │   │   │   │   ├── strings_plain_getter.cpp
│   │   │   │   │   │   ├── strings_plain_getter.h
│   │   │   │   │   │   ├── symbol_tables_plain_getter.cpp
│   │   │   │   │   │   ├── symbol_tables_plain_getter.h
│   │   │   │   │   │   ├── tls_info_plain_getter.cpp
│   │   │   │   │   │   ├── tls_info_plain_getter.h
│   │   │   │   │   │   ├── typeref_table_plain_getter.cpp
│   │   │   │   │   │   ├── typeref_table_plain_getter.h
│   │   │   │   │   │   ├── version_info_language_table_plain_getter.cpp
│   │   │   │   │   │   ├── version_info_language_table_plain_getter.h
│   │   │   │   │   │   ├── version_info_string_table_plain_getter.cpp
│   │   │   │   │   │   ├── version_info_string_table_plain_getter.h
│   │   │   │   │   │   ├── visual_basic_extern_table_plain_getter.cpp
│   │   │   │   │   │   └── visual_basic_extern_table_plain_getter.h
│   │   │   │   │   ├── iterative_getter.cpp
│   │   │   │   │   ├── iterative_getter.h
│   │   │   │   │   ├── iterative_simple_getter/
│   │   │   │   │   │   ├── iterative_simple_getter.cpp
│   │   │   │   │   │   └── iterative_simple_getter.h
│   │   │   │   │   └── iterative_subtitle_getter/
│   │   │   │   │       ├── anomalies_json_getter.cpp
│   │   │   │   │       ├── anomalies_json_getter.h
│   │   │   │   │       ├── data_directory_json_getter.cpp
│   │   │   │   │       ├── data_directory_json_getter.h
│   │   │   │   │       ├── dynamic_sections_json_getter.cpp
│   │   │   │   │       ├── dynamic_sections_json_getter.h
│   │   │   │   │       ├── export_table_json_getter.cpp
│   │   │   │   │       ├── export_table_json_getter.h
│   │   │   │   │       ├── import_table_json_getter.cpp
│   │   │   │   │       ├── import_table_json_getter.h
│   │   │   │   │       ├── iterative_subtitle_getter.cpp
│   │   │   │   │       ├── iterative_subtitle_getter.h
│   │   │   │   │       ├── loader_info_json_getter.cpp
│   │   │   │   │       ├── loader_info_json_getter.h
│   │   │   │   │       ├── missing_deps_json_getter.cpp
│   │   │   │   │       ├── missing_deps_json_getter.h
│   │   │   │   │       ├── relocation_tables_json_getter.cpp
│   │   │   │   │       ├── relocation_tables_json_getter.h
│   │   │   │   │       ├── resource_json_getter.cpp
│   │   │   │   │       ├── resource_json_getter.h
│   │   │   │   │       ├── rich_header_json_getter.cpp
│   │   │   │   │       ├── rich_header_json_getter.h
│   │   │   │   │       ├── section_json_getter.cpp
│   │   │   │   │       ├── section_json_getter.h
│   │   │   │   │       ├── segment_json_getter.cpp
│   │   │   │   │       ├── segment_json_getter.h
│   │   │   │   │       ├── strings_json_getter.cpp
│   │   │   │   │       ├── strings_json_getter.h
│   │   │   │   │       ├── symbol_tables_json_getter.cpp
│   │   │   │   │       ├── symbol_tables_json_getter.h
│   │   │   │   │       ├── typeref_table_json_getter.cpp
│   │   │   │   │       └── typeref_table_json_getter.h
│   │   │   │   ├── json_getters.h
│   │   │   │   ├── pattern_config_getter/
│   │   │   │   │   ├── pattern_config_getter.cpp
│   │   │   │   │   └── pattern_config_getter.h
│   │   │   │   ├── plain_getters.h
│   │   │   │   └── simple_getter/
│   │   │   │       ├── basic_json_getter.cpp
│   │   │   │       ├── basic_json_getter.h
│   │   │   │       ├── basic_plain_getter.cpp
│   │   │   │       ├── basic_plain_getter.h
│   │   │   │       ├── dotnet_plain_getter.cpp
│   │   │   │       ├── dotnet_plain_getter.h
│   │   │   │       ├── entry_point_json_getter.cpp
│   │   │   │       ├── entry_point_json_getter.h
│   │   │   │       ├── header_json_getter.cpp
│   │   │   │       ├── header_json_getter.h
│   │   │   │       ├── header_plain_getter.cpp
│   │   │   │       ├── header_plain_getter.h
│   │   │   │       ├── pdb_json_getter.cpp
│   │   │   │       ├── pdb_json_getter.h
│   │   │   │       ├── pdb_plain_getter.cpp
│   │   │   │       ├── pdb_plain_getter.h
│   │   │   │       ├── simple_getter.cpp
│   │   │   │       ├── simple_getter.h
│   │   │   │       ├── visual_basic_plain_getter.cpp
│   │   │   │       └── visual_basic_plain_getter.h
│   │   │   ├── json_presentation.cpp
│   │   │   ├── json_presentation.h
│   │   │   ├── plain_presentation.cpp
│   │   │   └── plain_presentation.h
│   │   ├── file_wrapper/
│   │   │   ├── coff_wrapper.cpp
│   │   │   ├── coff_wrapper.h
│   │   │   ├── elf_wrapper.cpp
│   │   │   ├── elf_wrapper.h
│   │   │   ├── macho_wrapper.cpp
│   │   │   ├── macho_wrapper.h
│   │   │   ├── pe_wrapper.cpp
│   │   │   └── pe_wrapper.h
│   │   ├── fileinfo-config.json
│   │   ├── fileinfo.cpp
│   │   └── pattern_detector/
│   │       ├── pattern_detector.cpp
│   │       └── pattern_detector.h
│   ├── getsig/
│   │   ├── CMakeLists.txt
│   │   ├── doxygen.h
│   │   └── getsig.cpp
│   ├── idr2pat/
│   │   ├── CMakeLists.txt
│   │   └── idr2pat.cpp
│   ├── llvmir-emul/
│   │   ├── CMakeLists.txt
│   │   ├── llvmir_emul.cpp
│   │   └── retdec-llvmir-emul-config.cmake
│   ├── llvmir2hll/
│   │   ├── CMakeLists.txt
│   │   ├── analysis/
│   │   │   ├── alias_analysis/
│   │   │   │   ├── alias_analyses/
│   │   │   │   │   ├── basic_alias_analysis.cpp
│   │   │   │   │   └── simple_alias_analysis.cpp
│   │   │   │   └── alias_analysis.cpp
│   │   │   ├── break_in_if_analysis.cpp
│   │   │   ├── def_use_analysis.cpp
│   │   │   ├── expr_types_analysis.cpp
│   │   │   ├── goto_target_analysis.cpp
│   │   │   ├── indirect_func_ref_analysis.cpp
│   │   │   ├── no_init_var_def_analysis.cpp
│   │   │   ├── null_pointer_analysis.cpp
│   │   │   ├── special_fp_analysis.cpp
│   │   │   ├── use_def_analysis.cpp
│   │   │   ├── used_types_visitor.cpp
│   │   │   ├── used_vars_visitor.cpp
│   │   │   ├── value_analysis.cpp
│   │   │   ├── var_uses_visitor.cpp
│   │   │   └── written_into_globals_visitor.cpp
│   │   ├── config/
│   │   │   ├── config.cpp
│   │   │   └── configs/
│   │   │       └── json_config.cpp
│   │   ├── doxygen.h
│   │   ├── evaluator/
│   │   │   ├── arithm_expr_evaluator.cpp
│   │   │   └── arithm_expr_evaluators/
│   │   │       ├── c_arithm_expr_evaluator.cpp
│   │   │       └── strict_arithm_expr_evaluator.cpp
│   │   ├── graphs/
│   │   │   ├── cfg/
│   │   │   │   ├── cfg.cpp
│   │   │   │   ├── cfg_builder.cpp
│   │   │   │   ├── cfg_builders/
│   │   │   │   │   ├── non_recursive_cfg_builder.cpp
│   │   │   │   │   └── recursive_cfg_builder.cpp
│   │   │   │   ├── cfg_traversal.cpp
│   │   │   │   ├── cfg_traversals/
│   │   │   │   │   ├── lhs_rhs_uses_cfg_traversal.cpp
│   │   │   │   │   ├── modified_before_read_cfg_traversal.cpp
│   │   │   │   │   ├── no_var_def_cfg_traversal.cpp
│   │   │   │   │   ├── nodes_of_var_use_cfg_traversal.cpp
│   │   │   │   │   ├── optim_func_info_cfg_traversal.cpp
│   │   │   │   │   ├── var_def_cfg_traversal.cpp
│   │   │   │   │   └── var_use_cfg_traversal.cpp
│   │   │   │   ├── cfg_writer.cpp
│   │   │   │   └── cfg_writers/
│   │   │   │       └── graphviz_cfg_writer.cpp
│   │   │   └── cg/
│   │   │       ├── cg.cpp
│   │   │       ├── cg_builder.cpp
│   │   │       ├── cg_writer.cpp
│   │   │       └── cg_writers/
│   │   │           └── graphviz_cg_writer.cpp
│   │   ├── hll/
│   │   │   ├── bir_writer.cpp
│   │   │   ├── bracket_manager.cpp
│   │   │   ├── bracket_managers/
│   │   │   │   ├── c_bracket_manager.cpp
│   │   │   │   └── no_bracket_manager.cpp
│   │   │   ├── compound_op_manager.cpp
│   │   │   ├── compound_op_managers/
│   │   │   │   ├── c_compound_op_manager.cpp
│   │   │   │   └── no_compound_op_manager.cpp
│   │   │   ├── hll_writer.cpp
│   │   │   ├── hll_writers/
│   │   │   │   └── c_hll_writer.cpp
│   │   │   ├── output_manager.cpp
│   │   │   └── output_managers/
│   │   │       ├── json_manager.cpp
│   │   │       └── plain_manager.cpp
│   │   ├── ir/
│   │   │   ├── add_op_expr.cpp
│   │   │   ├── address_op_expr.cpp
│   │   │   ├── and_op_expr.cpp
│   │   │   ├── array_index_op_expr.cpp
│   │   │   ├── array_type.cpp
│   │   │   ├── assign_op_expr.cpp
│   │   │   ├── assign_stmt.cpp
│   │   │   ├── binary_op_expr.cpp
│   │   │   ├── bit_and_op_expr.cpp
│   │   │   ├── bit_cast_expr.cpp
│   │   │   ├── bit_or_op_expr.cpp
│   │   │   ├── bit_shl_op_expr.cpp
│   │   │   ├── bit_shr_op_expr.cpp
│   │   │   ├── bit_xor_op_expr.cpp
│   │   │   ├── break_stmt.cpp
│   │   │   ├── call_expr.cpp
│   │   │   ├── call_stmt.cpp
│   │   │   ├── cast_expr.cpp
│   │   │   ├── comma_op_expr.cpp
│   │   │   ├── const_array.cpp
│   │   │   ├── const_bool.cpp
│   │   │   ├── const_float.cpp
│   │   │   ├── const_int.cpp
│   │   │   ├── const_null_pointer.cpp
│   │   │   ├── const_string.cpp
│   │   │   ├── const_struct.cpp
│   │   │   ├── const_symbol.cpp
│   │   │   ├── continue_stmt.cpp
│   │   │   ├── deref_op_expr.cpp
│   │   │   ├── div_op_expr.cpp
│   │   │   ├── empty_stmt.cpp
│   │   │   ├── eq_op_expr.cpp
│   │   │   ├── expression.cpp
│   │   │   ├── ext_cast_expr.cpp
│   │   │   ├── float_type.cpp
│   │   │   ├── for_loop_stmt.cpp
│   │   │   ├── fp_to_int_cast_expr.cpp
│   │   │   ├── function.cpp
│   │   │   ├── function_builder.cpp
│   │   │   ├── function_type.cpp
│   │   │   ├── global_var_def.cpp
│   │   │   ├── goto_stmt.cpp
│   │   │   ├── gt_eq_op_expr.cpp
│   │   │   ├── gt_op_expr.cpp
│   │   │   ├── if_stmt.cpp
│   │   │   ├── int_to_fp_cast_expr.cpp
│   │   │   ├── int_to_ptr_cast_expr.cpp
│   │   │   ├── int_type.cpp
│   │   │   ├── lt_eq_op_expr.cpp
│   │   │   ├── lt_op_expr.cpp
│   │   │   ├── mod_op_expr.cpp
│   │   │   ├── module.cpp
│   │   │   ├── mul_op_expr.cpp
│   │   │   ├── neg_op_expr.cpp
│   │   │   ├── neq_op_expr.cpp
│   │   │   ├── not_op_expr.cpp
│   │   │   ├── or_op_expr.cpp
│   │   │   ├── pointer_type.cpp
│   │   │   ├── ptr_to_int_cast_expr.cpp
│   │   │   ├── return_stmt.cpp
│   │   │   ├── statement.cpp
│   │   │   ├── string_type.cpp
│   │   │   ├── struct_index_op_expr.cpp
│   │   │   ├── struct_type.cpp
│   │   │   ├── sub_op_expr.cpp
│   │   │   ├── switch_stmt.cpp
│   │   │   ├── ternary_op_expr.cpp
│   │   │   ├── trunc_cast_expr.cpp
│   │   │   ├── ufor_loop_stmt.cpp
│   │   │   ├── unary_op_expr.cpp
│   │   │   ├── unknown_type.cpp
│   │   │   ├── unreachable_stmt.cpp
│   │   │   ├── value.cpp
│   │   │   ├── var_def_stmt.cpp
│   │   │   ├── variable.cpp
│   │   │   ├── void_type.cpp
│   │   │   └── while_loop_stmt.cpp
│   │   ├── llvm/
│   │   │   ├── llvm_debug_info_obtainer.cpp
│   │   │   ├── llvm_intrinsic_converter.cpp
│   │   │   ├── llvm_support.cpp
│   │   │   ├── llvmir2bir_converter/
│   │   │   │   ├── basic_block_converter.cpp
│   │   │   │   ├── cfg_node.cpp
│   │   │   │   ├── labels_handler.cpp
│   │   │   │   ├── llvm_constant_converter.cpp
│   │   │   │   ├── llvm_fcmp_converter.cpp
│   │   │   │   ├── llvm_instruction_converter.cpp
│   │   │   │   ├── llvm_type_converter.cpp
│   │   │   │   ├── llvm_value_converter.cpp
│   │   │   │   ├── structure_converter.cpp
│   │   │   │   └── variables_manager.cpp
│   │   │   ├── llvmir2bir_converter.cpp
│   │   │   └── string_conversions.cpp
│   │   ├── llvmir2hll.cpp
│   │   ├── obtainer/
│   │   │   ├── call_info_obtainer.cpp
│   │   │   ├── call_info_obtainers/
│   │   │   │   ├── optim_call_info_obtainer.cpp
│   │   │   │   └── pessim_call_info_obtainer.cpp
│   │   │   ├── calls_in_module_obtainer.cpp
│   │   │   └── calls_obtainer.cpp
│   │   ├── optimizer/
│   │   │   ├── func_optimizer.cpp
│   │   │   ├── optimizer.cpp
│   │   │   ├── optimizer_manager.cpp
│   │   │   └── optimizers/
│   │   │       ├── bit_op_to_log_op_optimizer.cpp
│   │   │       ├── bit_shift_optimizer.cpp
│   │   │       ├── break_continue_return_optimizer.cpp
│   │   │       ├── c_array_arg_optimizer.cpp
│   │   │       ├── c_cast_optimizer.cpp
│   │   │       ├── copy_propagation_optimizer.cpp
│   │   │       ├── dead_code_optimizer.cpp
│   │   │       ├── dead_local_assign_optimizer.cpp
│   │   │       ├── deref_address_optimizer.cpp
│   │   │       ├── deref_to_array_index_optimizer.cpp
│   │   │       ├── empty_array_to_string_optimizer.cpp
│   │   │       ├── empty_stmt_optimizer.cpp
│   │   │       ├── goto_stmt_optimizer.cpp
│   │   │       ├── if_before_loop_optimizer.cpp
│   │   │       ├── if_structure_optimizer.cpp
│   │   │       ├── if_to_switch_optimizer.cpp
│   │   │       ├── llvm_intrinsics_optimizer.cpp
│   │   │       ├── loop_last_continue_optimizer.cpp
│   │   │       ├── no_init_var_def_optimizer.cpp
│   │   │       ├── pre_while_true_loop_conv_optimizer.cpp
│   │   │       ├── remove_all_casts_optimizer.cpp
│   │   │       ├── remove_useless_casts_optimizer.cpp
│   │   │       ├── self_assign_optimizer.cpp
│   │   │       ├── simple_copy_propagation_optimizer.cpp
│   │   │       ├── simplify_arithm_expr/
│   │   │       │   ├── bool_comparison_optimizer.cpp
│   │   │       │   ├── change_order_of_operands_sub_optimizer.cpp
│   │   │       │   ├── const_operator_const_sub_optimizer.cpp
│   │   │       │   ├── equal_operands_sub_optimizer.cpp
│   │   │       │   ├── negation_operator_sub_optimizer.cpp
│   │   │       │   ├── negative_operand_sub_optimizer.cpp
│   │   │       │   ├── one_sub_optimizer.cpp
│   │   │       │   ├── sub_optimizer.cpp
│   │   │       │   ├── ternary_operator_sub_optimizer.cpp
│   │   │       │   ├── three_operands_sub_optimizer.cpp
│   │   │       │   └── zero_sub_optimizer.cpp
│   │   │       ├── simplify_arithm_expr_optimizer.cpp
│   │   │       ├── unused_global_var_optimizer.cpp
│   │   │       ├── var_def_for_loop_optimizer.cpp
│   │   │       ├── var_def_stmt_optimizer.cpp
│   │   │       ├── void_return_optimizer.cpp
│   │   │       ├── while_true_to_for_loop_optimizer.cpp
│   │   │       ├── while_true_to_ufor_loop_optimizer.cpp
│   │   │       └── while_true_to_while_cond_optimizer.cpp
│   │   ├── pattern/
│   │   │   ├── pattern_finder.cpp
│   │   │   ├── pattern_finder_runner.cpp
│   │   │   ├── pattern_finder_runners/
│   │   │   │   ├── cli_pattern_finder_runner.cpp
│   │   │   │   └── no_action_pattern_finder_runner.cpp
│   │   │   ├── pattern_finders/
│   │   │   │   ├── api_call/
│   │   │   │   │   ├── api_call_info.cpp
│   │   │   │   │   ├── api_call_info_seq.cpp
│   │   │   │   │   ├── api_call_info_seq_parser.cpp
│   │   │   │   │   ├── api_call_seq_data.cpp
│   │   │   │   │   ├── api_call_seq_finder.cpp
│   │   │   │   │   └── api_call_seq_finders/
│   │   │   │   │       └── basic_block_api_call_seq_finder.cpp
│   │   │   │   ├── api_call_pattern_finder.cpp
│   │   │   │   └── api_call_seq_pattern_finder.cpp
│   │   │   └── patterns/
│   │   │       └── stmts_pattern.cpp
│   │   ├── retdec-llvmir2hll-config.cmake
│   │   ├── semantics/
│   │   │   └── semantics/
│   │   │       ├── compound_semantics.cpp
│   │   │       ├── compound_semantics_builder.cpp
│   │   │       ├── default_semantics.cpp
│   │   │       ├── doxygen.h
│   │   │       ├── gcc_general_semantics/
│   │   │       │   ├── doxygen.h
│   │   │       │   ├── get_c_header_file_for_func.cpp
│   │   │       │   ├── get_name_of_param.cpp
│   │   │       │   ├── get_name_of_var_storing_result.cpp
│   │   │       │   └── get_symbolic_names_for_param.cpp
│   │   │       ├── gcc_general_semantics.cpp
│   │   │       ├── impl_support/
│   │   │       │   ├── get_c_header_file_for_func.cpp
│   │   │       │   ├── get_name_of_param.cpp
│   │   │       │   ├── get_name_of_var_storing_result.cpp
│   │   │       │   └── get_symbolic_names_for_param.cpp
│   │   │       ├── libc_semantics/
│   │   │       │   ├── doxygen.h
│   │   │       │   ├── func_never_returns.cpp
│   │   │       │   ├── get_c_header_file_for_func.cpp
│   │   │       │   ├── get_name_of_param.cpp
│   │   │       │   ├── get_name_of_var_storing_result.cpp
│   │   │       │   └── get_symbolic_names_for_param.cpp
│   │   │       ├── libc_semantics.cpp
│   │   │       ├── win_api_semantics/
│   │   │       │   ├── doxygen.h
│   │   │       │   ├── func_never_returns.cpp
│   │   │       │   ├── get_c_header_file_for_func.cpp
│   │   │       │   ├── get_name_of_param/
│   │   │       │   │   ├── a.cpp
│   │   │       │   │   ├── b.cpp
│   │   │       │   │   ├── c1.cpp
│   │   │       │   │   ├── c2.cpp
│   │   │       │   │   ├── d.cpp
│   │   │       │   │   ├── e.cpp
│   │   │       │   │   ├── f.cpp
│   │   │       │   │   ├── g1.cpp
│   │   │       │   │   ├── g2.cpp
│   │   │       │   │   ├── h.cpp
│   │   │       │   │   ├── i.cpp
│   │   │       │   │   ├── j.cpp
│   │   │       │   │   ├── k.cpp
│   │   │       │   │   ├── l.cpp
│   │   │       │   │   ├── m.cpp
│   │   │       │   │   ├── n.cpp
│   │   │       │   │   ├── o.cpp
│   │   │       │   │   ├── p.cpp
│   │   │       │   │   ├── q.cpp
│   │   │       │   │   ├── r.cpp
│   │   │       │   │   ├── s.cpp
│   │   │       │   │   ├── t.cpp
│   │   │       │   │   ├── u.cpp
│   │   │       │   │   ├── v.cpp
│   │   │       │   │   ├── w.cpp
│   │   │       │   │   ├── x.cpp
│   │   │       │   │   ├── y.cpp
│   │   │       │   │   └── z.cpp
│   │   │       │   ├── get_name_of_param.cpp
│   │   │       │   ├── get_name_of_var_storing_result.cpp
│   │   │       │   └── get_symbolic_names_for_param.cpp
│   │   │       └── win_api_semantics.cpp
│   │   ├── support/
│   │   │   ├── const_symbol_converter.cpp
│   │   │   ├── expr_types_fixer.cpp
│   │   │   ├── expression_negater.cpp
│   │   │   ├── global_vars_sorter.cpp
│   │   │   ├── headers_for_declared_funcs.cpp
│   │   │   ├── library_funcs_remover.cpp
│   │   │   ├── statements_counter.cpp
│   │   │   ├── struct_types_sorter.cpp
│   │   │   ├── types.cpp
│   │   │   ├── unreachable_code_in_cfg_remover.cpp
│   │   │   ├── valid_state.cpp
│   │   │   ├── value_text_repr_visitor.cpp
│   │   │   ├── variable_replacer.cpp
│   │   │   └── visitors/
│   │   │       └── ordered_all_visitor.cpp
│   │   ├── utils/
│   │   │   ├── graphviz.cpp
│   │   │   ├── ir.cpp
│   │   │   ├── loop_optimizer.cpp
│   │   │   └── string.cpp
│   │   ├── validator/
│   │   │   ├── validator.cpp
│   │   │   └── validators/
│   │   │       ├── break_outside_loop_validator.cpp
│   │   │       ├── no_global_var_def_validator.cpp
│   │   │       └── return_validator.cpp
│   │   ├── var_name_gen/
│   │   │   ├── var_name_gen.cpp
│   │   │   └── var_name_gens/
│   │   │       ├── fruit_var_name_gen.cpp
│   │   │       ├── num_var_name_gen.cpp
│   │   │       └── word_var_name_gen.cpp
│   │   └── var_renamer/
│   │       ├── var_renamer.cpp
│   │       └── var_renamers/
│   │           ├── address_var_renamer.cpp
│   │           ├── hungarian_var_renamer.cpp
│   │           ├── readable_var_renamer.cpp
│   │           ├── simple_var_renamer.cpp
│   │           └── unified_var_renamer.cpp
│   ├── loader/
│   │   ├── CMakeLists.txt
│   │   ├── doxygen.h
│   │   ├── image_factory.cpp
│   │   ├── loader/
│   │   │   ├── coff/
│   │   │   │   └── coff_image.cpp
│   │   │   ├── elf/
│   │   │   │   └── elf_image.cpp
│   │   │   ├── image.cpp
│   │   │   ├── intel_hex/
│   │   │   │   └── intel_hex_image.cpp
│   │   │   ├── macho/
│   │   │   │   └── macho_image.cpp
│   │   │   ├── pe/
│   │   │   │   └── pe_image.cpp
│   │   │   ├── raw_data/
│   │   │   │   └── raw_data_image.cpp
│   │   │   ├── segment.cpp
│   │   │   └── segment_data_source.cpp
│   │   ├── retdec-loader-config.cmake
│   │   └── utils/
│   │       ├── name_generator.cpp
│   │       ├── overlap_resolver.cpp
│   │       └── range.cpp
│   ├── macho-extractor/
│   │   ├── CMakeLists.txt
│   │   ├── break_fat.cpp
│   │   ├── doxygen.h
│   │   └── retdec-macho-extractor-config.cmake
│   ├── macho-extractortool/
│   │   ├── CMakeLists.txt
│   │   └── macho_extractor.cpp
│   ├── pat2yara/
│   │   ├── CMakeLists.txt
│   │   ├── compare.cpp
│   │   ├── compare.h
│   │   ├── logic.cpp
│   │   ├── logic.h
│   │   ├── modifications.cpp
│   │   ├── modifications.h
│   │   ├── pat2yara.cpp
│   │   ├── processing.cpp
│   │   ├── processing.h
│   │   ├── utils.cpp
│   │   └── utils.h
│   ├── patterngen/
│   │   ├── CMakeLists.txt
│   │   ├── doxygen.h
│   │   ├── pattern_extractor/
│   │   │   ├── pattern_extractor.cpp
│   │   │   └── types/
│   │   │       └── symbol_pattern.cpp
│   │   └── retdec-patterngen-config.cmake
│   ├── pdbparser/
│   │   ├── CMakeLists.txt
│   │   ├── doxygen.h
│   │   ├── pdb_file.cpp
│   │   ├── pdb_symbols.cpp
│   │   ├── pdb_types.cpp
│   │   ├── pdb_utils.cpp
│   │   └── retdec-pdbparser-config.cmake
│   ├── pelib/
│   │   ├── BoundImportDirectory.cpp
│   │   ├── CMakeLists.txt
│   │   ├── CoffSymbolTable.cpp
│   │   ├── ComHeaderDirectory.cpp
│   │   ├── ConfigDirectory.cpp
│   │   ├── DebugDirectory.cpp
│   │   ├── ExportDirectory.cpp
│   │   ├── IatDirectory.cpp
│   │   ├── ImageLoader.cpp
│   │   ├── InputBuffer.cpp
│   │   ├── OutputBuffer.cpp
│   │   ├── PeFile.cpp
│   │   ├── PeLibAux.cpp
│   │   ├── RelocationsDirectory.cpp
│   │   ├── ResourceDirectory.cpp
│   │   ├── RichHeader.cpp
│   │   ├── SecurityDirectory.cpp
│   │   └── retdec-pelib-config.cmake
│   ├── retdec/
│   │   ├── CMakeLists.txt
│   │   ├── retdec-retdec-config.cmake
│   │   └── retdec.cpp
│   ├── retdec-decompiler/
│   │   ├── CMakeLists.txt
│   │   ├── decompiler-config.json
│   │   └── retdec-decompiler.cpp
│   ├── retdectool/
│   │   ├── CMakeLists.txt
│   │   └── retdec.cpp
│   ├── rtti-finder/
│   │   ├── CMakeLists.txt
│   │   ├── retdec-rtti-finder-config.cmake
│   │   ├── rtti/
│   │   │   ├── rtti_gcc_parser.cpp
│   │   │   └── rtti_msvc_parser.cpp
│   │   ├── rtti_finder.cpp
│   │   └── vtable/
│   │       └── vtable_finder.cpp
│   ├── serdes/
│   │   ├── CMakeLists.txt
│   │   ├── address.cpp
│   │   ├── architecture.cpp
│   │   ├── basic_block.cpp
│   │   ├── calling_convention.cpp
│   │   ├── class.cpp
│   │   ├── file_format.cpp
│   │   ├── file_type.cpp
│   │   ├── function.cpp
│   │   ├── language.cpp
│   │   ├── object.cpp
│   │   ├── pattern.cpp
│   │   ├── retdec-serdes-config.cmake
│   │   ├── std.cpp
│   │   ├── storage.cpp
│   │   ├── tool_info.cpp
│   │   ├── type.cpp
│   │   └── vtable.cpp
│   ├── stacofin/
│   │   ├── CMakeLists.txt
│   │   ├── doxygen.h
│   │   ├── retdec-stacofin-config.cmake
│   │   └── stacofin.cpp
│   ├── stacofintool/
│   │   ├── CMakeLists.txt
│   │   └── stacofin.cpp
│   ├── unpacker/
│   │   ├── CMakeLists.txt
│   │   ├── decompression/
│   │   │   ├── lzma/
│   │   │   │   └── lzma_data.cpp
│   │   │   ├── lzmat/
│   │   │   │   └── lzmat_data.cpp
│   │   │   └── nrv/
│   │   │       ├── nrv2b_data.cpp
│   │   │       ├── nrv2d_data.cpp
│   │   │       └── nrv2e_data.cpp
│   │   ├── doxygen.h
│   │   ├── retdec-unpacker-config.cmake
│   │   └── signature.cpp
│   ├── unpackertool/
│   │   ├── CMakeLists.txt
│   │   ├── arg_handler.cpp
│   │   ├── arg_handler.h
│   │   ├── doxygen.h
│   │   ├── main.cpp
│   │   ├── plugin_mgr.cpp
│   │   ├── plugin_mgr.h
│   │   ├── plugins/
│   │   │   ├── example/
│   │   │   │   ├── doxygen.h
│   │   │   │   ├── example.cpp
│   │   │   │   └── example.h
│   │   │   ├── mpress/
│   │   │   │   ├── doxygen.h
│   │   │   │   ├── mpress.cpp
│   │   │   │   ├── mpress.h
│   │   │   │   └── mpress_exceptions.h
│   │   │   └── upx/
│   │   │       ├── decompressors/
│   │   │       │   ├── decompressor.cpp
│   │   │       │   ├── decompressor.h
│   │   │       │   ├── decompressor_direct_jump.cpp
│   │   │       │   ├── decompressor_direct_jump.h
│   │   │       │   ├── decompressor_lzma.cpp
│   │   │       │   ├── decompressor_lzma.h
│   │   │       │   ├── decompressor_nrv.cpp
│   │   │       │   ├── decompressor_nrv.h
│   │   │       │   ├── decompressor_scrambler.cpp
│   │   │       │   ├── decompressor_scrambler.h
│   │   │       │   ├── decompressor_upxshit.cpp
│   │   │       │   ├── decompressor_upxshit.h
│   │   │       │   └── decompressors.h
│   │   │       ├── doxygen.h
│   │   │       ├── elf/
│   │   │       │   ├── elf_upx_stub.cpp
│   │   │       │   └── elf_upx_stub.h
│   │   │       ├── macho/
│   │   │       │   ├── macho_upx_stub.cpp
│   │   │       │   └── macho_upx_stub.h
│   │   │       ├── pe/
│   │   │       │   ├── pe_upx_stub.cpp
│   │   │       │   └── pe_upx_stub.h
│   │   │       ├── unfilter.cpp
│   │   │       ├── unfilter.h
│   │   │       ├── upx.cpp
│   │   │       ├── upx.h
│   │   │       ├── upx_exceptions.h
│   │   │       ├── upx_stub.cpp
│   │   │       ├── upx_stub.h
│   │   │       ├── upx_stub_signatures.cpp
│   │   │       └── upx_stub_signatures.h
│   │   ├── retdec-unpackertool-config.cmake
│   │   └── unpacker.cpp
│   ├── utils/
│   │   ├── CMakeLists.txt
│   │   ├── alignment.cpp
│   │   ├── binary_path.cpp
│   │   ├── byte_value_storage.cpp
│   │   ├── conversion.cpp
│   │   ├── crc32.cpp
│   │   ├── doxygen.h
│   │   ├── dynamic_buffer.cpp
│   │   ├── file_io.cpp
│   │   ├── io/
│   │   │   ├── log.cpp
│   │   │   └── logger.cpp
│   │   ├── math.cpp
│   │   ├── memory.cpp
│   │   ├── ord_lookup.cpp
│   │   ├── retdec-utils-config.cmake
│   │   ├── string.cpp
│   │   ├── system.cpp
│   │   ├── time.cpp
│   │   └── version.cpp
│   └── yaracpp/
│       ├── CMakeLists.txt
│       ├── retdec-yaracpp-config.cmake
│       ├── yara_detector.cpp
│       ├── yara_match.cpp
│       ├── yara_meta.cpp
│       └── yara_rule.cpp
├── support/
│   ├── CMakeLists.txt
│   ├── README
│   ├── install-share.py
│   ├── install-yara.py
│   ├── ordinals/
│   │   ├── arm/
│   │   │   ├── addrstor.ord
│   │   │   ├── atlce400.ord
│   │   │   ├── aygshell.ord
│   │   │   ├── bthlink.ord
│   │   │   ├── bthutil.ord
│   │   │   ├── ceddk.ord
│   │   │   ├── cellcore.ord
│   │   │   ├── ceshell.ord
│   │   │   ├── commctrl.ord
│   │   │   ├── coredll.ord
│   │   │   ├── htmlview.ord
│   │   │   ├── imgdecmp.ord
│   │   │   ├── mfcce400.ord
│   │   │   ├── mlang.ord
│   │   │   ├── msgstore.ord
│   │   │   ├── note_prj.ord
│   │   │   ├── olece400.ord
│   │   │   ├── phone.ord
│   │   │   ├── pimstore.ord
│   │   │   ├── pndtapi.ord
│   │   │   ├── pushprxy.ord
│   │   │   ├── ril.ord
│   │   │   ├── sms.ord
│   │   │   ├── tnefutil.ord
│   │   │   ├── webview.ord
│   │   │   ├── wininet.ord
│   │   │   ├── wmlview.ord
│   │   │   └── wsp.ord
│   │   └── x86/
│   │       ├── 1394bus.ord
│   │       ├── 6to4svc.ord
│   │       ├── aaaamon.ord
│   │       ├── acledit.ord
│   │       ├── aclui.ord
│   │       ├── activeds.ord
│   │       ├── actxprxy.ord
│   │       ├── admparse.ord
│   │       ├── adptif.ord
│   │       ├── adsldp.ord
│   │       ├── adsldpc.ord
│   │       ├── adsmsext.ord
│   │       ├── adsnt.ord
│   │       ├── advapi32.ord
│   │       ├── advpack.ord
│   │       ├── aelupsvc.ord
│   │       ├── alrsvc.ord
│   │       ├── apcups.ord
│   │       ├── apidll.ord
│   │       ├── apphelp.ord
│   │       ├── appmgmts.ord
│   │       ├── appmgr.ord
│   │       ├── asfsipc.ord
│   │       ├── asycfilt.ord
│   │       ├── atkctrs.ord
│   │       ├── atl.ord
│   │       ├── atl71.ord
│   │       ├── atl80.ord
│   │       ├── atmpvcno.ord
│   │       ├── audiodev.ord
│   │       ├── audiosrv.ord
│   │       ├── audpci40.ord
│   │       ├── audwin16.ord
│   │       ├── audwin32.ord
│   │       ├── authz.ord
│   │       ├── autodisc.ord
│   │       ├── avicap.ord
│   │       ├── avicap32.ord
│   │       ├── avifil32.ord
│   │       ├── avifile.ord
│   │       ├── aweman.ord
│   │       ├── aweman32.ord
│   │       ├── axaltocm.ord
│   │       ├── azroles.ord
│   │       ├── azroleui.ord
│   │       ├── basecsp.ord
│   │       ├── basesrv.ord
│   │       ├── batmeter.ord
│   │       ├── battc.ord
│   │       ├── bdasup.ord
│   │       ├── bdcalls.ord
│   │       ├── bidispl.ord
│   │       ├── bitsprx2.ord
│   │       ├── bitsprx3.ord
│   │       ├── bivbx30.ord
│   │       ├── blackbox.ord
│   │       ├── browser.ord
│   │       ├── browseui.ord
│   │       ├── browsewm.ord
│   │       ├── bwcc.ord
│   │       ├── bwcc32.ord
│   │       ├── c_eucdb.ord
│   │       ├── c_g18030.ord
│   │       ├── c_is2022.ord
│   │       ├── c_iscii.ord
│   │       ├── c_snadb.ord
│   │       ├── cabinet.ord
│   │       ├── cabview.ord
│   │       ├── calwin16.ord
│   │       ├── calwin32.ord
│   │       ├── camocx.ord
│   │       ├── cards.ord
│   │       ├── catsrv.ord
│   │       ├── catsrvps.ord
│   │       ├── catsrvut.ord
│   │       ├── ccfapi32.ord
│   │       ├── ccfgnt.ord
│   │       ├── cdfview.ord
│   │       ├── cdosys.ord
│   │       ├── certadm.ord
│   │       ├── certcli.ord
│   │       ├── certmgr.ord
│   │       ├── ceutil.ord
│   │       ├── cewmdm.ord
│   │       ├── cfgmgr32.ord
│   │       ├── chsbrkr.ord
│   │       ├── chtbrkr.ord
│   │       ├── ciadmin.ord
│   │       ├── cic.ord
│   │       ├── ciodm.ord
│   │       ├── classpnp.ord
│   │       ├── clb.ord
│   │       ├── clbcatex.ord
│   │       ├── clbcatq.ord
│   │       ├── cliconfg.ord
│   │       ├── clnwin16.ord
│   │       ├── clnwin32.ord
│   │       ├── clnwinth.ord
│   │       ├── clusapi.ord
│   │       ├── clxwin16.ord
│   │       ├── clxwin32.ord
│   │       ├── cmcfg32.ord
│   │       ├── cmdial32.ord
│   │       ├── cmpbk32.ord
│   │       ├── cmsetacl.ord
│   │       ├── cmutil.ord
│   │       ├── cnbjmon.ord
│   │       ├── cnetcfg.ord
│   │       ├── cnvfat.ord
│   │       ├── colbact.ord
│   │       ├── comaddin.ord
│   │       ├── comadmin.ord
│   │       ├── comcat.ord
│   │       ├── comctl32.ord
│   │       ├── comdlg32.ord
│   │       ├── commctrl.ord
│   │       ├── commdlg.ord
│   │       ├── commtb32.ord
│   │       ├── compatui.ord
│   │       ├── compobj.ord
│   │       ├── compstui.ord
│   │       ├── comres.ord
│   │       ├── comsnap.ord
│   │       ├── comsvcs.ord
│   │       ├── comuid.ord
│   │       ├── confmsp.ord
│   │       ├── console.ord
│   │       ├── coredll.ord
│   │       ├── corpol.ord
│   │       ├── credui.ord
│   │       ├── crtdll.ord
│   │       ├── crypt32.ord
│   │       ├── cryptdlg.ord
│   │       ├── cryptdll.ord
│   │       ├── cryptext.ord
│   │       ├── cryptnet.ord
│   │       ├── cryptsvc.ord
│   │       ├── cryptui.ord
│   │       ├── cscdll.ord
│   │       ├── cscui.ord
│   │       ├── csrsrv.ord
│   │       ├── csseqchk.ord
│   │       ├── ctl3d.ord
│   │       ├── ctl3d32.ord
│   │       ├── ctl3dv2.ord
│   │       ├── cufat.ord
│   │       ├── cw3220.ord
│   │       ├── cw3220mt.ord
│   │       ├── cw3230.ord
│   │       ├── cw3230mt.ord
│   │       ├── d3d8.ord
│   │       ├── d3d8thk.ord
│   │       ├── d3d9.ord
│   │       ├── d3dhalf.ord
│   │       ├── d3dim.ord
│   │       ├── d3dim700.ord
│   │       ├── d3dpmesh.ord
│   │       ├── d3dramp.ord
│   │       ├── d3drampf.ord
│   │       ├── d3drg16f.ord
│   │       ├── d3drg24f.ord
│   │       ├── d3drg32f.ord
│   │       ├── d3drg8f.ord
│   │       ├── d3drgbf.ord
│   │       ├── d3drm.ord
│   │       ├── d3drm16f.ord
│   │       ├── d3drm24f.ord
│   │       ├── d3drm32f.ord
│   │       ├── d3drm8f.ord
│   │       ├── d3dx8d.ord
│   │       ├── d3dxof.ord
│   │       ├── danim.ord
│   │       ├── dataclen.ord
│   │       ├── datime.ord
│   │       ├── davclnt.ord
│   │       ├── dbclient.ord
│   │       ├── dbgeng.ord
│   │       ├── dbghelp.ord
│   │       ├── dbmsrpcn.ord
│   │       ├── dbnetlib.ord
│   │       ├── dbnmpntw.ord
│   │       ├── dciman32.ord
│   │       ├── ddeml.ord
│   │       ├── ddraw.ord
│   │       ├── ddrawex.ord
│   │       ├── deskadp.ord
│   │       ├── deskmon.ord
│   │       ├── deskperf.ord
│   │       ├── devmgr.ord
│   │       ├── dflayout.ord
│   │       ├── dfshim.ord
│   │       ├── dfsshlex.ord
│   │       ├── dgnet.ord
│   │       ├── dhcpcsvc.ord
│   │       ├── dhcpmon.ord
│   │       ├── dhcpsapi.ord
│   │       ├── diactfrm.ord
│   │       ├── dibeng.ord
│   │       ├── digest.ord
│   │       ├── digsig.ord
│   │       ├── dimap.ord
│   │       ├── dimsntfy.ord
│   │       ├── dimsroam.ord
│   │       ├── dinput.ord
│   │       ├── dinput8.ord
│   │       ├── diskcopy.ord
│   │       ├── dispex.ord
│   │       ├── dlcapi.ord
│   │       ├── dmband.ord
│   │       ├── dmcompos.ord
│   │       ├── dmime.ord
│   │       ├── dmloader.ord
│   │       ├── dmocx.ord
│   │       ├── dmscript.ord
│   │       ├── dmstyle.ord
│   │       ├── dmsynth.ord
│   │       ├── dmusic.ord
│   │       ├── dnsapi.ord
│   │       ├── dnsperf.ord
│   │       ├── dnsrslvr.ord
│   │       ├── docobj.ord
│   │       ├── docprop.ord
│   │       ├── docprop2.ord
│   │       ├── dplay.ord
│   │       ├── dplayx.ord
│   │       ├── dpmodemx.ord
│   │       ├── dpnaddr.ord
│   │       ├── dpnet.ord
│   │       ├── dpnhpast.ord
│   │       ├── dpnhupnp.ord
│   │       ├── dpnlobby.ord
│   │       ├── dpserial.ord
│   │       ├── dpvacm.ord
│   │       ├── dpvoice.ord
│   │       ├── dpvvox.ord
│   │       ├── dpwsock.ord
│   │       ├── dpwsockx.ord
│   │       ├── drmclien.ord
│   │       ├── drmk.ord
│   │       ├── drmstor.ord
│   │       ├── drmv2clt.ord
│   │       ├── drprov.ord
│   │       ├── ds32gt.ord
│   │       ├── dsauth.ord
│   │       ├── dsdmo.ord
│   │       ├── dsdmoprp.ord
│   │       ├── dsetup.ord
│   │       ├── dskquota.ord
│   │       ├── dskquoui.ord
│   │       ├── dsound.ord
│   │       ├── dsound3d.ord
│   │       ├── dsprop.ord
│   │       ├── dsquery.ord
│   │       ├── dssec.ord
│   │       ├── dssenh.ord
│   │       ├── dsuiext.ord
│   │       ├── dswave.ord
│   │       ├── duser.ord
│   │       ├── dx7vb.ord
│   │       ├── dx8vb.ord
│   │       ├── dxapi.ord
│   │       ├── dxtmsft.ord
│   │       ├── dxtrans.ord
│   │       ├── edb500.ord
│   │       ├── efsadu.ord
│   │       ├── els.ord
│   │       ├── encapi.ord
│   │       ├── ep100dg.ord
│   │       ├── epro100.ord
│   │       ├── es.ord
│   │       ├── esent.ord
│   │       ├── esent97.ord
│   │       ├── esentprf.ord
│   │       ├── eventlog.ord
│   │       ├── expsrv.ord
│   │       ├── exsec32.ord
│   │       ├── extmgr.ord
│   │       ├── f3ahvoas.ord
│   │       ├── faultrep.ord
│   │       ├── fde.ord
│   │       ├── fdeploy.ord
│   │       ├── feclient.ord
│   │       ├── filemgmt.ord
│   │       ├── fldrclnr.ord
│   │       ├── fltlib.ord
│   │       ├── fmifs.ord
│   │       ├── fontext.ord
│   │       ├── fontsub.ord
│   │       ├── framedyd.ord
│   │       ├── framedyn.ord
│   │       ├── fsusd.ord
│   │       ├── ftlx041e.ord
│   │       ├── ftsrch.ord
│   │       ├── fwcfg.ord
│   │       ├── gcdef.ord
│   │       ├── gdi.ord
│   │       ├── gdi32.ord
│   │       ├── gdiplus.ord
│   │       ├── getuname.ord
│   │       ├── glmf32.ord
│   │       ├── glu32.ord
│   │       ├── gpedit.ord
│   │       ├── gpkcsp.ord
│   │       ├── gptext.ord
│   │       ├── grabber.ord
│   │       ├── gswag32.ord
│   │       ├── gswdll32.ord
│   │       ├── h323msp.ord
│   │       ├── hal.ord
│   │       ├── hbaapi.ord
│   │       ├── hcaport.ord
│   │       ├── hhsetup.ord
│   │       ├── hid.ord
│   │       ├── hidclass.ord
│   │       ├── hidparse.ord
│   │       ├── hidserv.ord
│   │       ├── hlink.ord
│   │       ├── hlinkprx.ord
│   │       ├── hnetcfg.ord
│   │       ├── hnetmon.ord
│   │       ├── hpmon.ord
│   │       ├── hpscan32.ord
│   │       ├── hticons.ord
│   │       ├── httpapi.ord
│   │       ├── htui.ord
│   │       ├── hypertrm.ord
│   │       ├── iasacct.ord
│   │       ├── iasads.ord
│   │       ├── iashlpr.ord
│   │       ├── iasnap.ord
│   │       ├── iaspolcy.ord
│   │       ├── iasrad.ord
│   │       ├── iasrecst.ord
│   │       ├── iassam.ord
│   │       ├── iassdo.ord
│   │       ├── iassvcs.ord
│   │       ├── iccvid.ord
│   │       ├── icfgnt5.ord
│   │       ├── icm32.ord
│   │       ├── icmapi16.ord
│   │       ├── icmp.ord
│   │       ├── icmui.ord
│   │       ├── icwdial.ord
│   │       ├── icwphbk.ord
│   │       ├── idq.ord
│   │       ├── iduninst.ord
│   │       ├── ieakeng.ord
│   │       ├── ieaksie.ord
│   │       ├── iedkcs32.ord
│   │       ├── iepeers.ord
│   │       ├── iernonce.ord
│   │       ├── iesetup.ord
│   │       ├── ifmon.ord
│   │       ├── ifsutil.ord
│   │       ├── ifxcardm.ord
│   │       ├── igmpagnt.ord
│   │       ├── ils.ord
│   │       ├── imagehlp.ord
│   │       ├── imeshare.ord
│   │       ├── imgutil.ord
│   │       ├── imjp81k.ord
│   │       ├── imm32.ord
│   │       ├── inetcfg.ord
│   │       ├── inetcomm.ord
│   │       ├── inetmib1.ord
│   │       ├── inetpp.ord
│   │       ├── inetppui.ord
│   │       ├── infosoft.ord
│   │       ├── initpki.ord
│   │       ├── input.ord
│   │       ├── inseng.ord
│   │       ├── iologmsg.ord
│   │       ├── iphlpapi.ord
│   │       ├── ipmontr.ord
│   │       ├── ipnathlp.ord
│   │       ├── ippromon.ord
│   │       ├── iprop.ord
│   │       ├── iprtprio.ord
│   │       ├── iprtrmgr.ord
│   │       ├── ipsecsnp.ord
│   │       ├── ipsecsvc.ord
│   │       ├── ipsmsnap.ord
│   │       ├── ipv6mon.ord
│   │       ├── ipxcfg.ord
│   │       ├── ipxsap.ord
│   │       ├── ir32_32.ord
│   │       ├── isign32.ord
│   │       ├── itircl.ord
│   │       ├── itss.ord
│   │       ├── iuctl.ord
│   │       ├── iuengine.ord
│   │       ├── ixsso.ord
│   │       ├── iyuv_32.ord
│   │       ├── jet500.ord
│   │       ├── jobexec.ord
│   │       ├── jpeg1x32.ord
│   │       ├── jpeg2x32.ord
│   │       ├── jscript.ord
│   │       ├── jsproxy.ord
│   │       ├── kbd101.ord
│   │       ├── kbd101a.ord
│   │       ├── kbd101b.ord
│   │       ├── kbd101c.ord
│   │       ├── kbd103.ord
│   │       ├── kbd106.ord
│   │       ├── kbd106n.ord
│   │       ├── kbda1.ord
│   │       ├── kbda2.ord
│   │       ├── kbda3.ord
│   │       ├── kbdal.ord
│   │       ├── kbdarme.ord
│   │       ├── kbdarmw.ord
│   │       ├── kbdax2.ord
│   │       ├── kbdaze.ord
│   │       ├── kbdazel.ord
│   │       ├── kbdbe.ord
│   │       ├── kbdbene.ord
│   │       ├── kbdblr.ord
│   │       ├── kbdbr.ord
│   │       ├── kbdbu.ord
│   │       ├── kbdca.ord
│   │       ├── kbdcan.ord
│   │       ├── kbdcr.ord
│   │       ├── kbdcz.ord
│   │       ├── kbdcz1.ord
│   │       ├── kbdcz2.ord
│   │       ├── kbdda.ord
│   │       ├── kbddiv1.ord
│   │       ├── kbddiv2.ord
│   │       ├── kbddll.ord
│   │       ├── kbddv.ord
│   │       ├── kbdes.ord
│   │       ├── kbdest.ord
│   │       ├── kbdfa.ord
│   │       ├── kbdfc.ord
│   │       ├── kbdfi.ord
│   │       ├── kbdfo.ord
│   │       ├── kbdfr.ord
│   │       ├── kbdgae.ord
│   │       ├── kbdgeo.ord
│   │       ├── kbdgkl.ord
│   │       ├── kbdgr.ord
│   │       ├── kbdgr1.ord
│   │       ├── kbdhe.ord
│   │       ├── kbdhe220.ord
│   │       ├── kbdhe319.ord
│   │       ├── kbdheb.ord
│   │       ├── kbdhela2.ord
│   │       ├── kbdhela3.ord
│   │       ├── kbdhept.ord
│   │       ├── kbdhu.ord
│   │       ├── kbdhu1.ord
│   │       ├── kbdibm02.ord
│   │       ├── kbdic.ord
│   │       ├── kbdindev.ord
│   │       ├── kbdinguj.ord
│   │       ├── kbdinhin.ord
│   │       ├── kbdinkan.ord
│   │       ├── kbdinmar.ord
│   │       ├── kbdinpun.ord
│   │       ├── kbdintam.ord
│   │       ├── kbdintel.ord
│   │       ├── kbdir.ord
│   │       ├── kbdit.ord
│   │       ├── kbdit142.ord
│   │       ├── kbdjpn.ord
│   │       ├── kbdkaz.ord
│   │       ├── kbdkor.ord
│   │       ├── kbdkyr.ord
│   │       ├── kbdla.ord
│   │       ├── kbdlk41a.ord
│   │       ├── kbdlk41j.ord
│   │       ├── kbdlt.ord
│   │       ├── kbdlt1.ord
│   │       ├── kbdlv.ord
│   │       ├── kbdlv1.ord
│   │       ├── kbdmac.ord
│   │       ├── kbdmon.ord
│   │       ├── kbdne.ord
│   │       ├── kbdnec.ord
│   │       ├── kbdnec95.ord
│   │       ├── kbdnecat.ord
│   │       ├── kbdnecnt.ord
│   │       ├── kbdno.ord
│   │       ├── kbdpl.ord
│   │       ├── kbdpl1.ord
│   │       ├── kbdpo.ord
│   │       ├── kbdro.ord
│   │       ├── kbdru.ord
│   │       ├── kbdru1.ord
│   │       ├── kbdsf.ord
│   │       ├── kbdsg.ord
│   │       ├── kbdsl.ord
│   │       ├── kbdsl1.ord
│   │       ├── kbdsp.ord
│   │       ├── kbdsw.ord
│   │       ├── kbdsyr1.ord
│   │       ├── kbdsyr2.ord
│   │       ├── kbdtat.ord
│   │       ├── kbdth0.ord
│   │       ├── kbdth1.ord
│   │       ├── kbdth2.ord
│   │       ├── kbdth3.ord
│   │       ├── kbdtuf.ord
│   │       ├── kbdtuq.ord
│   │       ├── kbduk.ord
│   │       ├── kbdur.ord
│   │       ├── kbdurdu.ord
│   │       ├── kbdus.ord
│   │       ├── kbdusa.ord
│   │       ├── kbdusl.ord
│   │       ├── kbdusr.ord
│   │       ├── kbdusx.ord
│   │       ├── kbduzb.ord
│   │       ├── kbdvntc.ord
│   │       ├── kbdycc.ord
│   │       ├── kbdycl.ord
│   │       ├── kerberos.ord
│   │       ├── kernel.ord
│   │       ├── kernel32.ord
│   │       ├── keyboard.ord
│   │       ├── keymgr.ord
│   │       ├── korwbrkr.ord
│   │       ├── ks.ord
│   │       ├── ksecdd.ord
│   │       ├── ksproxy.ax.ord
│   │       ├── ksuser.ord
│   │       ├── langwrbk.ord
│   │       ├── laprxy.ord
│   │       ├── licmgr10.ord
│   │       ├── linkinfo.ord
│   │       ├── llsrpc.ord
│   │       ├── lmhsvc.ord
│   │       ├── lmrt.ord
│   │       ├── loadperf.ord
│   │       ├── localmon.ord
│   │       ├── localsec.ord
│   │       ├── localspl.ord
│   │       ├── localui.ord
│   │       ├── locwin16.ord
│   │       ├── locwin32.ord
│   │       ├── loghours.ord
│   │       ├── logonsrv.ord
│   │       ├── lpk.ord
│   │       ├── lprhelp.ord
│   │       ├── lprmonui.ord
│   │       ├── lsapi16.ord
│   │       ├── lsasrv.ord
│   │       ├── lvcodek.ord
│   │       ├── lz32.ord
│   │       ├── lzexpand.ord
│   │       ├── mag_hook.ord
│   │       ├── mapi.ord
│   │       ├── mapi32.ord
│   │       ├── mapistub.ord
│   │       ├── mcastmib.ord
│   │       ├── mcd.ord
│   │       ├── mcd32.ord
│   │       ├── mcdsrv32.ord
│   │       ├── mchgrcoi.ord
│   │       ├── mciavi32.ord
│   │       ├── mcicda.ord
│   │       ├── mciole16.ord
│   │       ├── mciole32.ord
│   │       ├── mciseq.ord
│   │       ├── mciwave.ord
│   │       ├── mdgncdet.ord
│   │       ├── mdhcp.ord
│   │       ├── mdminst.ord
│   │       ├── mdt2fw95.ord
│   │       ├── mf3216.ord
│   │       ├── mfc100.ord
│   │       ├── mfc100d.ord
│   │       ├── mfc100u.ord
│   │       ├── mfc100ud.ord
│   │       ├── mfc110.ord
│   │       ├── mfc110d.ord
│   │       ├── mfc110u.ord
│   │       ├── mfc110ud.ord
│   │       ├── mfc200.ord
│   │       ├── mfc200d.ord
│   │       ├── mfc250.ord
│   │       ├── mfc250d.ord
│   │       ├── mfc30.ord
│   │       ├── mfc30u.ord
│   │       ├── mfc40.ord
│   │       ├── mfc40d.ord
│   │       ├── mfc40u.ord
│   │       ├── mfc40ud.ord
│   │       ├── mfc42.ord
│   │       ├── mfc42d.ord
│   │       ├── mfc42u.ord
│   │       ├── mfc42ud.ord
│   │       ├── mfc70.ord
│   │       ├── mfc70u.ord
│   │       ├── mfc71.ord
│   │       ├── mfc71d.ord
│   │       ├── mfc71u.ord
│   │       ├── mfc71ud.ord
│   │       ├── mfc80.ord
│   │       ├── mfc80d.ord
│   │       ├── mfc80u.ord
│   │       ├── mfc80ud.ord
│   │       ├── mfc90.ord
│   │       ├── mfc90d.ord
│   │       ├── mfc90u.ord
│   │       ├── mfc90ud.ord
│   │       ├── mfcans32.ord
│   │       ├── mfcapwz.ord
│   │       ├── mfcd250.ord
│   │       ├── mfcd250d.ord
│   │       ├── mfcd30.ord
│   │       ├── mfcd40d.ord
│   │       ├── mfcd40ud.ord
│   │       ├── mfcd42d.ord
│   │       ├── mfcd42ud.ord
│   │       ├── mfcm100.ord
│   │       ├── mfcm100d.ord
│   │       ├── mfcm100u.ord
│   │       ├── mfcm100ud.ord
│   │       ├── mfcm110.ord
│   │       ├── mfcm110d.ord
│   │       ├── mfcm110u.ord
│   │       ├── mfcm110ud.ord
│   │       ├── mfcm80.ord
│   │       ├── mfcm80d.ord
│   │       ├── mfcm80u.ord
│   │       ├── mfcm80ud.ord
│   │       ├── mfcm90.ord
│   │       ├── mfcm90d.ord
│   │       ├── mfcm90u.ord
│   │       ├── mfcm90ud.ord
│   │       ├── mfcn30.ord
│   │       ├── mfcn30u.ord
│   │       ├── mfcn40d.ord
│   │       ├── mfcn40ud.ord
│   │       ├── mfcn42d.ord
│   │       ├── mfcn42ud.ord
│   │       ├── mfco250.ord
│   │       ├── mfco250d.ord
│   │       ├── mfco30.ord
│   │       ├── mfco30u.ord
│   │       ├── mfco40d.ord
│   │       ├── mfco40ud.ord
│   │       ├── mfco42d.ord
│   │       ├── mfco42ud.ord
│   │       ├── mfcsubs.ord
│   │       ├── mgmtapi.ord
│   │       ├── midimap.ord
│   │       ├── miglibnt.ord
│   │       ├── mimefilt.ord
│   │       ├── mlang.ord
│   │       ├── mll_hp.ord
│   │       ├── mll_mtf.ord
│   │       ├── mll_qic.ord
│   │       ├── mmcbase.ord
│   │       ├── mmcndmgr.ord
│   │       ├── mmcshext.ord
│   │       ├── mmdrv.ord
│   │       ├── mmfutil.ord
│   │       ├── mmsys.ord
│   │       ├── mmsystem.ord
│   │       ├── mmutilse.ord
│   │       ├── mobsync.ord
│   │       ├── modemui.ord
│   │       ├── moricons.ord
│   │       ├── mp43dmod.ord
│   │       ├── mp4sdmod.ord
│   │       ├── mpg4dmod.ord
│   │       ├── mpr.ord
│   │       ├── mprapi.ord
│   │       ├── mprddm.ord
│   │       ├── mprdim.ord
│   │       ├── mprmsg.ord
│   │       ├── mprsnap.ord
│   │       ├── mprui.ord
│   │       ├── mqad.ord
│   │       ├── mqdscli.ord
│   │       ├── mqoa.ord
│   │       ├── mqperf.ord
│   │       ├── mqrt.ord
│   │       ├── mqsec.ord
│   │       ├── mqutil.ord
│   │       ├── msaatext.ord
│   │       ├── msacm.ord
│   │       ├── msacm32.ord
│   │       ├── msafd.ord
│   │       ├── msapsspc.ord
│   │       ├── msasn1.ord
│   │       ├── mscat32.ord
│   │       ├── mscms.ord
│   │       ├── msconf.ord
│   │       ├── mscoree.ord
│   │       ├── mscories.ord
│   │       ├── mscpxl32.ord
│   │       ├── msctf.ord
│   │       ├── msctfp.ord
│   │       ├── msdadiag.ord
│   │       ├── msdart.ord
│   │       ├── msdmo.ord
│   │       ├── msdtcprx.ord
│   │       ├── msdtcuiu.ord
│   │       ├── msexch40.ord
│   │       ├── msexcl40.ord
│   │       ├── msfrt40.ord
│   │       ├── msftedit.ord
│   │       ├── msgina.ord
│   │       ├── msgstrpc.ord
│   │       ├── msgsvc.ord
│   │       ├── mshtml.ord
│   │       ├── mshtmled.ord
│   │       ├── msi.ord
│   │       ├── msident.ord
│   │       ├── msidle.ord
│   │       ├── msieftp.ord
│   │       ├── msihnd.ord
│   │       ├── msimg32.ord
│   │       ├── msimrt.ord
│   │       ├── msimrt16.ord
│   │       ├── msimrt32.ord
│   │       ├── msimtf.ord
│   │       ├── msimusic.ord
│   │       ├── msir3jp.ord
│   │       ├── msisip.ord
│   │       ├── msjet35.ord
│   │       ├── msjet40.ord
│   │       ├── msjetoledb40.ord
│   │       ├── msjint32.ord
│   │       ├── msjint35.ord
│   │       ├── msjint40.ord
│   │       ├── msjter32.ord
│   │       ├── msjter35.ord
│   │       ├── msjter40.ord
│   │       ├── msjtes40.ord
│   │       ├── mslbui.ord
│   │       ├── msls31.ord
│   │       ├── msltus40.ord
│   │       ├── msncdet.ord
│   │       ├── msnetobj.ord
│   │       ├── msnsspc.ord
│   │       ├── mso97v.ord
│   │       ├── msoeacct.ord
│   │       ├── msoert2.ord
│   │       ├── msorcl32.ord
│   │       ├── msorfs.ord
│   │       ├── msoss.ord
│   │       ├── mspatcha.ord
│   │       ├── mspbde40.ord
│   │       ├── mspdb60.ord
│   │       ├── mspmsnsv.ord
│   │       ├── mspmsp.ord
│   │       ├── msports.ord
│   │       ├── msprivs.ord
│   │       ├── msr2c.ord
│   │       ├── msrating.ord
│   │       ├── msrclr40.ord
│   │       ├── msrd2x32.ord
│   │       ├── msrd2x35.ord
│   │       ├── msrd2x40.ord
│   │       ├── msrd3x40.ord
│   │       ├── msrdo20.ord
│   │       ├── msrepl40.ord
│   │       ├── msrle32.ord
│   │       ├── mssap.ord
│   │       ├── msscp.ord
│   │       ├── mssign32.ord
│   │       ├── mssip32.ord
│   │       ├── msstdfmt.ord
│   │       ├── msstkprp.ord
│   │       ├── msswch.ord
│   │       ├── mstask.ord
│   │       ├── mstext40.ord
│   │       ├── mstime.ord
│   │       ├── mstlsapi.ord
│   │       ├── mstscax.ord
│   │       ├── msutb.ord
│   │       ├── msv1_0.ord
│   │       ├── msvbvm50.ord
│   │       ├── msvbvm60.ord
│   │       ├── msvci70.ord
│   │       ├── msvcirt.ord
│   │       ├── msvcp100.ord
│   │       ├── msvcp100d.ord
│   │       ├── msvcp110.ord
│   │       ├── msvcp110d.ord
│   │       ├── msvcp50.ord
│   │       ├── msvcp60.ord
│   │       ├── msvcp70.ord
│   │       ├── msvcp71.ord
│   │       ├── msvcp80.ord
│   │       ├── msvcp90.ord
│   │       ├── msvcp90d.ord
│   │       ├── msvcr100.ord
│   │       ├── msvcr100d.ord
│   │       ├── msvcr110.ord
│   │       ├── msvcr110d.ord
│   │       ├── msvcr70.ord
│   │       ├── msvcr71.ord
│   │       ├── msvcr80.ord
│   │       ├── msvcr90.ord
│   │       ├── msvcr90d.ord
│   │       ├── msvcrt.ord
│   │       ├── msvcrt10.ord
│   │       ├── msvcrt20.ord
│   │       ├── msvcrt40.ord
│   │       ├── msvcrtd.ord
│   │       ├── msvfw32.ord
│   │       ├── msvidc32.ord
│   │       ├── msvidctl.ord
│   │       ├── msvideo.ord
│   │       ├── msw3prt.ord
│   │       ├── mswdat10.ord
│   │       ├── mswebdvd.ord
│   │       ├── mswmdm.ord
│   │       ├── mswsock.ord
│   │       ├── mswstr10.ord
│   │       ├── msxbde40.ord
│   │       ├── msxml.ord
│   │       ├── msxml2.ord
│   │       ├── msxml3.ord
│   │       ├── msyuv.ord
│   │       ├── mtxclu.ord
│   │       ├── mtxdm.ord
│   │       ├── mtxex.ord
│   │       ├── mtxlegih.ord
│   │       ├── mtxoci.ord
│   │       ├── muweb.ord
│   │       ├── mycomput.ord
│   │       ├── mydocs.ord
│   │       ├── narrhook.ord
│   │       ├── ncobjapi.ord
│   │       ├── ncpwin16.ord
│   │       ├── ncpwin32.ord
│   │       ├── nddeapi.ord
│   │       ├── nddenb.ord
│   │       ├── nddenb32.ord
│   │       ├── ndis.ord
│   │       ├── ndrd.ord
│   │       ├── netapi.ord
│   │       ├── netapi32.ord
│   │       ├── netbios.ord
│   │       ├── netcfg.ord
│   │       ├── netcfgx.ord
│   │       ├── netdi.ord
│   │       ├── netdtect.ord
│   │       ├── netevent.ord
│   │       ├── netflex.ord
│   │       ├── netfxperf.ord
│   │       ├── neth.ord
│   │       ├── netid.ord
│   │       ├── netlogon.ord
│   │       ├── netman.ord
│   │       ├── netmsg.ord
│   │       ├── netobjs.ord
│   │       ├── netos.ord
│   │       ├── netplwiz.ord
│   │       ├── netrap.ord
│   │       ├── netsetup.ord
│   │       ├── netshell.ord
│   │       ├── netsub.ord
│   │       ├── netui0.ord
│   │       ├── netui1.ord
│   │       ├── netui2.ord
│   │       ├── netwin16.ord
│   │       ├── netwin32.ord
│   │       ├── newdev.ord
│   │       ├── nia35det.ord
│   │       ├── nibcdet.ord
│   │       ├── nlhtml.ord
│   │       ├── nls32.ord
│   │       ├── nlsapi.ord
│   │       ├── nlsapi32.ord
│   │       ├── nmapi.ord
│   │       ├── nmmkcert.ord
│   │       ├── nmocod.ord
│   │       ├── nmsckn.ord
│   │       ├── nmsupp.ord
│   │       ├── nmw3vwn.ord
│   │       ├── npptools.ord
│   │       ├── nshipsec.ord
│   │       ├── ntctl3d.ord
│   │       ├── ntdll.ord
│   │       ├── ntdsa.ord
│   │       ├── ntdsapi.ord
│   │       ├── ntdsatq.ord
│   │       ├── ntdsbcli.ord
│   │       ├── ntdsetup.ord
│   │       ├── ntfrsapi.ord
│   │       ├── ntlanman.ord
│   │       ├── ntlanui.ord
│   │       ├── ntlanui2.ord
│   │       ├── ntlmssps.ord
│   │       ├── ntlsapi.ord
│   │       ├── ntmarta.ord
│   │       ├── ntmsapi.ord
│   │       ├── ntoskrnl.exe.ord
│   │       ├── ntoskrnl.ord
│   │       ├── ntprint.ord
│   │       ├── ntsdexts.ord
│   │       ├── ntshrui.ord
│   │       ├── ntvdm.exe.ord
│   │       ├── ntvdm64.ord
│   │       ├── nwapp16.ord
│   │       ├── nwappw95.ord
│   │       ├── nwappwnt.ord
│   │       ├── nwcfg.ord
│   │       ├── nwipxspx.ord
│   │       ├── nwmon.ord
│   │       ├── nwprint.ord
│   │       ├── nwsevent.ord
│   │       ├── nwslib.ord
│   │       ├── oakley.ord
│   │       ├── objsel.ord
│   │       ├── oc30.ord
│   │       ├── occache.ord
│   │       ├── ocmanage.ord
│   │       ├── odbc16gt.ord
│   │       ├── odbc32.ord
│   │       ├── odbc32gt.ord
│   │       ├── odbcbcp.ord
│   │       ├── odbcconf.ord
│   │       ├── odbccp32.ord
│   │       ├── odbccr32.ord
│   │       ├── odbccu32.ord
│   │       ├── odbcji32.ord
│   │       ├── odbcjt32.ord
│   │       ├── odbctl32.ord
│   │       ├── odbctrac.ord
│   │       ├── oddbse32.ord
│   │       ├── odexl32.ord
│   │       ├── odfox32.ord
│   │       ├── odpdx32.ord
│   │       ├── odtext32.ord
│   │       ├── offfilt.ord
│   │       ├── oiadm400.ord
│   │       ├── oicom400.ord
│   │       ├── oidis400.ord
│   │       ├── oifil400.ord
│   │       ├── oigfs400.ord
│   │       ├── oiprt400.ord
│   │       ├── oislb400.ord
│   │       ├── oissq400.ord
│   │       ├── oitwa400.ord
│   │       ├── oiui400.ord
│   │       ├── ole2.ord
│   │       ├── ole2conv.ord
│   │       ├── ole2disp.ord
│   │       ├── ole2nls.ord
│   │       ├── ole32.ord
│   │       ├── oleacc.ord
│   │       ├── oleaut32.ord
│   │       ├── olecli.ord
│   │       ├── olecli32.ord
│   │       ├── olecnv32.ord
│   │       ├── oledlg.ord
│   │       ├── oleprn.ord
│   │       ├── olepro32.ord
│   │       ├── olesvr.ord
│   │       ├── olesvr32.ord
│   │       ├── oleswr.ord
│   │       ├── olethk32.ord
│   │       ├── opengl32.ord
│   │       ├── oprghdlr.ord
│   │       ├── osuninst.ord
│   │       ├── outlwab.ord
│   │       ├── panmap.ord
│   │       ├── parser.ord
│   │       ├── passfilt.ord
│   │       ├── pautoenr.ord
│   │       ├── pciidex.ord
│   │       ├── pdh.ord
│   │       ├── penwin.ord
│   │       ├── perfctrs.ord
│   │       ├── perfdisk.ord
│   │       ├── perfnet.ord
│   │       ├── perfos.ord
│   │       ├── perfproc.ord
│   │       ├── perfts.ord
│   │       ├── photowiz.ord
│   │       ├── pid.ord
│   │       ├── pidgen.ord
│   │       ├── pjlmon.ord
│   │       ├── pkiview.ord
│   │       ├── plustab.ord
│   │       ├── pmailext.ord
│   │       ├── pmspl.ord
│   │       ├── pngfilt.ord
│   │       ├── pointer.ord
│   │       ├── polstore.ord
│   │       ├── portcls.ord
│   │       ├── powrprof.ord
│   │       ├── ppcload.ord
│   │       ├── ppuninst.ord
│   │       ├── ppvexp.ord
│   │       ├── prflbmsg.ord
│   │       ├── printui.ord
│   │       ├── profext.ord
│   │       ├── profmap.ord
│   │       ├── prokdd.ord
│   │       ├── propci.ord
│   │       ├── prtwin16.ord
│   │       ├── prtwin32.ord
│   │       ├── psapi.ord
│   │       ├── psbase.ord
│   │       ├── pschdprf.ord
│   │       ├── psnppagn.ord
│   │       ├── pstorec.ord
│   │       ├── pstorsvc.ord
│   │       ├── psxdll.ord
│   │       ├── ptilink.ord
│   │       ├── pubole32.ord
│   │       ├── qasf.ord
│   │       ├── qmgrprxy.ord
│   │       ├── qosname.ord
│   │       ├── quartz.ord
│   │       ├── query.ord
│   │       ├── r81wdet.ord
│   │       ├── rapi.ord
│   │       ├── rasadhlp.ord
│   │       ├── rasapi32.ord
│   │       ├── rasauto.ord
│   │       ├── rascfg.ord
│   │       ├── raschap.ord
│   │       ├── rasctrs.ord
│   │       ├── rasdlg.ord
│   │       ├── rasfil32.ord
│   │       ├── rasman.ord
│   │       ├── rasmans.ord
│   │       ├── rasmontr.ord
│   │       ├── rasmxs.ord
│   │       ├── rasppp.ord
│   │       ├── rasrad.ord
│   │       ├── rassapi.ord
│   │       ├── rasser.ord
│   │       ├── rasshell.ord
│   │       ├── rastapi.ord
│   │       ├── rastls.ord
│   │       ├── rasuser.ord
│   │       ├── rdocurs.ord
│   │       ├── rdpsnd.ord
│   │       ├── regapi.ord
│   │       ├── regsvc.ord
│   │       ├── regwizc.ord
│   │       ├── rend.ord
│   │       ├── resutils.ord
│   │       ├── riched20.ord
│   │       ├── rnr20.ord
│   │       ├── routetab.ord
│   │       ├── rpcdbg.ord
│   │       ├── rpcfilt.ord
│   │       ├── rpcltc1.ord
│   │       ├── rpcltc8.ord
│   │       ├── rpcltccm.ord
│   │       ├── rpclts1.ord
│   │       ├── rpclts3.ord
│   │       ├── rpcltscm.ord
│   │       ├── rpcmqcl.ord
│   │       ├── rpcmqsvr.ord
│   │       ├── rpcns4.ord
│   │       ├── rpcnsh.ord
│   │       ├── rpcrt4.ord
│   │       ├── rsabase.ord
│   │       ├── rsaenh.ord
│   │       ├── rshx32.ord
│   │       ├── rtm.ord
│   │       ├── rtutils.ord
│   │       ├── samlib.ord
│   │       ├── samsrv.ord
│   │       ├── saport.ord
│   │       ├── sbeio.ord
│   │       ├── scarddlg.ord
│   │       ├── sccbase.ord
│   │       ├── sccsccp.ord
│   │       ├── scecli.ord
│   │       ├── scesrv.ord
│   │       ├── schannel.ord
│   │       ├── schedsvc.ord
│   │       ├── sclgntfy.ord
│   │       ├── scp32.ord
│   │       ├── scredir.ord
│   │       ├── scripto.ord
│   │       ├── scriptpw.ord
│   │       ├── scrobj.ord
│   │       ├── scrptutl.ord
│   │       ├── scrrun.ord
│   │       ├── scsiport.ord
│   │       ├── sdpblb.ord
│   │       ├── seclogon.ord
│   │       ├── secsspi.ord
│   │       ├── secur32.ord
│   │       ├── security.ord
│   │       ├── sendcmsg.ord
│   │       ├── sendmail.ord
│   │       ├── sens.ord
│   │       ├── sensapi.ord
│   │       ├── senscfg.ord
│   │       ├── serialui.ord
│   │       ├── servdeps.ord
│   │       ├── serwvdrv.ord
│   │       ├── setupapi.ord
│   │       ├── setupdll.ord
│   │       ├── sfc.ord
│   │       ├── sfc_os.ord
│   │       ├── sfcfiles.ord
│   │       ├── sfmapi.ord
│   │       ├── sfmatcfg.ord
│   │       ├── sfmutil.ord
│   │       ├── shcompui.ord
│   │       ├── shdocvw.ord
│   │       ├── shell.ord
│   │       ├── shell32.ord
│   │       ├── shfolder.ord
│   │       ├── shgina.ord
│   │       ├── shimeng.ord
│   │       ├── shimgvw.ord
│   │       ├── shlwapi.ord
│   │       ├── shmedia.ord
│   │       ├── shscrap.ord
│   │       ├── shsvcs.ord
│   │       ├── sigtab.ord
│   │       ├── sirenacm.ord
│   │       ├── sisbkup.ord
│   │       ├── skdll.ord
│   │       ├── slayerxp.ord
│   │       ├── smclib.ord
│   │       ├── smlogcfg.ord
│   │       ├── snapin32.ord
│   │       ├── sndblst.ord
│   │       ├── sndsys32.ord
│   │       ├── snmpapi.ord
│   │       ├── snmpsnap.ord
│   │       ├── softpub.ord
│   │       ├── sound.ord
│   │       ├── spinbtn.ord
│   │       ├── spoolss.ord
│   │       ├── sporder.ord
│   │       ├── sqlsrv32.ord
│   │       ├── sqlunirl.ord
│   │       ├── sqlwid.ord
│   │       ├── sqlwoa.ord
│   │       ├── srclient.ord
│   │       ├── srvsvc.ord
│   │       ├── ssdpapi.ord
│   │       ├── ssdpsrv.ord
│   │       ├── stboglnt.ord
│   │       ├── stclient.ord
│   │       ├── stdvcl40.ord
│   │       ├── sti.ord
│   │       ├── sti_ci.ord
│   │       ├── stobject.ord
│   │       ├── storage.ord
│   │       ├── storport.ord
│   │       ├── stream.ord
│   │       ├── streamci.ord
│   │       ├── streams.ord
│   │       ├── stress.ord
│   │       ├── strmdll.ord
│   │       ├── strmfilt.ord
│   │       ├── svcpack.ord
│   │       ├── sxs.ord
│   │       ├── synceng.ord
│   │       ├── syncui.ord
│   │       ├── sysinv.ord
│   │       ├── syssetup.ord
│   │       ├── t1instal.ord
│   │       ├── t2embed.ord
│   │       ├── tape.ord
│   │       ├── tapi.ord
│   │       ├── tapi3.ord
│   │       ├── tapi32.ord
│   │       ├── tapiperf.ord
│   │       ├── tapisrv.ord
│   │       ├── tcpcfg.ord
│   │       ├── tcpip.ord
│   │       ├── tcpip6.ord
│   │       ├── tcpmib.ord
│   │       ├── tcpmon.ord
│   │       ├── tcpmonui.ord
│   │       ├── tdi.ord
│   │       ├── termmgr.ord
│   │       ├── thawbrkr.ord
│   │       ├── themeui.ord
│   │       ├── tli_win.ord
│   │       ├── toolhelp.ord
│   │       ├── traffic.ord
│   │       ├── trkwks.ord
│   │       ├── tsappcmp.ord
│   │       ├── tsbyuv.ord
│   │       ├── tsd32.ord
│   │       ├── tsec.ord
│   │       ├── twain_32.ord
│   │       ├── twext.ord
│   │       ├── txflog.ord
│   │       ├── typelib.ord
│   │       ├── udhisapi.ord
│   │       ├── ufat.ord
│   │       ├── uicom.ord
│   │       ├── ulib.ord
│   │       ├── umandlg.ord
│   │       ├── umdmxfrm.ord
│   │       ├── umpnpmgr.ord
│   │       ├── unidrv.ord
│   │       ├── uniime.ord
│   │       ├── unimdmat.ord
│   │       ├── uniplat.ord
│   │       ├── untfs.ord
│   │       ├── upnp.ord
│   │       ├── upnphost.ord
│   │       ├── upnpui.ord
│   │       ├── ureg.ord
│   │       ├── url.ord
│   │       ├── urlmon.ord
│   │       ├── usbcamd.ord
│   │       ├── usbcamd2.ord
│   │       ├── usbd.ord
│   │       ├── usbmon.ord
│   │       ├── user.ord
│   │       ├── user32.ord
│   │       ├── userenv.ord
│   │       ├── usp10.ord
│   │       ├── utildll.ord
│   │       ├── uxtheme.ord
│   │       ├── vb5stkit.ord
│   │       ├── vbajet32.ord
│   │       ├── vbame.ord
│   │       ├── vbar332.ord
│   │       ├── vbscript.ord
│   │       ├── vcdex.ord
│   │       ├── vcfidl32.ord
│   │       ├── vcfiwz32.ord
│   │       ├── vdmdbg.ord
│   │       ├── vdmredir.ord
│   │       ├── vds_ps.ord
│   │       ├── ver.ord
│   │       ├── verifier.ord
│   │       ├── version.ord
│   │       ├── vfpodbc.ord
│   │       ├── videoprt.ord
│   │       ├── vkbd.ord
│   │       ├── vlpt.ord
│   │       ├── vspell32.ord
│   │       ├── vss_ps.ord
│   │       ├── vssapi.ord
│   │       ├── vwipxspx.ord
│   │       ├── w32time.ord
│   │       ├── w32topl.ord
│   │       ├── w3ssl.ord
│   │       ├── w95upgnt.ord
│   │       ├── wangcmn.ord
│   │       ├── wangshl.ord
│   │       ├── wavemsp.ord
│   │       ├── wdfapi.ord
│   │       ├── wdigest.ord
│   │       ├── webcheck.ord
│   │       ├── webclnt.ord
│   │       ├── webhits.ord
│   │       ├── webvw.ord
│   │       ├── wiadefui.ord
│   │       ├── wiadss.ord
│   │       ├── wiarpc.ord
│   │       ├── wiascr.ord
│   │       ├── wiaservc.ord
│   │       ├── wiashext.ord
│   │       ├── wiavideo.ord
│   │       ├── wiavusd.ord
│   │       ├── wifeman.ord
│   │       ├── win32k.ord
│   │       ├── win32s16.ord
│   │       ├── win87em.ord
│   │       ├── winfax.ord
│   │       ├── wininet.ord
│   │       ├── winipsec.ord
│   │       ├── winmem32.ord
│   │       ├── winmm.ord
│   │       ├── winnls.ord
│   │       ├── winntbbu.ord
│   │       ├── winrnr.ord
│   │       ├── winscard.ord
│   │       ├── winshfhc.ord
│   │       ├── winsock.ord
│   │       ├── winspool.drv.ord
│   │       ├── winspool.ord
│   │       ├── winsrv.ord
│   │       ├── winsta.ord
│   │       ├── winstrm.ord
│   │       ├── wintrust.ord
│   │       ├── wkssvc.ord
│   │       ├── wlanmon.ord
│   │       ├── wldap32.ord
│   │       ├── wlsnp.ord
│   │       ├── wlstore.ord
│   │       ├── wmadmod.ord
│   │       ├── wmadmoe.ord
│   │       ├── wmasf.ord
│   │       ├── wmdmlog.ord
│   │       ├── wmdmps.ord
│   │       ├── wmdrmdev.ord
│   │       ├── wmdrmnet.ord
│   │       ├── wmi.ord
│   │       ├── wmidx.ord
│   │       ├── wmilib.ord
│   │       ├── wmiprop.ord
│   │       ├── wmiscmgr.ord
│   │       ├── wmnetmgr.ord
│   │       ├── wmp.ord
│   │       ├── wmpasf.ord
│   │       ├── wmpcd.ord
│   │       ├── wmpcore.ord
│   │       ├── wmpdxm.ord
│   │       ├── wmpencen.ord
│   │       ├── wmpns.ord
│   │       ├── wmpshell.ord
│   │       ├── wmpsrcwp.ord
│   │       ├── wmpui.ord
│   │       ├── wmsdmod.ord
│   │       ├── wmsdmoe2.ord
│   │       ├── wmspdmod.ord
│   │       ├── wmspdmoe.ord
│   │       ├── wmstream.ord
│   │       ├── wmvadvd.ord
│   │       ├── wmvadve.ord
│   │       ├── wmvcore.ord
│   │       ├── wmvdmod.ord
│   │       ├── wmvdmoe2.ord
│   │       ├── wow32.ord
│   │       ├── wowfax.ord
│   │       ├── wowfaxui.ord
│   │       ├── wpd_ci.ord
│   │       ├── wpdsp.ord
│   │       ├── ws2_32.ord
│   │       ├── ws2help.ord
│   │       ├── wsecedit.ord
│   │       ├── wshatm.ord
│   │       ├── wshbth.ord
│   │       ├── wshcon.ord
│   │       ├── wshext.ord
│   │       ├── wship6.ord
│   │       ├── wshisn.ord
│   │       ├── wshisotp.ord
│   │       ├── wshnetbs.ord
│   │       ├── wshqos.ord
│   │       ├── wshrm.ord
│   │       ├── wshtcpip.ord
│   │       ├── wsihk32.ord
│   │       ├── wsiwin32.ord
│   │       ├── wsnmp32.ord
│   │       ├── wsock32.ord
│   │       ├── wsock32n.ord
│   │       ├── wstdecod.ord
│   │       ├── wtsapi32.ord
│   │       ├── wuapi.ord
│   │       ├── wuaueng.ord
│   │       ├── wups.ord
│   │       ├── wups2.ord
│   │       ├── wuweb.ord
│   │       ├── wzcdlg.ord
│   │       ├── wzcsapi.ord
│   │       ├── wzcsvc.ord
│   │       ├── xactsrv.ord
│   │       ├── xenroll.ord
│   │       ├── xfilexr.ord
│   │       ├── xmlprov.ord
│   │       ├── xmlprovi.ord
│   │       ├── xolehlp.ord
│   │       └── zipfldr.ord
│   ├── types/
│   │   ├── arm.json
│   │   ├── cstdlib.json
│   │   ├── linux.json
│   │   ├── windows.json
│   │   └── windrivers.json
│   └── yara_patterns/
│       ├── signsrch/
│       │   ├── signsrch.yara
│       │   └── signsrch_regex.yara
│       └── tools/
│           ├── elf/
│           │   ├── arm/
│           │   │   ├── compilers.yara
│           │   │   └── packers.yara
│           │   ├── arm64/
│           │   │   └── compilers.yara
│           │   ├── mips/
│           │   │   ├── compilers.yara
│           │   │   └── packers.yara
│           │   ├── mips64/
│           │   │   └── compilers.yara
│           │   ├── ppc/
│           │   │   ├── compilers.yara
│           │   │   └── packers.yara
│           │   ├── ppc64/
│           │   │   └── compilers.yara
│           │   ├── x64/
│           │   │   ├── compilers.yara
│           │   │   └── packers.yara
│           │   └── x86/
│           │       ├── compilers.yara
│           │       ├── installers.yara
│           │       └── packers.yara
│           ├── macho/
│           │   ├── arm/
│           │   │   ├── compilers.yara
│           │   │   └── packers.yara
│           │   ├── ppc/
│           │   │   ├── compilers.yara
│           │   │   └── packers.yara
│           │   ├── ppc64/
│           │   │   └── compilers.yara
│           │   ├── x64/
│           │   │   ├── compilers.yara
│           │   │   └── packers.yara
│           │   └── x86/
│           │       ├── compilers.yara
│           │       └── packers.yara
│           └── pe/
│               ├── arm/
│               │   ├── compilers.yara
│               │   └── packers.yara
│               ├── x64/
│               │   ├── compilers.yara
│               │   ├── installers.yara
│               │   └── packers.yara
│               └── x86/
│                   ├── compilers.yara
│                   ├── installers.yara
│                   └── packers.yara
└── tests/
    ├── CMakeLists.txt
    ├── bin2llvmir/
    │   ├── CMakeLists.txt
    │   ├── analyses/
    │   │   └── reaching_definitions_tests.cpp
    │   ├── optimizations/
    │   │   ├── asm_inst_remover/
    │   │   │   └── asm_inst_remover_tests.cpp
    │   │   ├── idioms_libgcc/
    │   │   │   └── idioms_libgcc_tests.cpp
    │   │   ├── inst_opt/
    │   │   │   ├── inst_opt_pass_tests.cpp
    │   │   │   └── inst_opt_tests.cpp
    │   │   ├── param_return/
    │   │   │   └── param_return_tests.cpp
    │   │   ├── stack_pointer_ops/
    │   │   │   └── stack_pointer_ops_tests.cpp
    │   │   ├── unreachable_funcs/
    │   │   │   └── unreachable_funcs_tests.cpp
    │   │   ├── value_protect/
    │   │   │   └── value_protect_test.cpp
    │   │   ├── writer_dsm/
    │   │   │   └── writer_dsm_tests.cpp
    │   │   ├── x86_addr_spaces/
    │   │   │   ├── x86_addr_spaces_pass_test.cpp
    │   │   │   └── x86_addr_spaces_test.cpp
    │   │   └── x87_fpu/
    │   │       └── x87_fpu_test.cpp
    │   ├── providers/
    │   │   ├── asm_instruction_tests.cpp
    │   │   ├── config_tests.cpp
    │   │   ├── debugformat_tests.cpp
    │   │   ├── demangler_tests.cpp
    │   │   ├── fileimage_tests.cpp
    │   │   ├── lti_tests.cpp
    │   │   └── names.cpp
    │   └── utils/
    │       ├── ctypes2llvm_type_tests.cpp
    │       ├── instcombine_tests.cpp
    │       ├── ir_modifier_tests.cpp
    │       ├── llvm_tests.cpp
    │       ├── llvmir_tests.h
    │       └── simplifycfg_tests.cpp
    ├── capstone2llvmir/
    │   ├── CMakeLists.txt
    │   ├── arm64_tests.cpp
    │   ├── arm_tests.cpp
    │   ├── capstone2llvmir_tests.h
    │   ├── mips_tests.cpp
    │   ├── powerpc_tests.cpp
    │   └── x86_tests.cpp
    ├── common/
    │   ├── CMakeLists.txt
    │   ├── address_tests.cpp
    │   ├── architecture_tests.cpp
    │   ├── calling_convention_tests.cpp
    │   ├── class_tests.cpp
    │   ├── file_format_tests.cpp
    │   ├── file_type_tests.cpp
    │   ├── function_tests.cpp
    │   ├── language_tests.cpp
    │   ├── object_tests.cpp
    │   ├── patterns_tests.cpp
    │   ├── range_tests.cpp
    │   ├── tool_info_tests.cpp
    │   └── type_tests.cpp
    ├── config/
    │   ├── CMakeLists.txt
    │   ├── config_tests.cpp
    │   └── doxygen.h
    ├── ctypes/
    │   ├── CMakeLists.txt
    │   ├── annotation_in_tests.cpp
    │   ├── annotation_inout_tests.cpp
    │   ├── annotation_optional_tests.cpp
    │   ├── annotation_out_tests.cpp
    │   ├── array_type_tests.cpp
    │   ├── call_convention_tests.cpp
    │   ├── composite_type_tests.cpp
    │   ├── context_tests.cpp
    │   ├── doxygen.h
    │   ├── enum_type_tests.cpp
    │   ├── floating_point_type_tests.cpp
    │   ├── function_declaration_tests.cpp
    │   ├── function_tests.cpp
    │   ├── function_type_tests.cpp
    │   ├── header_file_tests.cpp
    │   ├── integral_type_tests.cpp
    │   ├── member_tests.cpp
    │   ├── module_tests.cpp
    │   ├── parameter_tests.cpp
    │   ├── pointer_type.cpp
    │   ├── struct_type_tests.cpp
    │   ├── typedefed_type_tests.cpp
    │   ├── union_type_tests.cpp
    │   ├── unknown_type_tests.cpp
    │   ├── visit_all_visitor_tests.cpp
    │   └── void_type_tests.cpp
    ├── ctypesparser/
    │   ├── CMakeLists.txt
    │   ├── doxygen.h
    │   └── json_ctypes_parser_tests.cpp
    ├── demangler/
    │   ├── CMakeLists.txt
    │   ├── borland_ast_to_ctypes_tests.cpp
    │   ├── borland_context_tests.cpp
    │   ├── borland_tests.cpp
    │   ├── dem_test.h
    │   ├── gcc_tests.cpp
    │   ├── itanium_ast_to_ctypes_tests.cpp
    │   ├── ms_ast_to_ctypes_tests.cpp
    │   └── msvc_tests.cpp
    ├── fileformat/
    │   ├── CMakeLists.txt
    │   ├── coff_format_tests.cpp
    │   ├── elf_format_tests.cpp
    │   ├── fileformat_tests.h
    │   ├── format_detection_tests.cpp
    │   ├── format_factory_tests.cpp
    │   ├── intel_hex_format_20bit_tests.cpp
    │   ├── intel_hex_format_tests.cpp
    │   ├── intel_hex_token_test.cpp
    │   ├── macho_format_tests.cpp
    │   ├── pe_format_tests.cpp
    │   └── raw_data_format_tests.cpp
    ├── llvmir-emul/
    │   ├── CMakeLists.txt
    │   ├── llvmir_emul_tests.cpp
    │   └── llvmir_tests.h
    ├── llvmir2hll/
    │   ├── CMakeLists.txt
    │   ├── analysis/
    │   │   ├── alias_analysis/
    │   │   │   ├── alias_analyses/
    │   │   │   │   └── simple_alias_analysis_tests.cpp
    │   │   │   └── alias_analysis_mock.h
    │   │   ├── break_in_if_analysis_tests.cpp
    │   │   ├── goto_target_analysis_tests.cpp
    │   │   ├── indirect_func_ref_analysis_tests.cpp
    │   │   ├── null_pointer_analysis_tests.cpp
    │   │   ├── tests_with_value_analysis.h
    │   │   ├── value_analysis_tests.cpp
    │   │   ├── var_uses_visitor_tests.cpp
    │   │   └── written_into_globals_visitor_tests.cpp
    │   ├── config/
    │   │   ├── config_mock.h
    │   │   ├── config_tests.cpp
    │   │   └── configs/
    │   │       └── json_config_tests.cpp
    │   ├── evaluator/
    │   │   └── arithm_expr_evaluators/
    │   │       ├── c_arithm_expr_evaluator_tests.cpp
    │   │       └── strict_arithm_expr_evaluator_tests.cpp
    │   ├── graphs/
    │   │   └── cfg/
    │   │       ├── cfg_builders/
    │   │       │   └── non_recursive_cfg_builder_tests.cpp
    │   │       └── cfg_traversals/
    │   │           └── lhs_rhs_uses_cfg_traversal_tests.cpp
    │   ├── hll/
    │   │   ├── bracket_managers/
    │   │   │   ├── c_bracket_manager_tests.cpp
    │   │   │   └── no_bracket_manager_tests.cpp
    │   │   ├── compound_op_managers/
    │   │   │   ├── c_compound_op_manager_tests.cpp
    │   │   │   ├── compound_op_manager_tests.cpp
    │   │   │   ├── compound_op_manager_tests.h
    │   │   │   └── no_compound_op_manager_tests.cpp
    │   │   ├── hll_writers/
    │   │   │   ├── c_hll_writer_tests.cpp
    │   │   │   ├── hll_writer_tests.cpp
    │   │   │   └── hll_writer_tests.h
    │   │   └── output_managers/
    │   │       ├── json_manager_tests.cpp
    │   │       ├── output_manager_tests.cpp
    │   │       ├── output_manager_tests.h
    │   │       └── plain_manager_tests.cpp
    │   ├── ir/
    │   │   ├── array_index_op_expr_tests.cpp
    │   │   ├── array_type_tests.cpp
    │   │   ├── assertions.h
    │   │   ├── assign_stmt_tests.cpp
    │   │   ├── call_expr_tests.cpp
    │   │   ├── call_stmt_tests.cpp
    │   │   ├── const_array_tests.cpp
    │   │   ├── const_bool_tests.cpp
    │   │   ├── const_float_tests.cpp
    │   │   ├── const_int_tests.cpp
    │   │   ├── const_string_tests.cpp
    │   │   ├── const_symbol_tests.cpp
    │   │   ├── expression_tests.cpp
    │   │   ├── function_builder_tests.cpp
    │   │   ├── function_tests.cpp
    │   │   ├── function_type_tests.cpp
    │   │   ├── global_var_def_tests.cpp
    │   │   ├── if_stmt_tests.cpp
    │   │   ├── int_type_tests.cpp
    │   │   ├── module_tests.cpp
    │   │   ├── return_stmt_tests.cpp
    │   │   ├── statement_tests.cpp
    │   │   ├── string_type_tests.cpp
    │   │   ├── struct_type_tests.cpp
    │   │   ├── switch_stmt_tests.cpp
    │   │   ├── tests_with_module.cpp
    │   │   ├── tests_with_module.h
    │   │   ├── ufor_loop_stmt.cpp
    │   │   ├── unknown_type_tests.cpp
    │   │   ├── variable_tests.cpp
    │   │   └── void_type_tests.cpp
    │   ├── llvm/
    │   │   ├── llvm_intrinsic_converter_tests.cpp
    │   │   ├── llvm_support_tests.cpp
    │   │   ├── llvmir2bir_converter/
    │   │   │   ├── basic_block_converter_tests.cpp
    │   │   │   ├── cfg_node_tests.cpp
    │   │   │   ├── labels_handler_tests.cpp
    │   │   │   ├── llvm_value_converter_tests/
    │   │   │   │   ├── llvm_constant_converter_tests.cpp
    │   │   │   │   ├── llvm_constant_converter_tests_by_llvmir.cpp
    │   │   │   │   ├── llvm_fcmp_converter_constants_tests.cpp
    │   │   │   │   ├── llvm_fcmp_converter_tests.cpp
    │   │   │   │   ├── llvm_instruction_converter_constants_tests.cpp
    │   │   │   │   ├── llvm_instruction_converter_tests.cpp
    │   │   │   │   ├── llvm_type_converter_tests.cpp
    │   │   │   │   ├── tests_with_llvm_value_converter.cpp
    │   │   │   │   └── tests_with_llvm_value_converter.h
    │   │   │   ├── structure_converter_tests.cpp
    │   │   │   └── variables_manager_tests.cpp
    │   │   ├── llvmir2bir_converter_tests/
    │   │   │   ├── base_tests.cpp
    │   │   │   ├── base_tests.h
    │   │   │   ├── functions_tests.cpp
    │   │   │   └── glob_vars_tests.cpp
    │   │   └── string_conversions_tests.cpp
    │   ├── obtainer/
    │   │   └── call_info_obtainer_mock.h
    │   ├── optimizer/
    │   │   └── optimizers/
    │   │       ├── bit_op_to_log_op_optimizer_tests.cpp
    │   │       ├── bit_shift_optimizer_tests.cpp
    │   │       ├── break_continue_return_optimizer_tests.cpp
    │   │       ├── c_array_arg_optimizer_tests.cpp
    │   │       ├── copy_propagation_optimizer_tests.cpp
    │   │       ├── dead_code_optimizer_tests.cpp
    │   │       ├── dead_local_assign_optimizer_tests.cpp
    │   │       ├── deref_address_optimizer_tests.cpp
    │   │       ├── deref_to_array_index_optimizer_tests.cpp
    │   │       ├── empty_array_to_string_optimizer_tests.cpp
    │   │       ├── empty_stmt_optimizer_tests.cpp
    │   │       ├── goto_stmt_optimizer_tests.cpp
    │   │       ├── if_before_loop_optimizer_tests.cpp
    │   │       ├── if_structure_optimizer_tests.cpp
    │   │       ├── if_to_switch_optimizer_tests.cpp
    │   │       ├── llvm_intrinsics_optimizer_tests.cpp
    │   │       ├── loop_last_continue_optimizer_tests.cpp
    │   │       ├── no_init_var_def_optimizer_tests.cpp
    │   │       ├── pre_while_true_loop_conv_optimizer_tests.cpp
    │   │       ├── remove_all_casts_optimizer_tests.cpp
    │   │       ├── remove_useless_casts_optimizer_tests.cpp
    │   │       ├── self_assign_optimizer_tests.cpp
    │   │       ├── simple_copy_propagation_optimizer_tests.cpp
    │   │       ├── simplify_arithm_expr/
    │   │       │   ├── bool_comparison_optimizer_tests.cpp
    │   │       │   ├── change_order_of_operands_sub_optimizer_tests.cpp
    │   │       │   ├── const_operator_const_sub_optimizer_tests.cpp
    │   │       │   ├── equal_operands_sub_optimizer_tests.cpp
    │   │       │   ├── negation_operator_sub_optimizer_tests.cpp
    │   │       │   ├── negative_operand_sub_optimizer_tests.cpp
    │   │       │   ├── one_sub_optimizer_tests.cpp
    │   │       │   ├── ternary_operator_sub_optimizer_tests.cpp
    │   │       │   ├── three_operands_sub_optimizer_tests.cpp
    │   │       │   └── zero_sub_optimizer_tests.cpp
    │   │       ├── simplify_arithm_expr_optimizer_tests.cpp
    │   │       ├── unused_global_var_optimizer_tests.cpp
    │   │       ├── var_def_for_loop_optimizer_tests.cpp
    │   │       ├── var_def_stmt_optimizer_tests.cpp
    │   │       ├── void_return_optimizer_tests.cpp
    │   │       ├── while_true_to_for_loop_optimizer_tests.cpp
    │   │       ├── while_true_to_ufor_loop_optimizer_tests.cpp
    │   │       └── while_true_to_while_cond_optimizer_tests.cpp
    │   ├── pattern/
    │   │   ├── pattern_finder_mock.h
    │   │   ├── pattern_finder_runner_mock.h
    │   │   ├── pattern_finder_runner_tests.cpp
    │   │   ├── pattern_finder_runners/
    │   │   │   ├── cli_pattern_finder_runner_tests.cpp
    │   │   │   └── no_action_pattern_finder_runner_tests.cpp
    │   │   ├── pattern_finder_tests.cpp
    │   │   ├── pattern_finders/
    │   │   │   ├── api_call/
    │   │   │   │   ├── api_call_info_seq_parser_tests.cpp
    │   │   │   │   ├── api_call_info_seq_tests.cpp
    │   │   │   │   ├── api_call_info_tests.cpp
    │   │   │   │   └── api_call_seq_finder_mock.h
    │   │   │   ├── api_call_pattern_finder_tests.cpp
    │   │   │   └── api_call_seq_pattern_finder_tests.cpp
    │   │   ├── pattern_mock.h
    │   │   └── patterns/
    │   │       └── stmts_pattern_tests.cpp
    │   ├── semantics/
    │   │   ├── semantics/
    │   │   │   ├── compound_semantics_tests.cpp
    │   │   │   ├── default_semantics_tests.cpp
    │   │   │   ├── gcc_general_semantics_tests.cpp
    │   │   │   ├── libc_semantics_tests.cpp
    │   │   │   └── win_api_semantics_tests.cpp
    │   │   └── semantics_mock.h
    │   ├── support/
    │   │   ├── const_symbol_converter_tests.cpp
    │   │   ├── global_vars_sorter_tests.cpp
    │   │   ├── headers_for_declared_funcs_tests.cpp
    │   │   ├── library_funcs_remover_tests.cpp
    │   │   ├── observer_mock.h
    │   │   ├── struct_types_sorter_tests.cpp
    │   │   └── unreachable_code_in_cfg_remover_tests.cpp
    │   ├── utils/
    │   │   ├── ir_tests.cpp
    │   │   └── string_tests.cpp
    │   ├── validator/
    │   │   └── validators/
    │   │       ├── break_outside_loop_validator_tests.cpp
    │   │       ├── no_global_var_def_validator_tests.cpp
    │   │       └── return_validator_tests.cpp
    │   ├── var_name_gen/
    │   │   └── var_name_gen_mock.h
    │   └── var_renamer/
    │       ├── tests_with_var_name_gen_and_var_renamer.h
    │       ├── var_renamer_tests.cpp
    │       └── var_renamers/
    │           ├── address_var_renamer_tests.cpp
    │           ├── hungarian_var_renamer_tests.cpp
    │           ├── readable_var_renamer_tests.cpp
    │           ├── simple_var_renamer_tests.cpp
    │           └── unified_var_renamer_tests.cpp
    ├── loader/
    │   ├── CMakeLists.txt
    │   ├── name_generator_tests.cpp
    │   ├── overlap_resolver_tests.cpp
    │   ├── segment_data_source_tests.cpp
    │   └── segment_tests.cpp
    ├── serdes/
    │   ├── CMakeLists.txt
    │   ├── calling_convention_tests.cpp
    │   ├── class_tests.cpp
    │   └── pattern_tests.cpp
    ├── unpacker/
    │   ├── CMakeLists.txt
    │   ├── dynamic_buffer_tests.cpp
    │   └── signature_tests.cpp
    └── utils/
        ├── CMakeLists.txt
        ├── alignment_tests.cpp
        ├── array_tests.cpp
        ├── binary_path_tests.cpp
        ├── byte_value_storage_tests.cpp
        ├── container_tests.cpp
        ├── conversion_tests.cpp
        ├── doxygen.h
        ├── filter_iterator_tests.cpp
        ├── math_tests.cpp
        ├── memory_tests.cpp
        ├── scope_exit_tests.cpp
        ├── string_tests.cpp
        ├── time_tests.cpp
        └── version_tests.cpp

================================================
FILE CONTENTS
================================================

================================================
FILE: .clang-format
================================================
---
Language: Cpp
AccessModifierOffset: -4
AlignAfterOpenBracket: AlwaysBreak
AlignEscapedNewlines: Left
AlignOperands: AlignAfterOperator
AlignTrailingComments: true
AllowShortBlocksOnASingleLine: Never
AllowShortCaseLabelsOnASingleLine: true
AllowShortFunctionsOnASingleLine: Empty
AllowShortIfStatementsOnASingleLine: Never
AllowShortIfStatementsOnASingleLine: true
AllowShortLoopsOnASingleLine: false
AlwaysBreakBeforeMultilineStrings: true
AlwaysBreakTemplateDeclarations: false
AlwaysBreakTemplateDeclarations: true
BinPackArguments: false
BinPackParameters: false
BraceWrapping:
  AfterNamespace: false
  AfterClass: false
  AfterEnum: true
  AfterStruct: true
  AfterControlStatement: Always
  AfterFunction: true
  AfterExternBlock: false
  BeforeCatch: true
  BeforeElse: true
  BeforeLambdaBody: false
  BeforeWhile: true
  SplitEmptyFunction: false
BreakBeforeBinaryOperators: NonAssignment
BreakBeforeBraces: Custom
BreakBeforeTernaryOperators: true
BreakConstructorInitializers: AfterColon
ColumnLimit: 120
CommentPragmas: '^ IWYU pragma:'
ConstructorInitializerAllOnOneLineOrOnePerLine: false
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
Cpp11BracedListStyle: true
DerivePointerAlignment: false
EmptyLineBeforeAccessModifier: LogicalBlock
FixNamespaceComments: true
ForEachMacros: [ foreach, Q_FOREACH, BOOST_FOREACH ]
IndentCaseLabels: false
IndentFunctionDeclarationAfterType: false
IndentWidth: 4
IndentWrappedFunctionNames: false
KeepEmptyLinesAtTheStartOfBlocks: false
MaxEmptyLinesToKeep: 2
NamespaceIndentation: None
PenaltyBreakBeforeFirstCallParameter: 79
PenaltyBreakComment: 300
PenaltyBreakFirstLessLess: 120
PenaltyBreakString: 1000
PenaltyExcessCharacter: 1000000
PenaltyReturnTypeOnItsOwnLine: 60
PointerAlignment: Left
SpaceAfterCStyleCast: false
SpaceBeforeAssignmentOperators: true
SpaceBeforeCaseColon: false
SpaceBeforeCtorInitializerColon: false
SpaceBeforeInheritanceColon: true
SpaceBeforeParens: ControlStatements
SpaceBeforeRangeBasedForLoopColon: false
SpaceBeforeSquareBrackets: false
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 1
SpacesInAngles: false
SpacesInContainerLiterals: false
SpacesInCStyleCastParentheses: false
SpacesInParentheses: false
SpacesInSquareBrackets: false
Standard: Auto
TabWidth: 4
UseTab: ForContinuationAndIndentation
...


================================================
FILE: .github/workflows/Linux/build.sh
================================================
#!/usr/bin/bash

RD_DIR=$PWD
mkdir -p build
cd build

cmake $RD_DIR -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DRETDEC_TESTS=on -DCMAKE_INSTALL_PREFIX=$RD_DIR/install
make -j$(nproc) install


================================================
FILE: .github/workflows/Linux/ignore_Debug
================================================


================================================
FILE: .github/workflows/Linux/ignore_Release
================================================


================================================
FILE: .github/workflows/Linux/install-deps.sh
================================================
#!/usr/bin/bash

set -x

sudo apt-get update
sudo apt-get install openssl gcc-multilib python3-venv doxygen graphviz libncurses5

doxygen --version


================================================
FILE: .github/workflows/Linux/prepare-clang.sh
================================================
#!/usr/bin/bash

wget --no-proxy https://releases.llvm.org/3.9.1/clang+llvm-3.9.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz -O llvm.tar.xz
tar -xJf llvm.tar.xz
mv clang* $CLANG_DIR_OUT


================================================
FILE: .github/workflows/Linux/run-tests.sh
================================================
#!/usr/bin/bash

set -x

IGNORE_TESTS=$(cat $1 | tr '\n' ',' | sed 's/,$//' | tr '.' '/')

cat <<EOF > $PWD/retdec-regression-tests-framework/config_local.ini
[runner]
; Path to the extracted Clang package containing subdirectories such as bin, include, lib, share.
clang_dir = $PWD/clang
; Path to the cloned repository containing regression tests.
tests_root_dir = $PWD/retdec-regression-tests
; Path to the RetDec's installation directory.
retdec_install_dir = $PWD/install
; Exclude directories
excluded_dirs = $IGNORE_TESTS
EOF

cd "$PWD/retdec-regression-tests-framework"

python3 -m venv .venv

. .venv/bin/activate
pip3 install -r requirements.txt

python3 ./runner.py


================================================
FILE: .github/workflows/Windows/build.sh
================================================
#!/usr/bin/bash

RD_DIR=$PWD

# The C:/ drive on Windows has significanly larger space to work with.
mkdir -p /c/build
cd /c/build

cmake $RD_DIR -DRETDEC_TESTS=on -DCMAKE_INSTALL_PREFIX="$RD_DIR/install" -DRETDEC_DEV_TOOLS=ON
cmake --build . -j $NUMBER_OF_PROCESSORS --config $BUILD_TYPE -- -m
cmake --build . --config $BUILD_TYPE --target "$PWD/install"


================================================
FILE: .github/workflows/Windows/ignore_Debug
================================================
bugs.bin2llvmir-type-recovery-analysis-segfault
bugs.issue-184-elf-thunks
bugs.issue-197-empty-selected-fnc-body
bugs.llvmir-syntax-expected-top-level-entity
bugs.phi-node-error-replaceAllUsesWith
bugs.segments-assert
features.invalid-entrypoint-decompilation
features.macho-archives
features.macho
features.new-static-code-signatures
features.raw.binaries
samples.bashbot
tools.fileinfo.bugs.corrupted-coff-tables
tools.fileinfo.bugs.huge-memory-consumption
integration.float-operations
external.unit-tests


================================================
FILE: .github/workflows/Windows/ignore_Release
================================================


================================================
FILE: .github/workflows/Windows/install-deps.sh
================================================
#!/usr/bin/bash

rm -rf "/c/Program Files/OpenSSL"

choco install --no-progress openssl 7zip

# Chocolatey installs OpenSSL into subfolder MD which isn't found with
# FindOpenSSL.cmake in the version we have available. This moves the files
# where the finder expects them. Otherwise mismatch between OpenSSL versions
# can and will happen.
cp "/c/Program Files/OpenSSL/lib/VC/x64/MD"/* "/c/Program Files/OpenSSL/lib/VC/"


================================================
FILE: .github/workflows/Windows/prepare-clang.sh
================================================
#!/usr/bin/bash

curl https://releases.llvm.org/3.9.1/LLVM-3.9.1-win64.exe -o llvm.exe

# Save download path.
download_path=$PWD

# Create output dir for clang.
mkdir -p $CLANG_DIR_OUT
cd $CLANG_DIR_OUT

# Extract clang there.
7z x $download_path/llvm.exe


================================================
FILE: .github/workflows/Windows/run-tests.sh
================================================
set -x

IGNORE_TESTS=$(cat $1 | tr -d '\r' | tr '\n' ',' | sed 's/,$//' | tr '.' '\\')

# We need to specify each path in Windows format.
WIN_PWD=D:$(echo $PWD | sed 's/^\/d//' | sed 's/\//\\/g')

cat <<EOF > $PWD/retdec-regression-tests-framework/config_local.ini
[runner]
; Path to the extracted Clang package containing subdirectories such as bin, include, lib, share.
clang_dir = $WIN_PWD\\clang
; Path to the cloned repository containing regression tests.
tests_root_dir = $WIN_PWD\\retdec-regression-tests
; Path to the RetDec's installation directory.
retdec_install_dir = $WIN_PWD\\install
; Exclude directories
excluded_dirs = $IGNORE_TESTS
EOF

cd "$PWD/retdec-regression-tests-framework"

python -m pip install virtualenv
python -m venv .venv

if [ -d .venv/Scripts ]; then
    source .venv/Scripts/activate
else
    source .venv/bin/activate
fi
pip3 install -r requirements.txt

python3 ./runner.py


================================================
FILE: .github/workflows/common/prepare-retdec-tests.sh
================================================
#!/usr/bin/bash

RD=$PWD

# Get current branch of RetDec
# > GITHUB_BASE_REF is set on PR, empty otherwise.
RD_BRANCH=${GITHUB_HEAD_REF:-${GITHUB_REF_NAME}}

echo "RetDec branch: $RD_BRANCH"

# Clone regression tests.
git clone https://github.com/avast/retdec-regression-tests
cd retdec-regression-tests

# Checkout the same branch if possible.
git checkout "$RD_BRANCH" || git checkout master

echo "RetDec RT branch: $(git rev-parse --abbrev-ref HEAD)"

# Get back to the base repo.
cd $RD

# Clone regression tests framework.
git clone https://github.com/avast/retdec-regression-tests-framework
cd retdec-regression-tests-framework

# Checkout the same branch if possible.
git checkout "$RD_BRANCH" || git checkout master

echo "RetDec RT Framework: $(git rev-parse --abbrev-ref HEAD)"


================================================
FILE: .github/workflows/macOS/build.sh
================================================
#!/usr/bin/bash

export PATH="/usr/local/opt/openssl@1.1/bin:$PATH"
export OPENSSL_ROOT_DIR="/usr/local/opt/openssl@1.1/"

RD_DIR=$PWD
mkdir -p build
cd build

cmake $RD_DIR -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DRETDEC_TESTS=on -DCMAKE_INSTALL_PREFIX=$RD_DIR/install
make -j$(sysctl -n hw.ncpu) install


================================================
FILE: .github/workflows/macOS/ignore_Debug
================================================


================================================
FILE: .github/workflows/macOS/ignore_Release
================================================


================================================
FILE: .github/workflows/macOS/install-deps.sh
================================================
#!/usr/bin/bash

brew install pkg-config autoconf automake libtool openssl python@3.10
brew link --overwrite python@3.10


================================================
FILE: .github/workflows/macOS/prepare-clang.sh
================================================
#!/usr/bin/bash

wget --no-proxy https://releases.llvm.org/3.9.0/clang+llvm-3.9.0-x86_64-apple-darwin.tar.xz -O llvm.tar.xz
tar -xJf llvm.tar.xz
mv clang* $CLANG_DIR_OUT


================================================
FILE: .github/workflows/macOS/run-tests.sh
================================================
#!/usr/bin/bash

set -x

IGNORE_TESTS=$(cat $1 | tr '\n' ',' | sed 's/,$//' | tr '.' '/')

cat <<EOF > $PWD/retdec-regression-tests-framework/config_local.ini
[runner]
; Path to the extracted Clang package containing subdirectories such as bin, include, lib, share.
clang_dir = $PWD/clang
; Path to the cloned repository containing regression tests.
tests_root_dir = $PWD/retdec-regression-tests
; Path to the RetDec's installation directory.
retdec_install_dir = $PWD/install

; 2019-09-05: On macOS, we have to skip tests that compile output C files
; because newer Xcode versions no longer support compilation into 32b binaries:
;
; "The macOS 10.14 SDK no longer contains support for compiling 32-bit applications.
;  If developers need to compile for i386, Xcode 9.4 or earlier is required."
;
; We cannot compile into 64b binaries because of RetDec shortcomings
; (https://github.com/avast/retdec/issues/213). So, we decided to skip tests that
; compile output C files when running regression tests on macOS.
skip_c_compilation_tests = 0
; Exclude directories
excluded_dirs = $IGNORE_TESTS
EOF

cd "$PWD/retdec-regression-tests-framework"

python3 -m venv .venv

. .venv/bin/activate
pip3 install -r requirements.txt

python3 ./runner.py


================================================
FILE: .github/workflows/retdec-ci.yml
================================================
## Configuration of Github Actions CI for RetDec

name: RetDec CI

on:
  push:
    branches:
      - master   # Activate CI on push on master.
      - 'test-*' # Activate CI on branch with prefix test-.

  pull_request:
    branches:
      - master # Activate on pull request.

env:
  # Universal ENV variable containing path to all workflows scripts.
  # Each OS has it's own directory there: Windows, macOS, Linux.
  # Names of directories are compatible with the $RUNNER_OS variable.
  WORKFLOWS_DIR: ${{ github.workspace }}/.github/workflows/

jobs:
  ci-runner:
    strategy:
      matrix:
        sys:
          - { os: ubuntu-22.04, shell: bash }
          - { os: windows-2019, shell: 'msys2 {0}' }
          - { os: macos-11, shell: bash }
        type: [Release, Debug]

      # Let other builds finish.
      fail-fast: false

    name: ${{ matrix.sys.os }} (${{ matrix.type }})

    runs-on: ${{ matrix.sys.os }}

    defaults:
      run:
        shell: ${{ matrix.sys.shell }}

    steps:
      # Checkouts the correct commit/branch.
      - uses: actions/checkout@v4

        # We want to use msys2 bash on Windows.
      - uses: msys2/setup-msys2@v2
        if: runner.os == 'Windows'

        # Installs dependencies on all systems.
      - name: Install Dependencies
        run: bash "${WORKFLOWS_DIR}/${RUNNER_OS}/install-deps.sh"
        shell: bash

      - name: Windows Additional Packages
        if: runner.os == 'Windows'
        run: |
          pacman -S mingw-w64-i686-gcc --noconfirm
          pacman -S mingw-w64-x86_64-gcc --noconfirm
          pacman -S mingw-w64-x86_64-python --noconfirm
          pacman -S python3-pip --noconfirm

          # Regression tests framework requires specific version of clang.
          # The following script(s) prepares clang on each platform.
      - name: Prepare Clang
        run: bash "${WORKFLOWS_DIR}/${RUNNER_OS}/prepare-clang.sh"
        env:
          # Clang will be available in build/clang
          CLANG_DIR_OUT: clang
        shell: bash

      - name: Build RetDec
        run: bash "${WORKFLOWS_DIR}/${RUNNER_OS}/build.sh"
        env:
          BUILD_TYPE: ${{ matrix.type }}
        shell: bash

      - name: Prepare RetDec Regression Tests & Framework
        run: bash "${WORKFLOWS_DIR}/common/prepare-retdec-tests.sh"
        shell: bash

      - name: Run Tests
        run: bash "${WORKFLOWS_DIR}/${RUNNER_OS}/run-tests.sh" "${WORKFLOWS_DIR}/${RUNNER_OS}/ignore_${{ matrix.type }}"

        # Prepare files for publishing/release. The resulting structure:
        #   RetDec-OSType-Release
        #   |_ bin
        #   |_ include
        #   |_ lib
        #   |_ share
        #   |  \__ retdec/support/
        #   |
        #   |_ CHANGELOG.md
        #   |_ LICENSE
        #   |_ LICENSE-THIRD-PARTY
        #   \_ README.md
      - name: Prepare Files for Publishing
        if: matrix.type == 'Release'
        run: |
          cp LICENSE* install/
          cp CHANGELOG.md install/
          cp README.md install/

      - name: Archive Artifacts
        if: matrix.type == 'Release'
        uses: actions/upload-artifact@v4
        with:
          name: RetDec-${{ runner.os }}-Release
          path: install

  docs-build:
    name: doxygen-build (Linux)
    runs-on: ubuntu-22.04

    steps:
      # Checkouts the correct commit/branch.
      - uses: actions/checkout@v4

        # Installs dependencies on all systems.
      - name: Install Dependencies
        run: bash "${WORKFLOWS_DIR}/Linux/install-deps.sh"
        shell: bash

      - name: Build Docs
        run: |
          mkdir build && cd build
          cmake .. -DCMAKE_INSTALL_PREFIX=install -DRETDEC_DOC=ON
          make doc -j$(nproc)

      - name: Display Docs Warnings
        run: |
          file="build/doc/doxygen/doxygen.log"
          echo "checking file: $file"
          content="$(cat $file)"
          if [ "$content" = "" ]; then
            echo "===> ok"
            else
            echo "===> fail:"
            echo "=========================================="
            echo "$content"
            echo "=========================================="
            exit 0
          fi


================================================
FILE: .github/workflows/retdec-release.yml
================================================
## Automatic Release flow.

name: RetDec Release

on:
  push:
    # Trigger anytime a release tag is created.
    tags:
      - "v*"

env:
  # Universal ENV variable containing path to all workflows scripts.
  # Each OS has it's own directory there: Windows, macOS, Linux.
  # Names of directories are compatible with the $RUNNER_OS variable.
  WORKFLOWS_DIR: ${{ github.workspace }}/.github/workflows/

jobs:
  builder:
    strategy:
      matrix:
        sys:
          - { os: ubuntu-22.04, shell: bash }
          - { os: windows-2019, shell: bash }
          - { os: macos-11, shell: bash }

      # Fail if one instance fails.
      fail-fast: true

    name: Build RetDec (${{ matrix.sys.os }})

    runs-on: ${{ matrix.sys.os }}

    defaults:
      run:
        shell: ${{ matrix.sys.shell }}

    steps:
      # Checkouts the correct commit/branch.
      - uses: actions/checkout@v4

        # Installs dependencies on all systems.
      - name: Install Dependencies
        run: bash "${WORKFLOWS_DIR}/${RUNNER_OS}/install-deps.sh"
        shell: bash

      - name: Build RetDec
        run: bash "${WORKFLOWS_DIR}/${RUNNER_OS}/build.sh"
        env:
          BUILD_TYPE: Release
          RETDEC_MSVC_STATIC_RUNTIME: True
        shell: bash

        # Prepare files for publishing/release. The resulting structure:
        #   RetDec-OSType-Release
        #   |_ bin
        #   |_ include
        #   |_ lib
        #   |_ share
        #   |  \__ retdec/support/
        #   |
        #   |_ CHANGELOG.md
        #   |_ LICENSE
        #   |_ LICENSE-THIRD-PARTY
        #   \_ README.md
      - name: Prepare Files for Publishing
        run: |
          cp LICENSE* install/
          cp SECURITY.md install/
          cp CHANGELOG.md install/
          cp README.md install/

      - name: Pack Artifacts Compactly
        if: runner.os != 'Windows'
        run: |
          tar -cvJf RetDec-${{ github.ref_name }}-${{ runner.os }}-Release.tar.xz *
          mv *.tar.xz ..
        working-directory: install

      - name: Pack Artifacts Compactly on Windows
        if: runner.os == 'Windows'
        run: |
          7z a RetDec-${{ github.ref_name }}-${{ runner.os }}-Release.7z *
          mv *.7z ..
        shell: bash
        working-directory: install

      - name: Archive Artifacts
        uses: actions/upload-artifact@v4
        with:
          name: RetDec-${{ github.ref_name }}-${{ runner.os }}-Release
          path: RetDec-*

  release:
    name: Release RetDec

    runs-on: ubuntu-22.04
    needs: builder

    steps:
      - uses: actions/checkout@v4

      # Fetch artifacts from the build step.
      - name: Fetch Artifacts
        uses: actions/download-artifact@v4
        with:
          path: artifacts

      # Create a release.
      - name: Release
        if: startsWith(github.ref, 'refs/tags/')
        uses: softprops/action-gh-release@v1
        with:
          name: Release ${{ github.ref_name }}
          generate_release_notes: true
          files: |
            LICENSE*
            CHANGELOG.md
            artifacts/*/*.tar.xz
            artifacts/*/*.7z


================================================
FILE: .gitignore
================================================
/build*/
/Debug/


================================================
FILE: .travis.yml
================================================
language: cpp

cache: ccache

matrix:
  fast_finish: true
  include:
    - os: linux
      dist: bionic
      addons:
        apt:
          packages:
            - build-essential
            - gcc-multilib
            - autoconf
            - automake
            - libtool
            - pkg-config
            - m4
            - zlib1g-dev
            - openssl
      env:
        - MATRIX_EVAL="NPROC=$(nproc)"
        # We need this so that ccache does not cause compilation errors.
        # e.g. retdec/tests/utils/string_tests.cpp:276:2: error: stray '\' in program
        - CCACHE_CPP2=true

before_script:
  - eval "${MATRIX_EVAL}"

script:
  - mkdir build && cd build
  # We use "-O0" to speed up the build.
  # "-O0" causes segfaults in LLVM if we do not use "-DNDEBUG" as well.
  - cmake -DCMAKE_CXX_FLAGS_RELEASE="-O0 -DNDEBUG" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$(pwd)/install" -DRETDEC_COMPILE_YARA=OFF ..
  - if [ "$TRAVIS_OS_NAME" = "linux" ]; then cmake -DCMAKE_LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/7/ .. ; fi
  - time make install -j $NPROC
  # Check that install is movable and that it does not need the build directory.
  - mv install ../retdec-install
  - cd ..
  - rm -rf build
  # Run the decompilation script.
  - retdec-install/bin/retdec-decompiler --help
  # Run a simple decompilation.
  - echo -e '#include <stdio.h>\n#include <stdlib.h>\nint main()\n{\n  printf("hello world\\n");\n  return 0;\n}\n' > hello-orig.c
  - cat hello-orig.c
  - gcc -o hello hello-orig.c
  - ./hello
  - retdec-install/bin/retdec-decompiler hello
  - cat hello.c
  - grep "int main(int argc, char \*\* argv)" hello.c

branches:
  only:
    # Pushes and PRs to the master branch.
    - master
    # Version tags.
    - /^v?\d+\.\d+.*$/
    # Temporarily enable build of this branch.
    - issue-650

notifications:
  email:
    on_success: never


================================================
FILE: CHANGELOG.md
================================================
# Changelog

# dev

* Fix: Handle Intel MPX instructions ([#1154](https://github.com/avast/retdec/pull/1154), [#1148](https://github.com/avast/retdec/issues/1148), [#1135](https://github.com/avast/retdec/issues/1135)).
* Fix: Make RetDec compilable by the new gcc-13 ([#1149](https://github.com/avast/retdec/issues/1149), [#1153](https://github.com/avast/retdec/pull/1153)).

# v5.0 (2022-12-08)

The major change:

* New Feature: RetDec is now a library ([#779](https://github.com/avast/retdec/pull/779)).
  * Related changes are the removal of `retdec-decompiler.py` (it is now a binary, e.g. `retdec-decompiler.exe` on Windows), `retdec-bin2llvmir`, `retdec-llvmir2hll`, and some other supportive functionality.
  * See an example in `src/retdectool`, or an actual implementation of RetDec executable in `src/retdec-decompiler`, to find out how to use RetDec library.

Other changes:

* New feature: Use GitHub Actions Continuous integration ([#1053](https://github.com/avast/retdec/pull/1053), [#1125](https://github.com/avast/retdec/pull/1125)).
* New feature: Add checking for damaged (unloadable) ELF files ([#1036](https://github.com/avast/retdec/pull/1036), [regression-tests #113](https://github.com/avast/retdec-regression-tests/pull/113)).
* New feature: Parse various PE timestamps and make them available in Fileinfo ([#1035](https://github.com/avast/retdec/pull/1035), [regression-tests #112](https://github.com/avast/retdec-regression-tests/pull/112)).
* New feature: Generate ELF (import) symbol-related hashes, including VirusTotal compatible `telfhash` ([#286](https://github.com/avast/retdec/issues/286), [#936](https://github.com/avast/retdec/pull/936)).
* New Feature: `retdec-fileinfo` can be configured via JSON file. See `--fileinfo-config` option for more details.
* Enhancement: Use Capstone v5 instead of v4 ([#1059](https://github.com/avast/retdec/pull/1059), [#1124](https://github.com/avast/retdec/pull/1124)).
* Enhancement: Add prototypes for dynamically-linked functions without headers ([#1092](https://github.com/avast/retdec/pull/1092)).
* Enhancement: Handle Procedure Linkage calls for 32bit x86 from gcc ([#1088](https://github.com/avast/retdec/pull/1088)).
* Enhancement: Add DLL name from export directory to output ([#1060](https://github.com/avast/retdec/pull/1060)).
* Enhancement: Updated YARA to `v4.2.0-rc1` ([#1061](https://github.com/avast/retdec/pull/1061)).
* Enhancement: Use [Authenticode parser](https://github.com/avast/authenticode-parser) library instead of RetDec's own implementation ([#1027](https://github.com/avast/retdec/pull/1027), [regression-tests #110](https://github.com/avast/retdec-regression-tests/pull/110)).
* Enhancement: Remove `--backend-aggressive-opts` option and all the related code ([#1016](https://github.com/avast/retdec/issues/1016), [#1032](https://github.com/avast/retdec/pull/1032)).
* Enhancement: Add `SECURITY.md` ([#1018](https://github.com/avast/retdec/issues/1018), [#1025](https://github.com/avast/retdec/pull/1025)).
* Enhancement: Improve PE's .NET parsing - make it more aligned with parsing in YARA ([#997](https://github.com/avast/retdec/pull/997), [regression tests #106](https://github.com/avast/retdec-regression-tests/pull/106)).
* Enhancement: Add `signatureVerified` flag to PE's digital signature entries ([#994](https://github.com/avast/retdec/pull/994), [regression tests #102](https://github.com/avast/retdec-regression-tests/pull/102)).
* Enhancement: Add YARA signature for InnoSetup 6.1.0 ([#989](https://github.com/avast/retdec/pull/989)).
* Enhancement: Provide one-line-style values for digital signature's subjects and issuers ([#956](https://github.com/avast/retdec/issues/956), [#976](https://github.com/avast/retdec/pull/976), [regression tests #92](https://github.com/avast/retdec-regression-tests/pull/92)).
* Enhancement: Compute hashes of decrypted PE rich headers ([#621](https://github.com/avast/retdec/issues/621), [#945](https://github.com/avast/retdec/pull/945)).
* Enhancement: Unified logging on stdout/stderr. Added option `--silent`. Printed text is colored only when output is a terminal ([#791](https://github.com/avast/retdec/issues/791).
* Enhancement: Support all the CMake build types (i.e. `Debug`, `Release`, `RelWithDebInfo` and `MinSizeRel`) on all systems ([#774](https://github.com/avast/retdec/issues/774)).
* Enhancement: YARA updated to version 4.0.1 ([#758](https://github.com/avast/retdec/issues/758)), fixed Mach-O parsing issue ([#283](https://github.com/avast/retdec/issues/283)).
* Enhancement: Improved detection of many packers/installers/compilers in `retdec-fileinfo`, including Armadillo ([#733](https://github.com/avast/retdec/pull/733)), VMProtect ([#734](https://github.com/avast/retdec/pull/734), [#778](https://github.com/avast/retdec/pull/778)), Petite ([#735](https://github.com/avast/retdec/pull/735)), Enigma ([#741](https://github.com/avast/retdec/pull/741)), ASPack ([#743](https://github.com/avast/retdec/pull/743)), Eziriz ([#746](https://github.com/avast/retdec/pull/746)), PyInstaller ([#748](https://github.com/avast/retdec/pull/748)), Astrum InstallWizard ([#753](https://github.com/avast/retdec/pull/753)), AutoHotKey ([#756](https://github.com/avast/retdec/pull/756)), AutoIt ([#757](https://github.com/avast/retdec/pull/757)), BAT to PE-EXE script compilers ([#761](https://github.com/avast/retdec/pull/761)), Bero ([#764](https://github.com/avast/retdec/pull/764)), CExe ([#781](https://github.com/avast/retdec/pull/781)), MoleBox ([#815](https://github.com/avast/retdec/pull/815)), Blizzard Protector ([#845](https://github.com/avast/retdec/pull/845)), CreateInstall installer ([#852](https://github.com/avast/retdec/pull/852)), FlyStudio installer ([#853](https://github.com/avast/retdec/pull/853)), Gentee installer ([#855](https://github.com/avast/retdec/pull/855)), Ghost installer and InnoSetup ([#857](https://github.com/avast/retdec/pull/857), [#899](https://github.com/avast/retdec/pull/899)), InstallCreator ([#804](https://github.com/avast/retdec/pull/858)), Quick Batch installer ([#864](https://github.com/avast/retdec/pull/864)), Wise installer ([#865](https://github.com/avast/retdec/pull/865)), Viseman installer ([#868](https://github.com/avast/retdec/pull/868)), Setup Factory ([#869](https://github.com/avast/retdec/pull/869)), Xenocode Application Launcher [#870](https://github.com/avast/retdec/pull/870), SmartInstall Maker ([#871](https://github.com/avast/retdec/pull/871)), and other improvements ([#804](https://github.com/avast/retdec/pull/804), [#831](https://github.com/avast/retdec/pull/831)).
* Enhancement: Enable .NET module in RetDec's YARA ([#747](https://github.com/avast/retdec/issues/747)).
* Enhancement: Require OpenSSL as a prerequisite. It is no longer built by RetDec ([#807](https://github.com/avast/retdec/pull/807)).
* Enhancement: Replace RetDec's `FilesystemPath` implementation with C++ Filesystem library ([#806](https://github.com/avast/retdec/pull/806)).
* Enhancement: Added support for Ninja CMake generator ([#8](https://github.com/avast/retdec/issues/8), [#830](https://github.com/avast/retdec/issues/8)).
* Enhancement: Removed copyrights from RetDec's outputs ([#843](https://github.com/avast/retdec/pull/843)).
* Enhancement: Add `--version` program option to all executable RetDec apps and add this info to `retdec-fileinfo`'s verbose output as well ([#926](https://github.com/avast/retdec/pull/926)).
* Enhancement: Added support for new ELF UPX unpacking stubs (versions 3.93 - 3.96) ([#929](https://github.com/avast/retdec/pull/929)).
* Enhancement: Improved YARA rules for detection of the SHA-512 algorithm ([#935](https://github.com/avast/retdec/pull/935)).
* Enhancement: Improved PE Authenticode parsing ([#902](https://github.com/avast/retdec/pull/902), [#380](https://github.com/avast/retdec/issues/380)).
* Fix: Fix parameter and return types for dynamically called functions ([#1085](https://github.com/avast/retdec/pull/1085)).
* Fix: Disable memory-limiting capabilities on macOS because there is currently no working way of doing so ([#1074](https://github.com/avast/retdec/pull/1074), [#1045](https://github.com/avast/retdec/issues/1045), [#379](https://github.com/avast/retdec/issues/379)).
* Fix: Add OpenSSL 3.0 support ([#1040](https://github.com/avast/retdec/issues/1040), [#1041](https://github.com/avast/retdec/pull/1041)).
* Fix: `ImageLoader::Save()` properly saves PE's Rich Header and section data ([#1028](https://github.com/avast/retdec/issues/1028), [#1029](https://github.com/avast/retdec/pull/1029)).
* Fix: Check if data is not empty in .NET integer decoding functions ([#1030](https://github.com/avast/retdec/pull/1030)).
* Fix: Stricter validation of PE signatures - they need to be outside of the image to be considered valid ([#972](https://github.com/avast/retdec/issues/972), [#986](https://github.com/avast/retdec/pull/986), [regression tests #108](https://github.com/avast/retdec-regression-tests/pull/108)).
* Fix: Do not provide entry point offset in case it doesn't exist ([#962](https://github.com/avast/retdec/issues/962), [#975](https://github.com/avast/retdec/pull/975), [regression tests #101](https://github.com/avast/retdec-regression-tests/pull/101)).
* Fix: Fix PE resource parsing issues ([#963](https://github.com/avast/retdec/issues/963), [#982](https://github.com/avast/retdec/pull/982), [regression tests #105](https://github.com/avast/retdec-regression-tests/pull/105)).
* Fix: Fix PE imports parsing issues ([#1003](https://github.com/avast/retdec/pull/1003), [regression tests #107](https://github.com/avast/retdec-regression-tests/pull/107)).
* Fix: Accept PDB info only if `IMAGE_DEBUG_TYPE_CODEVIEW` flag is set ([#1004](https://github.com/avast/retdec/pull/1004)).
* Fix: Prevent PE delayed import parser to load garbage data ([#981](https://github.com/avast/retdec/pull/981)).
* Fix: Don't detect .NET structures that do not belong to the binary itself, but to the embedded binary ([#967](https://github.com/avast/retdec/issues/967), [#970](https://github.com/avast/retdec/pull/970), [regression tests #90](https://github.com/avast/retdec-regression-tests/pull/90)).
* Fix: Fixed handling of escaped characters in PE section names ([#958](https://github.com/avast/retdec/issues/958), [#979](https://github.com/avast/retdec/pull/979), [regression tests #94](https://github.com/avast/retdec-regression-tests/pull/94)).
* Fix: Fixed .NET's TypeLib ID parsing - add _Parent relationship_ check ([#966](https://github.com/avast/retdec/issues/966), [#983](https://github.com/avast/retdec/pull/983), [regression tests #96](https://github.com/avast/retdec-regression-tests/pull/96)).
* Fix: Make error handling for PE resource directory in sync with YARA - i.e. behave as YARA does ([#988](https://github.com/avast/retdec/pull/988), [regression tests #98](https://github.com/avast/retdec-regression-tests/pull/98)).
* Fix: Fixed memory leak in `Fileformat` library ([#951](https://github.com/avast/retdec/issues/951), [#984](https://github.com/avast/retdec/pull/984)).
* Fix: Raise max length limit applied to PE symbol names ([#957](https://github.com/avast/retdec/issues/957), [#978](https://github.com/avast/retdec/pull/978), [regression tests #93](https://github.com/avast/retdec-regression-tests/pull/93)).
* Fix: Fixed parsing of junk data from PE resource table's `type` entry ([#959](https://github.com/avast/retdec/issues/959), [#974](https://github.com/avast/retdec/pull/974)).
* Fix: Fixed PE rich header analysis algorithm ([#973](https://github.com/avast/retdec/pull/973), [#960](https://github.com/avast/retdec/issues/960), [#965](https://github.com/avast/retdec/issues/965), [regression tests #91](https://github.com/avast/retdec-regression-tests/pull/91)).
* Fix: Arithmetic shift is no longer converted to signed division as these operations provide different output with negative numbers ([#724](https://github.com/avast/retdec/issues/724)).
* Fix: Fixed infinite looping during the copy-propagation optimization in `llvmir2hll` ([#876](https://github.com/avast/retdec/pull/876)).
* Fix: Fixed analyzed calling convention on MIPS architecture. Register F0 is used for floating point function return ([#656](https://github.com/avast/retdec/issues/656)).
* Fix: Fixed filtration to better handle functions with no arguments and therefore to reduce noise in output ([#155](https://github.com/avast/retdec/issues/155)).
* Fix: Fixed build on some systems by adding missing includes of `<limits>` into `retdec-fileinfo` ([#745](https://github.com/avast/retdec/pull/745)).
* Fix: Fixed two type errors in `scripts/retdec-archive-decompiler.py` ([#759](https://github.com/avast/retdec/pull/759)).
* Fix: Fixed runtime and memory use of `retdec-fileinfo` on PE samples having corrupted relocations ([#872](https://github.com/avast/retdec/issues/872), [#873](https://github.com/avast/retdec/pull/873)).
* Fix: Fixed a corruption check for PE samples with invalid import thunks ([#897](https://github.com/avast/retdec/pull/897), [#917](https://github.com/avast/retdec/pull/917)).
* Fix: Fixed recognition of very corrupted PE samples ([#921](https://github.com/avast/retdec/issues/921)).
* Fix: Fixed the recognition of the "RVA of the import name is invalid" corruption in PE samples ([#1063](https://github.com/avast/retdec/pull/1063)).
* Fix: Fixed parsing of corrupted resources in `retdec-fileinfo` ([#907](https://github.com/avast/retdec/pull/907), [#911](https://github.com/avast/retdec/issues/911)).
* Fix: MPRESS unpacker will now correctly copy resources, exports and other non-packed sections correctly.
* Fix: `retdec-fileinfo.py` is now usable even when decompiler is not installed.
* ... and many others.

# v4.0 (2020-04-07)

* New Feature: Added support for decompilation of 64-bit ARM binaries ([#268](https://github.com/avast/retdec/issues/268), [#533](https://github.com/avast/retdec/pull/533), [#550](https://github.com/avast/retdec/pull/550)).
* New Feature: Added presentation of section and overlay entropy in `retdec-fileinfo` ([#502](https://github.com/avast/retdec/issues/502), [#507](https://github.com/avast/retdec/pull/507)).
* New Feature: Added presentation of version info from PE file in `retdec-fileinfo` ([#408](https://github.com/avast/retdec/issues/408), [#519](https://github.com/avast/retdec/pull/519)).
* New Feature: Added presentation of thread-local storage directory from PE file in `retdec-fileinfo` ([#417](https://github.com/avast/retdec/issues/417), [#523](https://github.com/avast/retdec/pull/523)).
* New Feature: Added presentation of missing dependencies of PE files in `retdec-fileinfo` ([#585](https://github.com/avast/retdec/pull/585)).
* New Feature: Added presentation of anomalies of PE files in `retdec-fileinfo` ([#415](https://github.com/avast/retdec/issues/415), [#570](https://github.com/avast/retdec/pull/570)).
* New Feature: Added heuristic detection of StarForce, SecuROM, SafeDisc, MPRMMGVA, ActiveMark, Petite, and RLPack ([#600](https://github.com/avast/retdec/pull/600), [#607](https://github.com/avast/retdec/pull/607), [#615](https://github.com/avast/retdec/pull/615)).
* New Feature: Added control flow related information to RetDec config ([#646](https://github.com/avast/retdec/issues/646)).
* New Feature: Added option to generate the decompilation results as JSON ([JSON output file format](https://github.com/avast/retdec/wiki/Decompiler-outputs#json-output-file-format)). This output contains additional meta-information and can be conveniently consumed by 3rd-party tools.
* New Feature: Added a new library called `retdec` that lets you decompile the input into both LLVM IR module and structured (i.e. functions and basic blocks) Capstone disassembly. See the `retdectool` demo application.
* Enhancement: Improved handling of ELF object files and ELF thunks (implemented in PR [#577](https://github.com/avast/retdec/pull/577), solved issues [#184](https://github.com/avast/retdec/issues/184), [#480](https://github.com/avast/retdec/issues/480), and partially solved [#201](https://github.com/avast/retdec/issues/201)).
* Enhancement: Demangler rewritten ([#95](https://github.com/avast/retdec/issues/95)).
* Enhancement: Added macOS and Linux (Ubuntu, Debian, Fedora) release builds ([#526](https://github.com/avast/retdec/issues/526)).
* Enhancement: Added support for using a local repository clone for RetDec external dependencies ([#279](https://github.com/avast/retdec/issues/279)).
* Enhancement: Parallelized compilation of YARA rules during installation ([#540](https://github.com/avast/retdec/issues/540)).
* Enhancement: Updated LLVM to version 8.0.0 ([#110](https://github.com/avast/retdec/issues/110)).
* Enhancement: Updated YARA to version 3.9 ([#527](https://github.com/avast/retdec/pull/527)).
* Enhancement: Updated OpenSSL to version 1.1.1c ([#601](https://github.com/avast/retdec/pull/601)). This fixes build of OpenSSL on macOS Mojave ([#439](https://github.com/avast/retdec/issues/439)).
* Enhancement: Added support for relocations that pair multiple `R_MIPS_LO16` against a single `R_MIPS_HI16` ([#627](https://github.com/avast/retdec/issues/627), [#628](https://github.com/avast/retdec/pull/628)).
* Enhancement: Added handling of all x86 FPU instructions in assembly to LLVM IR translation ([#394](https://github.com/avast/retdec/issues/394), [#643](https://github.com/avast/retdec/pull/643)).
* Enhancement: All registers are localized - i.e. transformed from global variables to local variables ([#652](https://github.com/avast/retdec/issues/652)). This significantly (20% on average) speeds up the decompilation process and greatly reduces noise in output.
* Enhancement: Added CMake options to build and install only specific targets ([#510](https://github.com/avast/retdec/issues/510)).
* Enhancement: Switched from C++14 to C++17 ([#650](https://github.com/avast/retdec/issues/650)).
* Enhancement: Replaced uses of `mpark::variant` from `deps/variant` with standard C++17 `std::variant`. Removed the `variant` dependency.
* Enhancement: Updated Yaramod to version v3.0.0 ([#680](https://github.com/avast/retdec/pull/680)). RetDec no longer requires Flex and Bison. This fixes [#103](https://github.com/avast/retdec/issues/103).
* Enhancement: Take out most of the types from `config` library and place them to a separate `common` library that could be used across an entire RetDec source base ([#686](https://github.com/avast/retdec/issues/686)).
* Enhancement: `retdec-fileinfo` is now able to produce human-readable representation of a product name and VS version from Rich header ([#691](https://github.com/avast/retdec/pull/691)).
* Enhancement: Added a new corruption check into `retdec-fileinfo` that detects cut or zeroed digital signature ([#719](https://github.com/avast/retdec/pull/719)).
* Enhancement: Reduced RetDec's external dependencies:
   * The sources of the following 3rd-party projects were moved from their own repositories directly to the main RetDec repository (to `/deps/`): ELFIO, RapidJSON, TinyXML2.
   * The sources of the following Avast projects were moved from their own repositories directly to the main RetDec repository (to `/src/`): Yaracpp, PeLib.
   * The following 3rd-party dependencies use upstream project repositories, not modified Avast forks as before: Capstone, Yara.
   * The following dependencies are no longer needed: JsonCpp, Libdwarf, Libelf.
* Enhancement: Implemented proper RetDec installation ([#648](https://github.com/avast/retdec/issues/648)). It is now possible to easily use RetDec components in other CMake projects.
* Enhancement: Some optimizations in critical RetDec components ([#731](https://github.com/avast/retdec/pull/731)). It is however still often very slow on big inputs.
* Fix: Increased the limit for the number of entries in import directory when deciding whether a PE file is corrupted or not ([avast/pelib#13](https://github.com/avast/pelib/pull/13)).
* Fix: Fixed build on BSD systems ([#598](https://github.com/avast/retdec/pull/598)).
* Fix: Resources which are located in the different section than resource tree are now properly parsed ([#596](https://github.com/avast/retdec/pull/596)).
* Fix: Version information which contained strings shorter than reported are now properly parsed ([#596](https://github.com/avast/retdec/pull/596)).
* Fix: Fixed crashes of `retdec-fileinfo` when analyzing ELF samples containing invalid ranges ([#521](https://github.com/avast/retdec/issues/521)).
* Fix: Fixed crashes of `retdec-unpacker` when trying to unpack corrupted ELF samples having incorrect size of additional data ([#582](https://github.com/avast/retdec/issues/582)).
* Fix: Fixed several Mach-O parsing crashes ([#581](https://github.com/avast/retdec/issues/581), [#561](https://github.com/avast/retdec/issues/561), [#568](https://github.com/avast/retdec/issues/568)).
* Fix: Fixed import table hashes computation - hashes are no longer produced from empty strings ([#460](https://github.com/avast/retdec/issues/460)).
* Fix: Fixed build on Microsoft Windows via MSYS2 ([#606](https://github.com/avast/retdec/pulls/606)).
* Fix: Fixed build on macOS Mojave by updating OpenSSL and using `xcrun` ([#439](https://github.com/avast/retdec/issues/439)).
* Fix: Fixed computation of the _"RVA of the import name is invalid"_ loader error ([avast/pelib#11](https://github.com/avast/pelib/pull/11)).
* Fix: Fixed computation of the _"Import directory is cut"_ loader error ([avast/pelib#17](https://github.com/avast/pelib/pull/17)).
* Fix: Export ordinals are now correctly calculated as relative to the base ([#612](https://github.com/avast/retdec/issues/612), [avast/pelib#10](https://github.com/avast/pelib/pull/10)).
* Fix: Fixed crash in the decoding phase ([#637](https://github.com/avast/retdec/issues/637), [#641](https://github.com/avast/retdec/pull/641)).
* Fix: Fixed global variable naming issue ([#636](https://github.com/avast/retdec/issues/636), [#645](https://github.com/avast/retdec/pull/645)).
* Fix: Fixed binary to LLVM IR translation of some MIPS instructions ([#633](https://github.com/avast/retdec/issues/633)), and made the translation process less error prone altogether ([#672](https://github.com/avast/retdec/pull/672)).
* Fix: Fixed incorrect translation of PHI nodes in `llvmir2hll` ([#658](https://github.com/avast/retdec/issues/658)).
* Fix: Fixed the build of LLVM when having OCaml installed in your system ([#701](https://github.com/avast/retdec/issues/701)).

# v3.3 (2019-03-18)

* New Feature: Added basic support of 64-bit x86 architecture ([#9](https://github.com/avast/retdec/issues/9), [#513](https://github.com/avast/retdec/pull/513)).
* New Feature: Added presentation of imported types and TypeRef hashes for .NET binaries ([#363](https://github.com/avast/retdec/issues/363), [#364](https://github.com/avast/retdec/issues/364), [#428](https://github.com/avast/retdec/issues/428)).
* New Feature: Added presentation of metadata from binaries written in Visual Basic and detection of P-code ([#138](https://github.com/avast/retdec/issues/138), [#440](https://github.com/avast/retdec/pull/440)).
* New Feature: Added computation and presentation of icon hashes for exact and also similarity matching in PE files ([#339](https://github.com/avast/retdec/issues/339)).
* Enhancement: Distribute YARA rules in a text form in the RetDec support package ([retdec-support #3](https://github.com/avast/retdec-support/issues/3)).
* Enhancement: Updated YARA to version 3.8.1 ([#218](https://github.com/avast/retdec/issues/218)).
* Enhancement: Made `--generate-log` option of `retdec-decompiler.py` work on macOS ([#383](https://github.com/avast/retdec/issues/383), [#450](https://github.com/avast/retdec/pull/450)).
* Enhancement: Replaced recursion with iterative implementation in x87 FPU analysis in `retdec-bin2llvmir` ([#450](https://github.com/avast/retdec/pull/450)).
* Enhancement: The `new` LLVM IR to BIR converter is now the default (and only) back-end's converter. In most cases, this improves code structure and significantly speeds up decompilations ([#211](https://github.com/avast/retdec/issues/211), [#508](https://github.com/avast/retdec/issues/508), [#509](https://github.com/avast/retdec/pull/509)).
* Enhancement: The `fileformat` library, and all its object file modules, accept both `std::istream` and `(data, size)` pair, in addition to the original input file path.
* Enhancement: Reduced the needed stack space in `retdec-llvmir2hll` ([#492](https://github.com/avast/retdec/pull/492), [#495](https://github.com/avast/retdec/pull/495)).
* Enhancement: Added support for build and run on FreeBSD and potentially on other BSD OSes ([#476](https://github.com/avast/retdec/pull/476)).
* Enhancement: It is possible to use local PeLib directory instead of remote revision via CMake variable `PELIB_LOCAL_DIR`. This is convenient when modifying both PeLib and RetDec at the same time.
* Enhancement: Improved detection of needed libraries and imported/external functions in ELF binaries ([#457](https://github.com/avast/retdec/issues/457)).
* Enhancement: Added semantics for more MIPS instructions.
* Enhancement: Capstone2LlvmIr library refactoring ([#115](https://github.com/avast/retdec/issues/115)).
* Enhancement: Removed the build and runtime dependency on ncurses/libtinfo ([#409](https://github.com/avast/retdec/pull/409)).
* Enhancement: Add a check into our scripts that they are run from an installation directory and not from the `scripts` directory ([#418](https://github.com/avast/retdec/issues/418)).
* Enhancement: Improved corruption checks in `retdec-fileinfo` to recognize cut PE files which are still loadable ([#463](https://github.com/avast/retdec/issues/463)).
* Enhancement: Redesign output files naming scheme ([#132](https://github.com/avast/retdec/issues/132)).
* Fix: Fixed false COFF file format detections ([#421](https://github.com/avast/retdec/issues/421), [#431](https://github.com/avast/retdec/issues/431)).
* Fix: Fixed LLVM IR syntax error: `Global variable initializer type does not match global variable type` ([#436](https://github.com/avast/retdec/issues/436)).
* Fix: Fixed translation of x86 `sbb` instruction ([#401](https://github.com/avast/retdec/issues/401)).
* Fix: Fixed `fileinfo` crash during `Asn1Sequence` initialization when parsing PE certificates ([#256](https://github.com/avast/retdec/issues/256)).
* Fix: Fixed `fileinfo` crash during reconstruction of .NET types ([#458](https://github.com/avast/retdec/issues/458), [#511](https://github.com/avast/retdec/pull/511)).
* Fix: Fixed generation of MIPS branch instructions ([#88](https://github.com/avast/retdec/issues/88)).
* Fix: Fixed generation of empty if blocks in C output ([#83](https://github.com/avast/retdec/issues/83)).
* Fix: Fixed decompilation of simple x86 system calls ([#24](https://github.com/avast/retdec/issues/24)).
* Fix: Fixed potential infinite looping in llvmir2hll's copy propagation pass ([#479](https://github.com/avast/retdec/issues/479)).
* Fix: Fixed `FilesystemPath::isFile()` ([#490](https://github.com/avast/retdec/issues/490), [#491](https://github.com/avast/retdec/pull/491)).
* Fix: Fixed `retdec-signature-from-library-creator.py` when there is a lot of input files by adding an option to `retdec-bin2pat` to have the objects list passed through a text file instead of via program arguments ([#472](https://github.com/avast/retdec/issues/472), [#484](https://github.com/avast/retdec/pull/484)).
* Fix: Stricter rules for PE section names ([#451](https://github.com/avast/retdec/issues/451)).
* Fix: Fixed incorrect return code of `bin2pat` that caused `signature-from-library-creator.py` to silently fail on error ([#473](https://github.com/avast/retdec/issues/473), [#474](https://github.com/avast/retdec/pull/474)).
* Fix: Fixed installation when Python is in a path containing spaces ([#441](https://github.com/avast/retdec/issues/441)).
* Fix: Fixed handling of pointers with segment overrides, including loads/stores from/to zero (null) pointers ([#41](https://github.com/avast/retdec/issues/41), [#169](https://github.com/avast/retdec/issues/169), [#347](https://github.com/avast/retdec/issues/347), [#376](https://github.com/avast/retdec/issues/376), [#391](https://github.com/avast/retdec/pull/391)).
* Fix: Fixed translation of x86 FPU instructions to LLVM IR ([#293](https://github.com/avast/retdec/issues/293)).

# v3.2 (2018-08-16)

* New Feature: Converted shell scripts to Python scripts so that Windows users no longer have to install MSYS2 in order to run RetDec ([#338](https://github.com/avast/retdec/pull/338), [#147](https://github.com/avast/retdec/issues/147)).
* New Feature: Added generation of export-table hashes into `retdec-fileinfo` ([#121](https://github.com/avast/retdec/issues/121), [#321](https://github.com/avast/retdec/pull/321)).
* New Feature: Automatically generate and publicly host an up-to-date Doxygen documentation ([#20](https://github.com/avast/retdec/issues/20)).
* Enhancement: Suppress superfluous ranlib warnings about static libraries having no symbols on macOS ([#271](https://github.com/avast/retdec/issues/271), [#349](https://github.com/avast/retdec/pull/349)).
* Fix: Fixed assertions in statically linked code recognition ([#333](https://github.com/avast/retdec/issues/333)).
* Fix: Fixed aborts due to assertions during decoding of some MIPS binaries ([#335](https://github.com/avast/retdec/issues/335)).
* Fix: Fixed a memory leak when parsing Mach-O files ([#331](https://github.com/avast/retdec/pull/331)).

# v3.1 (2018-06-07)

* New Feature: `retdec-fileinfo` is now able to detect when a PE file is corrupted and cannot be loaded ([#281](https://github.com/avast/retdec/pull/281)).
* New Feature: Added a new tool: `retdec-getsig`. It can be used for creating signatures of packers, compilers, and other tools.
* New Feature: The number of bytes read from the input file's entry point by `retdec-fileinfo` is now configurable with the `--ep-bytes` option.
* Enhancement: Complete rewrite of binary to LLVM IR decoding phase ([#116](https://github.com/avast/retdec/issues/116)).
* Enhancement: Added reference checks to statically linked code detection ([#113](https://github.com/avast/retdec/issues/113)).
* Enhancement: Speeded up RetDec rebuild and installation by disabling forced reconfiguration of LLVM ([#294](https://github.com/avast/retdec/pull/294)).
* Enhancement: Added new OS/ABI and tool detections for ELF files ([#244](https://github.com/avast/retdec/issues/244)).
* Enhancement: Improved support for analysis of ELF [core files](http://www.gabriel.urdhr.fr/2015/05/29/core-file/) by `retdec-fileinfo` ([#142](https://github.com/avast/retdec/issues/142)).
* Enhancement: Added support for limiting overall memory when running decompilations and tools ([#270](https://github.com/avast/retdec/issues/270), [#290](https://github.com/avast/retdec/issues/290)). By default, decompilations are now run with limited memory (half of system RAM) to prevent "black screens" (mostly on Windows). Use `--no-memory-limit` to override.
* Enhancement: On macOS, you no longer need to have GNU coreutils in `PATH` to build and install RetDec. GNU coreutils are still needed to run RetDec, though.
* Enhancement: Import-table hashes generated by `retdec-fileinfo` are now compatible with import-table hashes from YARA/pefile ([#246](https://github.com/avast/retdec/issues/246)).
* Enhancement: Tool `retdec-macho-extractor` can now extract objects from non-archive Mach-O universal binaries ([#125](https://github.com/avast/retdec/issues/125)).
* Enhancement: References to ticket numbers from our internal issue tracking system were replaced by short descriptions in the `retdec-regression-tests` repository ([retdec-regression-tests #1](https://github.com/avast/retdec-regression-tests/issues/1)).
* Enhancement: Added a missing license for the `retdec-support` repository ([retdec-support #1](https://github.com/avast/retdec-support/issues/1)).
* Enhancement: Better detection of tools: new signatures and heuristics. YARA signatures are compiled now.
* Enhancement: Added Travis and AppVeyor continuous integration builds ([#2](https://github.com/avast/retdec/issues/2)).
* Enhancement: Build with `-std=c++14` instead of `-std=gnu++14` with GCC on Linux ([#76](https://github.com/avast/retdec/issues/76)).
* Enhancement: Speeded up build by skipping compilation of unnecessary dependencies (e.g. unused LLVM libraries, tools, and examples).
* Enhancement: OpenSSL is now automatically built only if it is not found in your system.
* Enhancement: Added support for a system-wide installation ([#94](https://github.com/avast/retdec/issues/94)).
* Enhancement: Prefixed all the installed binaries and scripts with `retdec-` ([#70](https://github.com/avast/retdec/issues/70)). Also, some tools were renamed to make their names more uniform.
* Enhancement: Got rid of all git submodules ([#92](https://github.com/avast/retdec/issues/92), [#93](https://github.com/avast/retdec/issues/93)). Moved sources of all RetDec-related repositories to this main repository. Third-party dependencies are downloaded and built via CMake's external projects. This allows us to have e.g. only a single copy of LLVM ([#14](https://github.com/avast/retdec/issues/14)) and not require a recursive clone ([#48](https://github.com/avast/retdec/issues/48), [#68](https://github.com/avast/retdec/issues/68), [#72](https://github.com/avast/retdec/issues/72)).
* Enhancement: Set a proper `rpath` during installation on Linux and macOS ([#77](https://github.com/avast/retdec/issues/77), [#100](https://github.com/avast/retdec/issues/100)). This allows us to move the installation directory after the installation into another location.
* Enhancement: Added community support for building and running RetDec inside Docker ([#60](https://github.com/avast/retdec/pull/60)).
* Enhancement: Decrease the default timeout when downloading the support package during installation ([#6](https://github.com/avast/retdec/pull/6)).
* Enhancement: Any shell can be used to install the decompiler, not just Bash.
* Enhancement: Added unofficial support for macOS build ([#7](https://github.com/avast/retdec/issues/7)).
* Enhancement: Allow 32b versions of `bin2llvmir` and `llvmir2hll` on Windows access more memory ([#7](https://github.com/avast/retdec/issues/73)).
* Enhancement: Added a method in `loader::Image` to obtain segment content as a raw data pointer.
* Enhancement: `retdec-fileinfo` now prints raw bytes of Rich Header in the JSON format ([#288](https://github.com/avast/retdec/issues/288)).
* Enhancement: Delayed imports in PE files are now distinguished from non-delayed imports in the output from `retdec-fileinfo` by a boolean flag ([#287](https://github.com/avast/retdec/issues/288)).
* Fix: Add a missing `.c` extension to files generated by `retdec-archive-decompiler.sh` ([#261](https://github.com/avast/retdec/issues/261).
* Fix: Fixed build of yaracpp on 32b Unix-like operating systems ([#299](https://github.com/avast/retdec/issues/299)).
* Fix: Fixed parsing of PE files having corrupted import tables ([#101](https://github.com/avast/retdec/issues/101)).
* Fix: Fixed parsing of delayed imports by ordinals in PE files ([#282](https://github.com/avast/retdec/issues/282)).
* Fix: Fixed ordering of detected tools (e.g. compilers and packers) on systems whose `std::sort()` is not stable ([#262](https://github.com/avast/retdec/issues/262)).
* Fix: When running RetDec on macOS, `gtimeout` is now used instead of `timeout` ([#260](https://github.com/avast/retdec/issues/260)). This fixes the following runtime error when running `retdec-archive-decompiler.sh`: `The `timeout` command is required but it is not available`.
* Fix: When running RetDec on macOS, `greadlink` is now used instead of `readlink`. This fixes runtime errors of the form `readlink: illegal option -- e`.
* Fix: `retdec-decompiler.sh` on macOS no longer requires the GNU version of `sed` ([#257](https://github.com/avast/retdec/issues/257)).
* Fix: `#!/usr/bin/env bash` is now used instead of `#!/bin/bash` to run our scripts ([#258](https://github.com/avast/retdec/issues/258)).
* Fix: Fixed `retdec-fileinfo` crashes when verifying digital signature of PE files ([#87](https://github.com/avast/retdec/issues/87)).
* Fix: Fixed infinite loop in COFF word length detection for rare cases ([#242](https://github.com/avast/retdec/issues/242)).
* Fix: Fixed several ELF bugs causing crashes ([#239](https://github.com/avast/retdec/issues/239), [#240](https://github.com/avast/retdec/issues/240), [#241](https://github.com/avast/retdec/issues/241), [#248](https://github.com/avast/retdec/issues/248)).
* Fix: Fixed unit-tests discovery in `retdec-tests-runner.sh` on macOS ([#238](https://github.com/avast/retdec/issues/238)).
* Fix: Non-printable characters in ELF .dynamic section output are now replaced with hexadecimal codes ([#82](https://github.com/avast/retdec/issues/82)).
* Fix: Fix for several segmentation faults in ELF parsing module ([#89](https://github.com/avast/retdec/issues/89)).
* Fix: Added a workaround for a GCC 5 compilation bug ([#231](https://github.com/avast/retdec/issues/231)).
* Fix: Fix LLVM (and therefore RetDec) build on systems with architecture other than x86 ([llvm #3](https://github.com/avast/llvm/issues/3)).
* Fix: Valid Mach-O x64 relocations are no longer ignored.
* Fix: Only a single copy of LLVM (and all other components) is kept ([#14](https://github.com/avast/retdec/issues/14)).
* Fix: RetDec works even if it is installed to a directory which have whitespaces in its path.
* Fix: Reduced the length of build paths to external projects ([#61](https://github.com/avast/retdec/issues/61)).
* Fix: Build of `googletest` with VS 2017 ([#55](https://github.com/avast/retdec/issues/55)).
* Fix: Build of `retdec-config` when two different compilers are employed ([#52](https://github.com/avast/retdec/issues/52)).
* Fix: Build of the `llvm` submodule with VS 2017 when DIA SDK is installed ([#61](https://github.com/avast/retdec/issues/61)).
* Fix: Ordering of compiler detections ([#39](https://github.com/avast/retdec/issues/39)).
* Fix: Remove duplicate `lib` prefix when installing [libdwarf](https://github.com/avast/libdwarf) libraries ([#31](https://github.com/avast/retdec/issues/31)).
* Fix: When installing the decompiler, do not remove the entire `share` directory ([#12](https://github.com/avast/retdec/issues/12)).
* Fix: Improve OS type detection when installing the decompiler.
* Fix: Remove useless OS type detection when running decompilations ([#10](https://github.com/avast/retdec/issues/10)).
* Fix: Filesystem path in utils now returns correct information when it is appended with another path.
* Fix: Plain output of `fileinfo` now escapes non-printable characters in subject/issuer name/organization of PE certificates ([#253](https://github.com/avast/retdec/issues/253)).
* Fix: Invalid dates are no longer shown in the output of `fileinfo` ([#251](https://github.com/avast/retdec/issues/251)).
* Fix: Fixed crash of `fileinfo` when accessing slightly corrupted security directory ([#255](https://github.com/avast/retdec/issues/255), [#250](https://github.com/avast/retdec/issues/250)).
* Fix: Delayed imports are now ignored when calculating import-table hashes for PE files ([#287](https://github.com/avast/retdec/issues/287)).
* Fix: Import-table hashes for Mach-O binaries are now always generated even if commands for library loading are not ordered ([#285](https://github.com/avast/retdec/issues/287)).
* Fix: OpenSSL can now be built on ARM architectures (Linux and Windows) and other non-recognized architectures (Linux only) ([#299](https://github.com/avast/retdec/issues/299)).
* Fix: Decompilation in raw mode (`--mode raw`) no longer removes the original input file when cleanup option is used (`--cleanup`) ([#309](https://github.com/avast/retdec/issues/309)).
* Fix: Retdec can now be cross-compiled ([yaracpp #2](https://github.com/avast/yaracpp/pull/2)).

# v3.0 (2017-12-13)

Initial public release.


================================================
FILE: CITATION
================================================
@Misc{RetDec,
    author = {{Avast Software}},
    title = {{RetDec}: A Retargetable Machine-Code Decompiler},
    howpublished = {\url{https://retdec.com/}}
}


================================================
FILE: CMakeLists.txt
================================================

cmake_minimum_required(VERSION 3.13)

project(retdec
	LANGUAGES C CXX
	VERSION 5.0
)

include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/GetGitRevisionDescription.cmake)
get_git_head_revision(
	RETDEC_GIT_REFSPEC
	RETDEC_GIT_COMMIT_HASH
)
git_describe(
	RETDEC_GIT_VERSION_TAG
	"--tags"
)
string(TIMESTAMP RETDEC_BUILD_DATE UTC)

set(CMAKE_POSITION_INDEPENDENT_CODE ON)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

# Set the default build type to 'Release'.
if(NOT CMAKE_BUILD_TYPE)
	set(default_build_type "Release")
	message(STATUS "Setting build type to '${default_build_type}' as none was specified.")
	set(CMAKE_BUILD_TYPE "${default_build_type}" CACHE STRING "Choose the type of build." FORCE)
endif()

## Includes.
include(GNUInstallDirs)
include(CMakePackageConfigHelpers)
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/utils.cmake)
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/options.cmake)

# RetDec, and some dependencies (e.g. LLVM, Keystone), require Python 3.
find_package(Python3 3.4 REQUIRED)
set(PYTHON_EXECUTABLE ${Python3_EXECUTABLE})

### Variables.

## Repository directories.
set(RETDEC_CMAKE_DIR                "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
set(RETDEC_DEPS_DIR                 "${CMAKE_CURRENT_SOURCE_DIR}/deps")
set(RETDEC_DOC_DIR                  "${CMAKE_CURRENT_SOURCE_DIR}/doc")
set(RETDEC_INCLUDE_DIR              "${CMAKE_CURRENT_SOURCE_DIR}/include")
set(RETDEC_SCRIPTS_DIR              "${CMAKE_CURRENT_SOURCE_DIR}/scripts")
set(RETDEC_SOURCE_DIR               "${CMAKE_CURRENT_SOURCE_DIR}/src")
set(RETDEC_SUPPORT_DIR              "${CMAKE_CURRENT_SOURCE_DIR}/support")
set(RETDEC_TESTS_DIR                "${CMAKE_CURRENT_SOURCE_DIR}/tests")
## Installation directories.
# Bins.
set(RETDEC_INSTALL_BIN_DIR          "${CMAKE_INSTALL_BINDIR}")
set(RETDEC_INSTALL_BIN_DIR_ABS      "${CMAKE_INSTALL_PREFIX}/${RETDEC_INSTALL_BIN_DIR}")
set(RETDEC_INSTALL_TESTS_DIR        "${RETDEC_INSTALL_BIN_DIR}")
# Includes.
set(RETDEC_INSTALL_INCLUDE_DIR      "${CMAKE_INSTALL_INCLUDEDIR}")
set(RETDEC_INSTALL_DEPS_INCLUDE_DIR "${RETDEC_INSTALL_INCLUDE_DIR}/retdec")
# Libs.
set(RETDEC_INSTALL_LIB_DIR          "${CMAKE_INSTALL_LIBDIR}")
set(RETDEC_INSTALL_LIB_DIR_ABS      "${CMAKE_INSTALL_PREFIX}/${RETDEC_INSTALL_LIB_DIR}")
# Data.
set(RETDEC_INSTALL_DATA_DIR         "${CMAKE_INSTALL_DATADIR}/retdec")
set(RETDEC_INSTALL_CMAKE_DIR        "${RETDEC_INSTALL_DATA_DIR}/cmake")
set(RETDEC_INSTALL_DOC_DIR          "${RETDEC_INSTALL_DATA_DIR}/doc")
set(RETDEC_INSTALL_SUPPORT_DIR      "${RETDEC_INSTALL_DATA_DIR}/support")
set(RETDEC_INSTALL_SUPPORT_DIR_ABS  "${CMAKE_INSTALL_PREFIX}/${RETDEC_INSTALL_SUPPORT_DIR}")

# On Linux and macOS, set RPATH relative to the origin of the installed
# executables (i.e. relative to the bin directory). This allows us to move the
# installation directory into a different location after installation, which is
# useful e.g. when the installation is performed on one machine but we want to
# run the executables on a different machine.
#
# On Windows, there is no need to set anything as DLLs are installed into the
# bin directory, where they are automatically picked up by executables.
#
# For more details, see
#  - https://github.com/avast/retdec/issues/77
#  - https://cmake.org/Wiki/CMake_RPATH_handling
if(APPLE)
	set(CMAKE_INSTALL_RPATH "@executable_path/../lib")
elseif(UNIX)
	set(CMAKE_INSTALL_RPATH "$ORIGIN/../lib")
endif()

# Suppress superfluous ranlib warnings about "*.a" having no symbols on MacOSX.
if (APPLE)
	set(CMAKE_C_ARCHIVE_CREATE   "<CMAKE_AR> Scr <TARGET> <LINK_FLAGS> <OBJECTS>")
	set(CMAKE_CXX_ARCHIVE_CREATE "<CMAKE_AR> Scr <TARGET> <LINK_FLAGS> <OBJECTS>")
	set(CMAKE_C_ARCHIVE_FINISH   "<CMAKE_RANLIB> -no_warning_for_no_symbols -c <TARGET>")
	set(CMAKE_CXX_ARCHIVE_FINISH "<CMAKE_RANLIB> -no_warning_for_no_symbols -c <TARGET>")
endif()

# Build all external projects in the same directory that is directly inside the
# build directory. This reduces path lengths, which is important on Windows as
# there is a limit on how long a path can be.
set(EP_PREFIX "${PROJECT_BINARY_DIR}/external")
set_directory_properties(PROPERTIES EP_PREFIX "${EP_PREFIX}")

# Compilation warnings.
if(MSVC)
	# For the moment, suppress all warnings when building with MSVC on Windows
	# because there are too many warnings that clutter the build output (#106).
	# We should investigate the warnings, fix them, and then enable their
	# emission (e.g. by replacing /W0 with /W3 in the code below).
	if(CMAKE_CXX_FLAGS MATCHES "/W[0-4]")
		string(REGEX REPLACE "/W[0-4]" "/W0" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
	else()
		set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W0")
	endif()
	add_definitions(-D_SILENCE_CXX17_ITERATOR_BASE_CLASS_DEPRECATION_WARNING)

	if(RETDEC_MSVC_STATIC_RUNTIME)
		string(REPLACE "/MD" "/MT" CMAKE_CXX_FLAGS_RELEASE ${CMAKE_CXX_FLAGS_RELEASE})
		string(REPLACE "/MD" "/MT" CMAKE_C_FLAGS_RELEASE ${CMAKE_C_FLAGS_RELEASE})

		string(REPLACE "/MD" "/MT" CMAKE_CXX_FLAGS_RELWITHDEBINFO ${CMAKE_CXX_FLAGS_RELWITHDEBINFO})
		string(REPLACE "/MD" "/MT" CMAKE_C_FLAGS_RELWITHDEBINFO ${CMAKE_C_FLAGS_RELWITHDEBINFO})

		string(REPLACE "/MD" "/MT" CMAKE_CXX_FLAGS_MINSIZEREL ${CMAKE_CXX_FLAGS_MINSIZEREL})
		string(REPLACE "/MD" "/MT" CMAKE_C_FLAGS_MINSIZEREL ${CMAKE_C_FLAGS_MINSIZEREL})

		string(REPLACE "/MDd" "/MT" CMAKE_CXX_FLAGS_DEBUG ${CMAKE_CXX_FLAGS_DEBUG})
		string(REPLACE "/MDd" "/MT" CMAKE_C_FLAGS_DEBUG ${CMAKE_C_FLAGS_DEBUG})

		set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /MT")
		set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MT")
		set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT")
		set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /MT")
		set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} /MT")
		set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MT")
	endif()
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR
		CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR
		CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
	# Unify visibility to meet LLVM's default.
	include(CheckCXXCompilerFlag)

	check_cxx_compiler_flag("-fvisibility-inlines-hidden" SUPPORTS_FVISIBILITY_INLINES_HIDDEN_FLAG)
	append_if(SUPPORTS_FVISIBILITY_INLINES_HIDDEN_FLAG "-fvisibility-inlines-hidden" CMAKE_CXX_FLAGS)

	# Enable standard warnings.
	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra")

	# Enable additional warnings that are not included in -Wall and -Wextra.
	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wcast-align")
	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wcast-qual")
	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wswitch-default")
	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wuninitialized")
	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wold-style-cast")

	# Disable warnings that produce more headaches than use.
	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-parameter")
endif()

add_subdirectory(deps)
cond_add_subdirectory(doc RETDEC_DOC)
add_subdirectory(scripts)
add_subdirectory(src)
add_subdirectory(support)
add_subdirectory(tests)

# Create config version file.
write_basic_package_version_file(
	"${CMAKE_CURRENT_BINARY_DIR}/retdec-config-version.cmake"
	VERSION ${PROJECT_VERSION}
	COMPATIBILITY ExactVersion
)

# Create main RetDec CMake config file.
configure_file(
	"${CMAKE_CURRENT_LIST_DIR}/retdec-config.cmake"
	"${CMAKE_CURRENT_BINARY_DIR}/retdec-config.cmake"
	@ONLY
)

# Install CMake files.
install(
	FILES
		"${CMAKE_CURRENT_BINARY_DIR}/retdec-config.cmake"
		"${CMAKE_CURRENT_BINARY_DIR}/retdec-config-version.cmake"
	DESTINATION
		"${RETDEC_INSTALL_CMAKE_DIR}"
)

# Install licenses, readme, changelog, etc.
install(
	FILES
		CHANGELOG.md
		LICENSE
		LICENSE-PELIB
		LICENSE-THIRD-PARTY
		README.md
	DESTINATION
		"${RETDEC_INSTALL_DATA_DIR}"
)

# Install commit id file.
file(WRITE
	"${CMAKE_CURRENT_BINARY_DIR}/BUILD-ID"
	"RetDec ${RETDEC_GIT_VERSION_TAG} built from commit ${RETDEC_GIT_COMMIT_HASH} on ${RETDEC_BUILD_DATE} (UTC).\n"
)
install(
	FILES
		"${CMAKE_CURRENT_BINARY_DIR}/BUILD-ID"
	DESTINATION
		"${RETDEC_INSTALL_DATA_DIR}"
)


================================================
FILE: Dockerfile
================================================
FROM ubuntu:focal AS builder

RUN useradd -m retdec
WORKDIR /home/retdec
ENV HOME /home/retdec

RUN apt-get -y update && \
	DEBIAN_FRONTEND=noninteractive apt-get install -y   \
	build-essential                                     \
	cmake                                               \
	git                                                 \
	python3                                             \
	doxygen                                             \
	graphviz                                            \
	upx                                                 \
	openssl                                             \
	libssl-dev                                          \
	zlib1g-dev                                          \
	autoconf                                            \
	automake                                            \
	pkg-config                                          \
	m4                                                  \
	libtool                                             \
	python-is-python3

USER retdec
RUN git clone https://github.com/avast/retdec && \
	cd retdec && \
	mkdir build && \
	cd build && \
	cmake .. -DCMAKE_INSTALL_PREFIX=/home/retdec/retdec-install -DCMAKE_LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/7/ -DCMAKE_BUILD_TYPE=Release && \
	make -j$(nproc) && \
	make install

FROM ubuntu:focal

RUN useradd -m retdec
WORKDIR /home/retdec
ENV HOME /home/retdec

RUN apt-get update -y && \
	DEBIAN_FRONTEND=noninteractive apt-get install -y \
    openssl graphviz upx python3

USER retdec

COPY --from=builder /home/retdec/retdec-install /retdec-install

ENV PATH /retdec-install/bin:$PATH


================================================
FILE: Dockerfile.dev
================================================
FROM ubuntu:focal

RUN useradd -m retdec
WORKDIR /home/retdec
ENV HOME /home/retdec

RUN apt-get -y update && \
	DEBIAN_FRONTEND=noninteractive apt-get install -y   \
	build-essential                                     \
	cmake                                               \
	git                                                 \
	python3                                             \
	doxygen                                             \
	graphviz                                            \
	upx                                                 \
	openssl                                             \
	libssl-dev                                          \
	zlib1g-dev                                          \
	autoconf                                            \
	automake                                            \
	pkg-config                                          \
	m4                                                  \
	libtool                                             \
	python-is-python3

# New versions of docker (>v17.09.0-ce) support the --chown flag given to COPY.
# Once this version is more wide spread, consider updating this repository's
# Dockerfiles to use the new directive.
COPY . retdec
RUN chown -R retdec:retdec retdec

USER retdec
RUN cd retdec && \
	mkdir build && \
	cd build && \
	cmake .. -DCMAKE_INSTALL_PREFIX=/home/retdec/retdec-install -DCMAKE_LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/7/ && \
	make -j$(nproc) && \
	make install

ENV PATH /home/retdec/retdec-install/bin:$PATH


================================================
FILE: LICENSE
================================================
The MIT License (MIT)

Copyright (c) 2017 Avast Software

Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
of the Software, and to permit persons to whom the Software is furnished to do
so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.


================================================
FILE: LICENSE-PELIB
================================================
The zlib/libpng License

Copyright (c) 2004 - Sebastian Porst

This software is provided 'as-is', without any express or implied
warranty.  In no event will the authors be held liable for any damages
arising from the use of this software.

Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:

1. The origin of this software must not be misrepresented; you must not
   claim that you wrote the original software. If you use this software
   in a product, an acknowledgment in the product documentation would be
   appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
   misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.


================================================
FILE: LICENSE-THIRD-PARTY
================================================
RetDec uses third-party libraries or other resources that may be
distributed under licenses different than this software.

In the event that we accidentally failed to list a required notice,
please bring it to our attention by contacting the repository owner.

RetDec uses the following third-party libraries or other resources:

1) Capstone Engine: http://www.capstone-engine.org/
2) Elfio: http://elfio.sourceforge.net/
3) Google Test: https://github.com/avast/googletest
4) Keystone Engine: http://www.keystone-engine.org/
5) LLVM: https://llvm.org/
6) RapidJSON: https://github.com/Tencent/rapidjson
7) TinyXML-2: https://github.com/leethomason/tinyxml2
8) whereami: https://github.com/gpakosz/whereami
9) yara: https://virustotal.github.io/yara/
10) yaramod: https://github.com/avast/yaramod
11) Eigen: http://eigen.tuxfamily.org/index.php?title=Main_Page
12) cmake-modules: https://github.com/rpavlik/cmake-modules
13) tlsh: https://github.com/trendmicro/tlsh
13) stb: https://github.com/nothings/stb

These third-party libraries or other resources are licensed under the
following licenses:

===============================================================================
1) Capstone Engine
===============================================================================

This is the software license for Capstone disassembly framework.
Capstone has been designed & implemented by Nguyen Anh Quynh <aquynh@gmail.com>

See http://www.capstone-engine.org for further information.

Copyright (c) 2013, COSEINC.
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

* Redistributions of source code must retain the above copyright notice,
  this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
  this list of conditions and the following disclaimer in the documentation
  and/or other materials provided with the distribution.
* Neither the name of the developer(s) nor the names of its
  contributors may be used to endorse or promote products derived from this
  software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.

===============================================================================
2) Elfio
===============================================================================

MIT License

Copyright (C) 2001-2011 by Serge Lamikhov-Center

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

===============================================================================
3) Google Test
===============================================================================

Copyright 2008, Google Inc.
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:

    * Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
    * Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following disclaimer
in the documentation and/or other materials provided with the
distribution.
    * Neither the name of Google Inc. nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

===============================================================================
4) Keystone Engine
===============================================================================
Keystone Engine is available under a dual license:
* Version 2 of the GNU General Public License (GPLv2). (I.e. Without the "any later version" clause.). License information can be found in the COPYING file and the EXCEPTIONS-CLIENT file.
* For commercial usage in production environments, contact the authors of Keystone to buy a royalty-free license.

This repository does not use Keystone Engine commercially.
Therefore, we cite the GPLv2 as Keystone Engine license below.
In order to license this repository under the MIT license, we use the FOSS exception provided by Keystone Engine.
For more details, see https://github.com/keystone-engine/keystone/blob/master/EXCEPTIONS-CLIENT.
===============================================================================

GNU GENERAL PUBLIC LICENSE
               Version 2, June 1991

 Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

                Preamble

  The licenses for most software are designed to take away your
freedom to share and change it.  By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users.  This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it.  (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.)  You can apply it to
your programs, too.

  When we speak of free software, we are referring to freedom, not
price.  Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.

  To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.

  For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have.  You must make sure that they, too, receive or can get the
source code.  And you must show them these terms so they know their
rights.

  We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.

  Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software.  If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.

  Finally, any free program is threatened constantly by software
patents.  We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary.  To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.

  The precise terms and conditions for copying, distribution and
modification follow.

            GNU GENERAL PUBLIC LICENSE
   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

  0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License.  The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language.  (Hereinafter, translation is included without limitation in
the term "modification".)  Each licensee is addressed as "you".

Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope.  The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.

  1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.

You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.

  2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:

    a) You must cause the modified files to carry prominent notices
    stating that you changed the files and the date of any change.

    b) You must cause any work that you distribute or publish, that in
    whole or in part contains or is derived from the Program or any
    part thereof, to be licensed as a whole at no charge to all third
    parties under the terms of this License.

    c) If the modified program normally reads commands interactively
    when run, you must cause it, when started running for such
    interactive use in the most ordinary way, to print or display an
    announcement including an appropriate copyright notice and a
    notice that there is no warranty (or else, saying that you provide
    a warranty) and that users may redistribute the program under
    these conditions, and telling the user how to view a copy of this
    License.  (Exception: if the Program itself is interactive but
    does not normally print such an announcement, your work based on
    the Program is not required to print an announcement.)

These requirements apply to the modified work as a whole.  If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works.  But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.

Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.

In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.

  3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:

    a) Accompany it with the complete corresponding machine-readable
    source code, which must be distributed under the terms of Sections
    1 and 2 above on a medium customarily used for software interchange; or,

    b) Accompany it with a written offer, valid for at least three
    years, to give any third party, for a charge no more than your
    cost of physically performing source distribution, a complete
    machine-readable copy of the corresponding source code, to be
    distributed under the terms of Sections 1 and 2 above on a medium
    customarily used for software interchange; or,

    c) Accompany it with the information you received as to the offer
    to distribute corresponding source code.  (This alternative is
    allowed only for noncommercial distribution and only if you
    received the program in object code or executable form with such
    an offer, in accord with Subsection b above.)

The source code for a work means the preferred form of the work for
making modifications to it.  For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable.  However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.

If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.

  4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License.  Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.

  5. You are not required to accept this License, since you have not
signed it.  However, nothing else grants you permission to modify or
distribute the Program or its derivative works.  These actions are
prohibited by law if you do not accept this License.  Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.

  6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions.  You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.

  7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all.  For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.

If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.

It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices.  Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.

This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.

  8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded.  In such case, this License incorporates
the limitation as if written in the body of this License.

  9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time.  Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.

Each version is given a distinguishing version number.  If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation.  If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.

  10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission.  For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this.  Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.

                NO WARRANTY

  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.

  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.

             END OF TERMS AND CONDITIONS

        How to Apply These Terms to Your New Programs

  If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.

  To do so, attach the following notices to the program.  It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.

    <one line to give the program's name and a brief idea of what it does.>
    Copyright (C) <year>  <name of author>

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License along
    with this program; if not, write to the Free Software Foundation, Inc.,
    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

Also add information on how to contact you by electronic and paper mail.

If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:

    Gnomovision version 69, Copyright (C) year name of author
    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
    This is free software, and you are welcome to redistribute it
    under certain conditions; type `show c' for details.

The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License.  Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.

You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary.  Here is a sample; alter the names:

  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
  `Gnomovision' (which makes passes at compilers) written by James Hacker.

  <signature of Ty Coon>, 1 April 1989
  Ty Coon, President of Vice

This General Public License does not permit incorporating your program into
proprietary programs.  If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library.  If this is what you want to do, use the GNU Lesser General
Public License instead of this License.

===============================================================================
5) LLVM
===============================================================================

University of Illinois/NCSA
Open Source License

Copyright (c) 2003-2017 University of Illinois at Urbana-Champaign.
All rights reserved.

Developed by:

    LLVM Team

    University of Illinois at Urbana-Champaign

    http://llvm.org

Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal with
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
of the Software, and to permit persons to whom the Software is furnished to do
so, subject to the following conditions:

    * Redistributions of source code must retain the above copyright notice,
      this list of conditions and the following disclaimers.

    * Redistributions in binary form must reproduce the above copyright notice,
      this list of conditions and the following disclaimers in the
      documentation and/or other materials provided with the distribution.

    * Neither the names of the LLVM Team, University of Illinois at
      Urbana-Champaign, nor the names of its contributors may be used to
      endorse or promote products derived from this Software without specific
      prior written permission.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE
SOFTWARE.

===============================================================================
6) RapidJSON
===============================================================================

Tencent is pleased to support the open source community by making RapidJSON available.

Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.  All rights reserved.

If you have downloaded a copy of the RapidJSON binary from Tencent, please note that the RapidJSON binary is licensed under the MIT License.
If you have downloaded a copy of the RapidJSON source code from Tencent, please note that RapidJSON source code is licensed under the MIT License, except for the third-party components listed below which are subject to different license terms.  Your integration of RapidJSON into your own projects may require compliance with the MIT License, as well as the other licenses applicable to the third-party components included within RapidJSON. To avoid the problematic JSON license in your own projects, it's sufficient to exclude the bin/jsonchecker/ directory, as it's the only code under the JSON license.
A copy of the MIT License is included in this file.

Other dependencies and licenses:

Open Source Software Licensed Under the BSD License:
--------------------------------------------------------------------

The msinttypes r29
Copyright (c) 2006-2013 Alexander Chemeris
All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
* Neither the name of  copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Open Source Software Licensed Under the JSON License:
--------------------------------------------------------------------

json.org
Copyright (c) 2002 JSON.org
All Rights Reserved.

JSON_checker
Copyright (c) 2002 JSON.org
All Rights Reserved.

Terms of the JSON License:
---------------------------------------------------

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

The Software shall be used for Good, not Evil.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Terms of the MIT License:
--------------------------------------------------------------------

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

===============================================================================
7) TinyXML-2
===============================================================================

TinyXML-2 is released under the zlib license:

This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.

Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:

1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.

===============================================================================
8) whereami
===============================================================================

        DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
                    Version 2, December 2004

 Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>

 Everyone is permitted to copy and distribute verbatim or modified
 copies of this license document, and changing it is allowed as long
 as the name is changed.

            DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

  0. You just DO WHAT THE FUCK YOU WANT TO.
  1. Bla bla bla
  2. Montesqieu et camembert, vive la France, zut alors!

===============================================================================
9) YARA
===============================================================================

Copyright (c) 2007-2016. The YARA Authors. All Rights Reserved.

Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation and/or
other materials provided with the distribution.

3. Neither the name of the copyright holder nor the names of its contributors
may be used to endorse or promote products derived from this software without
specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

===============================================================================
10) yaramod
===============================================================================

The MIT License (MIT)

Copyright (c) 2017 Avast Software

Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
of the Software, and to permit persons to whom the Software is furnished to do
so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

===============================================================================
11) Eigen
===============================================================================

This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.

===============================================================================
12) cmake-modules
===============================================================================

Boost Software License - Version 1.0 - August 17th, 2003

Permission is hereby granted, free of charge, to any person or organization
obtaining a copy of the software and accompanying documentation covered by
this license (the "Software") to use, reproduce, display, distribute,
execute, and transmit the Software, and to prepare derivative works of the
Software, and to permit third-parties to whom the Software is furnished to
do so, all subject to the following:

The copyright notices in the Software and this entire statement, including
the above license grant, this restriction and the following disclaimer,
must be included in all copies of the Software, in whole or in part, and
all derivative works of the Software, unless such copies or derivative
works are solely in the form of machine-executable object code generated by
a source language processor.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.

===============================================================================
12) tlsh
===============================================================================
  =====================
   LICENSE OPTION NOTICE
   =====================
   TLSH is provided for use under two licenses: Apache OR BSD.
   Users may opt to use either license depending on the license
   restictions of the systems with which they plan to integrate
   the TLSH code.



                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS

   APPENDIX: How to apply the Apache License to your work.

      To apply the Apache License to your work, attach the following
      boilerplate notice, with the fields enclosed by brackets "[]"
      replaced with your own identifying information. (Don't include
      the brackets!)  The text should be enclosed in the appropriate
      comment syntax for the file format. We also recommend that a
      file or class name and description of purpose be included on the
      same "printed page" as the copyright notice for easier
      identification within third-party archives.

   Copyright [yyyy] [name of copyright owner]

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.


                                 BSD License Version 3
                      https://opensource.org/licenses/BSD-3-Clause

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   Redistribution and use in source and binary forms, with or without modification,
   are permitted provided that the following conditions are met:

   1. Redistributions of source code must retain the above copyright notice, this
      list of conditions and the following disclaimer.

   2. Redistributions in binary form must reproduce the above copyright notice,
      this list of conditions and the following disclaimer in the documentation
      and/or other materials provided with the distribution.

   3. Neither the name of the copyright holder nor the names of its contributors
      may be used to endorse or promote products derived from this software without
      specific prior written permission.

   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
   ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
   WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
   IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
   INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
   BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
   OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
   OF THE POSSIBILITY OF SUCH DAMAGE.


   =========================================================================
   ==  NOTICE file for use with the Apache License, Version 2.0,          ==
   ==  in this case for the Trend Locality Sensitive Hash distribution.   ==
   =========================================================================

   Trend Locality Sensitive Hash (TLSH)
   Copyright 2010-2014 Trend Micro

   This product includes software developed at
   Trend Micro (http://www.trendmicro.com/)

   Refer to the following publications for more information:

     Jonathan Oliver, Chun Cheng and Yanggui Chen,
     "TLSH - A Locality Sensitive Hash"
     4th Cybercrime and Trustworthy Computing Workshop, Sydney, November 2013
     https://github.com/trendmicro/tlsh/blob/master/TLSH_CTC_final.pdf

     Jonathan Oliver, Scott Forman and Chun Cheng,
     "Using Randomization to Attack Similarity Digests"
     Applications and Techniques in Information Security. Springer Berlin Heidelberg, 2014. 199-210.
     https://github.com/trendmicro/tlsh/blob/master/Attacking_LSH_and_Sim_Dig.pdf

     Jonathan Oliver and Jayson Pryde
     http://blog.trendmicro.com/trendlabs-security-intelligence/smart-whitelisting-using-locality-sensitive-hashing/

===============================================================================
12) stb
===============================================================================

MIT License
Copyright (c) 2017 Sean Barrett
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
of the Software, and to permit persons to whom the Software is furnished to do
so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

================================================
FILE: README.md
================================================
> **Warning**
>
> The RetDec project is currently in a **limited maintenance mode** due to a lack of resources:
> * Pull Requests are welcomed. They are reviewed with priority, if possible without delays.
> * Issues are reacted on with delays up to one quarter. Issues are not actively solved unless they relate to a basic project maintenance.
> * The basic project maintenance continues.
> * Only a very limited development is carried on.

# RetDec

[![Travis CI build status](https://travis-ci.org/avast/retdec.svg?branch=master)](https://travis-ci.org/avast/retdec)
[![TeamCity build status](https://retdec-tc.avast.com/app/rest/builds/aggregated/strob:(buildType:(project:(id:Retdec)))/statusIcon)](https://retdec-tc.avast.com/project.html?projectId=Retdec&guest=1)
[![RetDec CI](https://github.com/avast/retdec/actions/workflows/retdec-ci.yml/badge.svg)](https://github.com/avast/retdec/actions/workflows/retdec-ci.yml)

[RetDec](https://retdec.com/) is a retargetable machine-code decompiler based on [LLVM](https://llvm.org/).

The decompiler is not limited to any particular target architecture, operating system, or executable file format:
* Supported file formats: ELF, PE, Mach-O, COFF, AR (archive), Intel HEX, and raw machine code
* Supported architectures:
    * 32-bit: Intel x86, ARM, MIPS, PIC32, and PowerPC
    * 64-bit: x86-64, ARM64 (AArch64)

Features:
* Static analysis of executable files with detailed information.
* Compiler and packer detection.
* Loading and instruction decoding.
* Signature-based removal of statically linked library code.
* Extraction and utilization of debugging information (DWARF, PDB).
* Reconstruction of instruction idioms.
* Detection and reconstruction of C++ class hierarchies (RTTI, vtables).
* Demangling of symbols from C++ binaries (GCC, MSVC, Borland).
* Reconstruction of functions, types, and high-level constructs.
* Integrated disassembler.
* Output in two high-level languages: C and a Python-like language.
* Generation of call graphs, control-flow graphs, and various statistics.

For more information, check out our
* [Wiki](https://github.com/avast/retdec/wiki) (in progress)
* Botconf 2017 talk: [slides](https://retdec.com/static/publications/retdec-slides-botconf-2017.pdf), [video](https://www.youtube.com/watch?v=HHFvtt5b6yY)
* REcon Montreal 2018 talk: [slides](https://retdec.com/static/publications/retdec-slides-recon-2018.pdf)
* [Publications](https://retdec.com/publications/)

## Installation

There are two ways of obtaining and installing RetDec:
1. Download and unpack a pre-built [stable](https://github.com/avast/retdec/releases) or [bleeding-edge](https://github.com/avast/retdec#automated-teamcity-builds) package and follow instructions in the _Use_ section of its `retdec/share/retdec/README.md` file after unpacking.
2. Build RetDec by yourself from sources by following the [Build and Installation](#build-and-installation) section. After installation, follow instructions below.

We currently support Windows (7 or later), Linux, macOS, and (experimentally) FreeBSD. An installed version of RetDec requires approximately 5 to 6 GB of free disk space.

## Use

Please, ensure that you reading instructions corresponding to the used RetDec version. If unsure, refer to the `retdec/share/retdec/README.md` file in the installation.

### Windows

1. After [installing RetDec](#installation), install [Microsoft Visual C++ Redistributable for Visual Studio 2017](https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads).

2. Install the following programs:

    * [UPX](https://upx.github.io/) (Optional: if you want to use UPX unpacker in the preprocessing stage)
    * [Graphviz](https://graphviz.gitlab.io/_pages/Download/windows/graphviz-2.38.msi) (Optional: if you want to generate call or control flow graphs)

3. To decompile a binary file named `test.exe`, run

    ```
    $RETDEC_INSTALL_DIR\bin\retdec-decompiler.exe test.exe
    ```

   For more information, run `retdec-decompiler.exe` with `--help`.

### Linux

1. After [installing RetDec](#installation), install the following packages via your distribution's package manager:

    * [UPX](https://upx.github.io/) (Optional: if you want to use UPX unpacker in the preprocessing stage)
    * [Graphviz](http://www.graphviz.org/) (Optional: if you want to generate call or control flow graphs)

2. To decompile a binary file named `test.exe`, run

    ```
    $RETDEC_INSTALL_DIR/bin/retdec-decompiler test.exe
    ```

   For more information, run `retdec-decompiler` with `--help`.

### macOS

1. After [installing RetDec](#installation), install the following packages:

    * [UPX](https://upx.github.io/) (Optional: if you want to use UPX unpacker in the preprocessing stage)
    * [Graphviz](http://www.graphviz.org/) (Optional: if you want to generate call or control flow graphs)

2. To decompile a binary file named `test.exe`, run

    ```
    $RETDEC_INSTALL_DIR/bin/retdec-decompiler test.exe
    ```

   For more information, run `retdec-decompiler` with `--help`.

### FreeBSD (Experimental)

1. There are currently no pre-built "ports" packages for FreeBSD. You will have to build and install the decompiler by yourself. The process is described below.

2. To decompile a binary file named `test.exe`, run

    ```
    $RETDEC_INSTALL_DIR/bin/retdec-decompiler test.exe
    ```

   For more information, run `retdec-decompiler` with `--help`.

### Use of RetDec libraries

You can easily use various RetDec libraries in your projects - if they are build with CMake. RetDec installation contains all the necessary headers, libraries, and CMake scripts.

If you installed RetDec into a standard installation location of your system (e.g. `/usr`, `/usr/local`), all you need to do in order to use its components is:

```cmake
find_package(retdec 5.0 REQUIRED
   COMPONENTS
      <component>
      [...]
)
target_link_libraries(your-project
   PUBLIC
      retdec::<component>
      [...]
)
```

If you did not install RetDec somewhere where it can be automatically discovered, you need to help CMake find it before `find_package()` is used. There are generally two ways to do it (pick & use only one):

1. Add the RetDec installation directory to [`CMAKE_PREFIX_PATH`](https://cmake.org/cmake/help/latest/variable/CMAKE_PREFIX_PATH.html):
    ```cmake
    list(APPEND CMAKE_PREFIX_PATH ${RETDEC_INSTALL_DIR})
    ```

2. Set the path to installed RetDec CMake scripts to `retdec_DIR`:
    ```cmake
    set(retdec_DIR ${RETDEC_INSTALL_DIR}/share/retdec/cmake)
    ```

See the [Repository Overview](https://github.com/avast/retdec/wiki/Repository-Overview) wiki page for the list of available RetDec components, or the [retdec-build-system-tests](https://github.com/avast/retdec-build-system-tests) for demos on how to use them.

## Build and Installation

This section describes a local build and installation of RetDec. Instructions for Docker are given in the next section.

### Requirements

#### Linux

* A C++ compiler and standard C++ library supporting C++17 (e.g. GCC >= 7)
* [CMake](https://cmake.org/) (version >= 3.6)
* [Git](https://git-scm.com/)
* [OpenSSL](https://www.openssl.org/) (version >= 1.1.1)
* [Python](https://www.python.org/) (version >= 3.4)
* [autotools](https://en.wikipedia.org/wiki/GNU_Build_System) ([autoconf](https://www.gnu.org/software/autoconf/autoconf.html), [automake](https://www.gnu.org/software/automake/), and [libtool](https://www.gnu.org/software/libtool/))
* [pkg-config](https://www.freedesktop.org/wiki/Software/pkg-config/)
* [m4](https://www.gnu.org/software/m4/m4.html)
* [zlib](http://zlib.net/)
* Optional: [Doxygen](http://www.stack.nl/~dimitri/doxygen/) and [Graphviz](http://www.graphviz.org/) for generating API documentation

On Debian-based distributions (e.g. Ubuntu), the required packages can be installed with `apt-get`:

```sh
sudo apt-get install build-essential cmake git openssl libssl-dev python3 autoconf automake libtool pkg-config m4 zlib1g-dev upx doxygen graphviz
```

On RPM-based distributions (e.g. Fedora), the required packages can be installed with `dnf`:

```sh
sudo dnf install gcc gcc-c++ cmake make git openssl openssl-devel python3 autoconf automake libtool pkg-config m4 zlib-devel upx doxygen graphviz
```

On Arch Linux, the required packages can be installed with `pacman`:

```sh
sudo pacman --needed -S base-devel cmake git openssl python3 autoconf automake libtool pkg-config m4 zlib upx doxygen graphviz
```

#### Windows

* Microsoft Visual C++ (version >= Visual Studio 2017 version 15.7)
* [CMake](https://cmake.org/) (version >= 3.6)
* [Git](https://git-scm.com/)
* [OpenSSL](https://www.openssl.org/) (version >= 1.1.1)
* [Python](https://www.python.org/) (version >= 3.4)
* Optional: [Doxygen](http://ftp.stack.nl/pub/users/dimitri/doxygen-1.8.13-setup.exe) and [Graphviz](https://graphviz.gitlab.io/_pages/Download/windows/graphviz-2.38.msi) for generating API documentation

#### macOS

Packages should be preferably installed via [Homebrew](https://brew.sh).

* macOS >= 10.15
* Full Xcode installation ([including command-line tools](https://github.com/frida/frida/issues/338#issuecomment-426777849), see [#425](https://github.com/avast/retdec/issues/425) and [#433](https://github.com/avast/retdec/issues/433))
* [CMake](https://cmake.org/) (version >= 3.6)
* [Git](https://git-scm.com/)
* [OpenSSL](https://www.openssl.org/) (version >= 1.1.1)
* [Python](https://www.python.org/) (version >= 3.4)
* [autotools](https://en.wikipedia.org/wiki/GNU_Build_System) ([autoconf](https://www.gnu.org/software/autoconf/autoconf.html), [automake](https://www.gnu.org/software/automake/), and [libtool](https://www.gnu.org/software/libtool/))
* Optional: [Doxygen](http://www.stack.nl/~dimitri/doxygen/) and [Graphviz](http://www.graphviz.org/) for generating API documentation

#### FreeBSD (Experimental)

Packages should be installed via FreeBSDs pre-compiled package repository using the `pkg` command or built from scratch using the `ports` database method.

* Full "pkg" tool instructions: [handbook pkg method](https://www.freebsd.org/doc/handbook/pkgng-intro.html)
  * `pkg install cmake python37 git autotools`
OR
* Full "ports" instructions: [handbook ports method](https://www.freebsd.org/doc/handbook/ports-using.html)
  * `portsnap fetch`
  * `portsnap extract`
* For example, `cmake` would be
  * `whereis cmake`
  * `cd /usr/ports/devel/cmake`
  * `make install clean`

### Process

Note: Although RetDec now supports a system-wide installation ([#94](https://github.com/avast/retdec/issues/94)), unless you use your distribution's package manager to install it, we recommend installing RetDec locally into a designated directory. The reason for this is that uninstallation will be easier as you will only need to remove a single directory. To perform a local installation, run `cmake` with the `-DCMAKE_INSTALL_PREFIX=<path>` parameter, where `<path>` is directory into which RetDec will be installed (e.g. `$HOME/projects/retdec-install` on Linux and macOS, and `C:\projects\retdec-install` on Windows).

* Clone the repository:
  * `git clone https://github.com/avast/retdec`
* Linux:
  * `cd retdec`
  * `mkdir build && cd build`
  * `cmake .. -DCMAKE_INSTALL_PREFIX=<path>`
  * `make -jN` (`N` is the number of processes to use for parallel build, typically number of cores + 1 gives fastest compilation time)
  * `make install`
* Windows:
  * Open a command prompt (e.g. `cmd.exe`)
  * `cd retdec`
  * `mkdir build && cd build`
  * `cmake .. -DCMAKE_INSTALL_PREFIX=<path> -G<generator>`
  * `cmake --build . --config Release -- -m`
  * `cmake --build . --config Release --target install`
  * Alternatively, you can open `retdec.sln` generated by `cmake` in Visual Studio IDE
* macOS:
  * `cd retdec`
  * `mkdir build && cd build`
  * `cmake .. -DCMAKE_INSTALL_PREFIX=<path>`
  * `make -jN` (`N` is the number of processes to use for parallel build, typically number of cores + 1 gives fastest compilation time)
  * `make install`
* FreeBSD:
  * `sudo pkg install git cmake`
  * `git clone https://github.com/avast/retdec`
  * `cd retdec`
  * `mkdir build && cd build`
  * ```sh
    # FreeBSD (and other BSDs) do need cmake, python3, git, autotools. OpenSSL is pre-installed in the OS but check its version.
    # Later versions may be available for each of the packages.
    # See what is installed:
    sudo pkg info cmake python37 autotools
    # Install/upgrade them:
    sudo pkg install cmake python37 autotools
    ```
  * `cmake .. -DCMAKE_INSTALL_PREFIX=<path>`
  * `make -jN` (`N` is the number of processes to use for parallel build, typically number of cores + 1 gives fastest compilation time)
  * `make install`

You have to pass the following parameters to `cmake`:
* `-DCMAKE_INSTALL_PREFIX=<path>` to set the installation path to `<path>`. Quote the path if you are using backslashes on Windows (e.g. `-DCMAKE_INSTALL_PREFIX="C:\retdec"`).
* (Windows only) `-G<generator>` is `-G"Visual Studio 15 2017"` for 32-bit build using Visual Studio 2017, or `-G"Visual Studio 15 2017 Win64"` for 64-bit build using Visual Studio 2017. Later versions of Visual Studio may be used.

You can pass the following additional parameters to `cmake`:
* `-DRETDEC_DOC=ON` to build with API documentation (requires Doxygen and Graphviz, disabled by default).
* `-DRETDEC_TESTS=ON` to build with tests (disabled by default).
* `-DRETDEC_DEV_TOOLS=ON` to build with development tools (disabled by default).
* `-DRETDEC_COMPILE_YARA=OFF` to disable YARA rules compilation at installation step (enabled by default).
* `-DCMAKE_BUILD_TYPE=Debug` to build with debugging information, which is useful during development. By default, the project is built in the `Release` mode. This has no effect on Windows, but the same thing can be achieved by running `cmake --build .` with the `--config Debug` parameter.
* `-D<dep>_LOCAL_DIR=<path>` where `<dep>` is from `{CAPSTONE, GOOGLETEST, KEYSTONE, LLVM, YARA, YARAMOD}` (e.g. `-DCAPSTONE_LOCAL_DIR=<path>`), to use the local repository clone at `<path>` for RetDec dependency instead of downloading a fresh copy at build time. Multiple such options may be used at the same time.
* `-DRETDEC_ENABLE_<component>=ON` to build only the specified component(s) (multiple such options can be used at once), and its (theirs) dependencies. By default, all the components are built. If at least one component is enabled via this mechanism, all the other components that were not explicitly enabled (and are not needed as dependencies of enabled components) are not built. See [cmake/options.cmake](https://github.com/avast/retdec/blob/master/cmake/options.cmake) for all the available component options.
  * `-DRETDEC_ENABLE_ALL=ON` can be used to (re-)enable all the components.
  * Alternatively, `-DRETDEC_ENABLE=<comma-separated component list>` can be used instead of `-DRETDEC_ENABLE_<component>=ON` (e.g. `-DRETDEC_ENABLE=fileformat,loader,ctypesparser` is equivalent to `-DRETDEC_ENABLE_FILEFORMAT=ON -DRETDEC_ENABLE_LOADER=ON -DRETDEC_ENABLE_CTYPESPARSER=ON`).

## Build in Docker

Docker support is maintained by community. If something does not work for you or if you have suggestions for improvements, open an issue or PR.

### Build Image

Building in Docker does not require installation of the required libraries locally. This is a good option for trying out RetDec without setting up the whole build toolchain.

To build the RetDec Docker image, run
```
docker build -t retdec - < Dockerfile
```

This builds the image from the master branch of this repository.

To build the image using the local copy of the repository, use the development Dockerfile, `Dockerfile.dev`:
```
docker build -t retdec:dev . -f Dockerfile.dev
```

### Run Container

If your `uid` is not 1000, make sure that the directory containing your input binary files is accessible for RetDec:
```
chmod 0777 /path/to/local/directory
```
Now, you can run the decompiler inside a container:
```
docker run --rm -v /path/to/local/directory:/destination retdec retdec-decompiler /destination/binary
```
Note: Do not modify the `/destination` part is. You only need to change `/path/to/local/directory`. Output files will then be generated to `/path/to/local/directory`.

## Nightly Builds

We generate up-to-date RetDec packages from the latest commit in the `master` branch in two ways:
* Using our TeamCity servers
* Using Github Actions.

The builds are mostly meant to be used by RetDec developers, contributors, and other people experimenting with the product (e.g. testing if an issue present in the official release still exists in the current `master`).

You can use these as you wish, but keep in mind that there are no guarantees they will work on your system (especially the Linux version), and that regressions are a possibility. To get a stable RetDec version, either download the latest official pre-built package or build the latest RetDec version tag.

**TeamCity**

* [Windows Server 2016, version 10.0](https://retdec-tc.avast.com/repository/download/Retdec_WinBuild/.lastSuccessful/package/retdec-master-windows-64b.7z?guest=1)
* [Ubuntu Bionic Linux, version 18.04](https://retdec-tc.avast.com/repository/download/RetDec_LinuxBuild/.lastSuccessful/package/retdec-master-linux-64b.tar.xz?guest=1)
* [Mac OS X, version 10.14.6](https://retdec-tc.avast.com/repository/download/Retdec_MacBuild/.lastSuccessful/package/retdec-master-macos-64b.tar.xz?guest=1)

**Github Actions**

You can find builds for macOS, Linux and Windows in the [latest RetDec CI workflow run](https://github.com/avast/retdec/actions/workflows/retdec-ci.yml).

## Project Documentation

See the [project documentation](https://retdec-tc.avast.com/repository/download/Retdec_DoxygenBuild/.lastSuccessful/build/doc/doxygen/html/index.html?guest=1) for an up to date Doxygen-generated software reference corresponding to the latest commit in the `master` branch.

## Related Repositories

* [retdec-idaplugin](https://github.com/avast/retdec-idaplugin) -- Embeds RetDec into IDA (Interactive Disassembler) and makes its use much easier.
* [retdec-r2plugin](https://github.com/avast/retdec-r2plugin) -- Embeds RetDec into Radare2 and makes its use much easier.
* [retdec-regression-tests-framework](https://github.com/avast/retdec-regression-tests-framework) -- A framework for writing and running regression tests for RetDec and related tools. This is a must if you plan to contribute to the RetDec project.
* [retdec-regression-tests](https://github.com/avast/retdec-regression-tests) -- A suite of regression tests for RetDec and related tools.
* [retdec-build-system-tests](https://github.com/avast/retdec-build-system-tests) -- A suite of tests for RetDec's build system. This can also serve as a collection of demos on how to use RetDec libraries.
* [vim-syntax-retdecdsm](https://github.com/s3rvac/vim-syntax-retdecdsm) -- Vim syntax-highlighting file for the output from the RetDec's disassembler (`.dsm` files).

## License

Copyright (c) 2017 Avast Software, licensed under the MIT license. See the [`LICENSE`](https://github.com/avast/retdec/blob/master/LICENSE) file for more details.

RetDec incorporates a modified PeLib library. New modules added by Avast Software are licensed under the MIT license. The original sources are licensed under the following license:
* Copyright (c) 2004 - 2005 Sebastian Porst (webmaster@the-interweb.com), licensed under the zlib/libpng License. See the [`LICENSE-PELIB`](https://github.com/avast/retdec/blob/master/LICENSE-PELIB) file for more details.

RetDec uses third-party libraries or other resources listed, along with their licenses, in the [`LICENSE-THIRD-PARTY`](https://github.com/avast/retdec/blob/master/LICENSE-THIRD-PARTY) file.

## Contributing

See [RetDec contribution guidelines](https://github.com/avast/retdec/wiki/Contribution-Guidelines).

## Acknowledgements

This software was supported by the research funding TACR (Technology Agency of the Czech Republic), ALFA Programme No. TA01010667.


================================================
FILE: SECURITY.md
================================================
Please use [this submission form](https://www.nortonlifelock.com/us/en/contact-us/report-a-security-vulnerability/) to report any (potential) security vulnerabilities. Provide as much details as possible.


================================================
FILE: cmake/GetGitRevisionDescription.cmake
================================================
# - Returns a version string from Git
#
# These functions force a re-configure on each git commit so that you can
# trust the values of the variables in your build system.
#
#  get_git_head_revision(<refspecvar> <hashvar> [<additional arguments to git describe> ...])
#
# Returns the refspec and sha hash of the current head revision
#
#  git_describe(<var> [<additional arguments to git describe> ...])
#
# Returns the results of git describe on the source tree, and adjusting
# the output so that it tests false if an error occurs.
#
#  git_get_exact_tag(<var> [<additional arguments to git describe> ...])
#
# Returns the results of git describe --exact-match on the source tree,
# and adjusting the output so that it tests false if there was no exact
# matching tag.
#
#  git_local_changes(<var>)
#
# Returns either "CLEAN" or "DIRTY" with respect to uncommitted changes.
# Uses the return code of "git diff-index --quiet HEAD --".
# Does not regard untracked files.
#
# Requires CMake 2.6 or newer (uses the 'function' command)
#
# Original Author:
# 2009-2010 Ryan Pavlik <rpavlik@iastate.edu> <abiryan@ryand.net>
# http://academic.cleardefinition.com
# Iowa State University HCI Graduate Program/VRAC
#
# Copyright Iowa State University 2009-2010.
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE_1_0.txt or copy at
# http://www.boost.org/LICENSE_1_0.txt)

if(__get_git_revision_description)
	return()
endif()
set(__get_git_revision_description YES)

# We must run the following at "include" time, not at function call time,
# to find the path to this module rather than the path to a calling list file
get_filename_component(_gitdescmoddir ${CMAKE_CURRENT_LIST_FILE} PATH)

function(get_git_head_revision _refspecvar _hashvar)
	set(GIT_PARENT_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
	set(GIT_DIR "${GIT_PARENT_DIR}/.git")
	while(NOT EXISTS "${GIT_DIR}")	# .git dir not found, search parent directories
		set(GIT_PREVIOUS_PARENT "${GIT_PARENT_DIR}")
		get_filename_component(GIT_PARENT_DIR ${GIT_PARENT_DIR} PATH)
		if(GIT_PARENT_DIR STREQUAL GIT_PREVIOUS_PARENT)
			# We have reached the root directory, we are not in git
			set(${_refspecvar} "GITDIR-NOTFOUND" PARENT_SCOPE)
			set(${_hashvar} "GITDIR-NOTFOUND" PARENT_SCOPE)
			return()
		endif()
		set(GIT_DIR "${GIT_PARENT_DIR}/.git")
	endwhile()
	# check if this is a submodule
	if(NOT IS_DIRECTORY ${GIT_DIR})
		file(READ ${GIT_DIR} submodule)
		string(REGEX REPLACE "gitdir: (.*)\n$" "\\1" GIT_DIR_RELATIVE ${submodule})
		get_filename_component(SUBMODULE_DIR ${GIT_DIR} PATH)
		get_filename_component(GIT_DIR ${SUBMODULE_DIR}/${GIT_DIR_RELATIVE} ABSOLUTE)
	endif()
	if(NOT IS_DIRECTORY "${GIT_DIR}")
		file(READ ${GIT_DIR} worktree)
 		string(REGEX REPLACE "gitdir: (.*)worktrees(.*)\n$" "\\1" GIT_DIR ${worktree})
 	endif()
	set(GIT_DATA "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/git-data")
	if(NOT EXISTS "${GIT_DATA}")
		file(MAKE_DIRECTORY "${GIT_DATA}")
	endif()

	if(NOT EXISTS "${GIT_DIR}/HEAD")
		return()
	endif()
	set(HEAD_FILE "${GIT_DATA}/HEAD")
	configure_file("${GIT_DIR}/HEAD" "${HEAD_FILE}" COPYONLY)

	configure_file("${_gitdescmoddir}/GetGitRevisionDescription.cmake.in"
		"${GIT_DATA}/grabRef.cmake"
		@ONLY)
	include("${GIT_DATA}/grabRef.cmake")

	set(${_refspecvar} "${HEAD_REF}" PARENT_SCOPE)
	set(${_hashvar} "${HEAD_HASH}" PARENT_SCOPE)
endfunction()

function(git_describe _var)
	if(NOT GIT_FOUND)
		find_package(Git QUIET)
	endif()
	get_git_head_revision(refspec hash)
	if(NOT GIT_FOUND)
		set(${_var} "GIT-NOTFOUND" PARENT_SCOPE)
		return()
	endif()
	if(NOT hash)
		set(${_var} "HEAD-HASH-NOTFOUND" PARENT_SCOPE)
		return()
	endif()

	# TODO sanitize
	#if((${ARGN}" MATCHES "&&") OR
	#	(ARGN MATCHES "||") OR
	#	(ARGN MATCHES "\\;"))
	#	message("Please report the following error to the project!")
	#	message(FATAL_ERROR "Looks like someone's doing something nefarious with git_describe! Passed arguments ${ARGN}")
	#endif()

	#message(STATUS "Arguments to execute_process: ${ARGN}")

	execute_process(COMMAND
		"${GIT_EXECUTABLE}"
		describe
		${hash}
		${ARGN}
		WORKING_DIRECTORY
		"${CMAKE_CURRENT_SOURCE_DIR}"
		RESULT_VARIABLE
		res
		OUTPUT_VARIABLE
		out
		ERROR_QUIET
		OUTPUT_STRIP_TRAILING_WHITESPACE)
	if(NOT res EQUAL 0)
		set(out "${out}-${res}-NOTFOUND")
	endif()

	set(${_var} "${out}" PARENT_SCOPE)
endfunction()

function(git_get_exact_tag _var)
	git_describe(out --exact-match ${ARGN})
	set(${_var} "${out}" PARENT_SCOPE)
endfunction()

function(git_local_changes _var)
	if(NOT GIT_FOUND)
		find_package(Git QUIET)
	endif()
	get_git_head_revision(refspec hash)
	if(NOT GIT_FOUND)
		set(${_var} "GIT-NOTFOUND" PARENT_SCOPE)
		return()
	endif()
	if(NOT hash)
		set(${_var} "HEAD-HASH-NOTFOUND" PARENT_SCOPE)
		return()
	endif()

	execute_process(COMMAND
		"${GIT_EXECUTABLE}"
		diff-index --quiet HEAD --
		WORKING_DIRECTORY
		"${CMAKE_CURRENT_SOURCE_DIR}"
		RESULT_VARIABLE
		res
		OUTPUT_VARIABLE
		out
		ERROR_QUIET
		OUTPUT_STRIP_TRAILING_WHITESPACE)
	if(res EQUAL 0)
		set(${_var} "CLEAN" PARENT_SCOPE)
	else()
		set(${_var} "DIRTY" PARENT_SCOPE)
	endif()
endfunction()


================================================
FILE: cmake/GetGitRevisionDescription.cmake.in
================================================
#
# Internal file for GetGitRevisionDescription.cmake
#
# Requires CMake 2.6 or newer (uses the 'function' command)
#
# Original Author:
# 2009-2010 Ryan Pavlik <rpavlik@iastate.edu> <abiryan@ryand.net>
# http://academic.cleardefinition.com
# Iowa State University HCI Graduate Program/VRAC
#
# Copyright Iowa State University 2009-2010.
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE_1_0.txt or copy at
# http://www.boost.org/LICENSE_1_0.txt)

set(HEAD_HASH)

file(READ "@HEAD_FILE@" HEAD_CONTENTS LIMIT 1024)

string(STRIP "${HEAD_CONTENTS}" HEAD_CONTENTS)
if(HEAD_CONTENTS MATCHES "ref")
	# named branch
	string(REPLACE "ref: " "" HEAD_REF "${HEAD_CONTENTS}")
	if(EXISTS "@GIT_DIR@/${HEAD_REF}")
		configure_file("@GIT_DIR@/${HEAD_REF}" "@GIT_DATA@/head-ref" COPYONLY)
	else()
		configure_file("@GIT_DIR@/packed-refs" "@GIT_DATA@/packed-refs" COPYONLY)
		file(READ "@GIT_DATA@/packed-refs" PACKED_REFS)
		if(${PACKED_REFS} MATCHES "([0-9a-z]*) ${HEAD_REF}")
			set(HEAD_HASH "${CMAKE_MATCH_1}")
		endif()
	endif()
else()
	# detached HEAD
	configure_file("@GIT_DIR@/HEAD" "@GIT_DATA@/head-ref" COPYONLY)
endif()

if(NOT HEAD_HASH)
	file(READ "@GIT_DATA@/head-ref" HEAD_HASH LIMIT 1024)
	string(STRIP "${HEAD_HASH}" HEAD_HASH)
endif()


================================================
FILE: cmake/deps.cmake
================================================

set(CAPSTONE_URL
    "https://github.com/capstone-engine/capstone/archive/refs/tags/5.0-rc2.zip"
    CACHE STRING "URL of Capstone archive to use."
)
set(CAPSTONE_ARCHIVE_SHA256
    "c47acdabb9ba4922a6d68b96eb7e14a431bfef7d7c57cea1e5881f87776228b2"
    CACHE STRING ""
)

set(GOOGLETEST_URL
    "https://github.com/google/googletest/archive/90a443f9c2437ca8a682a1ac625eba64e1d74a8a.zip"
    CACHE STRING "URL of Googletest archive to use."
)
set(GOOGLETEST_ARCHIVE_SHA256
    "6fb9a49ad77656c860cfdafbb3148a91f076a3a8bda9c6d8809075c832549dd4"
    CACHE STRING ""
)

set(KEYSTONE_URL
    "https://github.com/keystone-engine/keystone/archive/d7ba8e378e5284e6384fc9ecd660ed5f6532e922.zip"
    CACHE STRING "URL of Keystone archive to use."
)
set(KEYSTONE_ARCHIVE_SHA256
    "13bd00e062e9c778fe76aaab5c163348b3c9457c0e9b2a4c2fb3e2d8747694ca"
    CACHE STRING ""
)

set(LLVM_URL
    "https://github.com/avast/llvm/archive/a776c2a976ef64d9cd84d7ee71d0e4a04aa117a1.zip"
    CACHE STRING "URL of LLVM archive to use."
)
set(LLVM_ARCHIVE_SHA256
    "b5879b30768135e5fce84ccd8be356d2c55c940ab32ceb22d278b228e88c4c60"
    CACHE STRING ""
)

set(YARA_URL
    "https://github.com/VirusTotal/yara/archive/v4.2.0-rc1.zip"
    CACHE STRING "URL of Yara archive to use."
)
set(YARA_ARCHIVE_SHA256
    "ae1adad2ae33106f4c296cef32ddba2c93867010ef853028d30cad42548d0474"
    CACHE STRING ""
)

set(YARAMOD_URL
    "https://github.com/avast/yaramod/archive/aa06dd408c492a8f4488774caf2ee105ccc23ab5.zip"
    CACHE STRING "URL of YaraMod archive to use."
)
set(YARAMOD_ARCHIVE_SHA256
    "e8583706f3b7cb22e2f5b8293cbdb96996a09fa6a64e67de7358424393f128be"
    CACHE STRING ""
)

set(SUPPORT_PKG_URL
    "https://github.com/avast/retdec-support/releases/download/2019-03-08/retdec-support_2019-03-08.tar.xz"
    CACHE STRING "URL of RetDec support package to use."
)
set(SUPPORT_PKG_SHA256
    "629351609bca0f4b8edbd4e53789192305256aeb908e953f5546e121a911d54e"
    CACHE STRING ""
)
set(SUPPORT_PKG_VERSION
    "2019-03-08"
    CACHE STRING ""
)


================================================
FILE: cmake/options.cmake
================================================

# ALL options.
#
option(RETDEC_DOC "Build public API documentation (requires Doxygen)." OFF)
option(RETDEC_TESTS "Build tests." OFF)
option(RETDEC_DEV_TOOLS "Build dev tools." OFF)
option(RETDEC_COMPILE_YARA "Compile YARA rules at installation." ON)
option(RETDEC_MSVC_STATIC_RUNTIME "Use a multi-threaded statically-linked runtime library." OFF)
option(RETDEC_USE_SYSTEM_CAPSTONE "Use Capstone installed in the system." OFF)

# Component options.
#
option(RETDEC_ENABLE_AR_EXTRACTOR "" OFF)
option(RETDEC_ENABLE_AR_EXTRACTORTOOL "" OFF)
option(RETDEC_ENABLE_BIN2LLVMIR "" OFF)
option(RETDEC_ENABLE_BIN2PAT "" OFF)
option(RETDEC_ENABLE_CAPSTONE2LLVMIR "" OFF)
option(RETDEC_ENABLE_CAPSTONE2LLVMIRTOOL "" OFF)
option(RETDEC_ENABLE_COMMON "" OFF)
option(RETDEC_ENABLE_CONFIG "" OFF)
option(RETDEC_ENABLE_CPDETECT "" OFF)
option(RETDEC_ENABLE_CTYPES "" OFF)
option(RETDEC_ENABLE_CTYPESPARSER "" OFF)
option(RETDEC_ENABLE_DEBUGFORMAT "" OFF)
option(RETDEC_ENABLE_DEMANGLER "" OFF)
option(RETDEC_ENABLE_DEMANGLERTOOL "" OFF)
option(RETDEC_ENABLE_FILEFORMAT "" OFF)
option(RETDEC_ENABLE_FILEINFO "" OFF)
option(RETDEC_ENABLE_GETSIG "" OFF)
option(RETDEC_ENABLE_IDR2PAT "" OFF)
option(RETDEC_ENABLE_LLVM_SUPPORT "" OFF)
option(RETDEC_ENABLE_LLVMIR_EMUL "" OFF)
option(RETDEC_ENABLE_LLVMIR2HLL "" OFF)
option(RETDEC_ENABLE_LOADER "" OFF)
option(RETDEC_ENABLE_MACHO_EXTRACTOR "" OFF)
option(RETDEC_ENABLE_MACHO_EXTRACTORTOOL "" OFF)
option(RETDEC_ENABLE_PAT2YARA "" OFF)
option(RETDEC_ENABLE_PATTERNGEN "" OFF)
option(RETDEC_ENABLE_PDBPARSER "" OFF)
option(RETDEC_ENABLE_PELIB "" OFF)
option(RETDEC_ENABLE_RETDEC "" OFF)
option(RETDEC_ENABLE_RETDEC_DECOMPILER "" OFF)
option(RETDEC_ENABLE_RETDECTOOL "" OFF)
option(RETDEC_ENABLE_RTTI_FINDER "" OFF)
option(RETDEC_ENABLE_SERDES "" OFF)
option(RETDEC_ENABLE_STACOFIN "" OFF)
option(RETDEC_ENABLE_STACOFINTOOL "" OFF)
option(RETDEC_ENABLE_UNPACKER "" OFF)
option(RETDEC_ENABLE_UNPACKERTOOL "" OFF)
option(RETDEC_ENABLE_UTILS "" OFF)
option(RETDEC_ENABLE_YARACPP "" OFF)

# Dependency options.
#
include(${PROJECT_SOURCE_DIR}/cmake/deps.cmake)

# Default: ALL build is enabled.
#
option(RETDEC_ENABLE_ALL "" ON)

# Convert target list in RETDEC_ENABLE to RETDEC_ENABLE_<component> flags.
#
macro(set_if_equal v string res)
	if(${v} STREQUAL ${string})
		set(${res} ON)
	endif()
endmacro()
string(REPLACE "," ";" RETDEC_ENABLE "${RETDEC_ENABLE}")
foreach(t ${RETDEC_ENABLE})
	set_if_equal(${t} "ar-extractor" RETDEC_ENABLE_AR_EXTRACTOR)
	set_if_equal(${t} "ar-extractortool" RETDEC_ENABLE_AR_EXTRACTORTOOL)
	set_if_equal(${t} "bin2llvmir" RETDEC_ENABLE_BIN2LLVMIR)
	set_if_equal(${t} "bin2pat" RETDEC_ENABLE_BIN2PAT)
	set_if_equal(${t} "capstone2llvmir" RETDEC_ENABLE_CAPSTONE2LLVMIR)
	set_if_equal(${t} "capstone2llvmirtool" RETDEC_ENABLE_CAPSTONE2LLVMIRTOOL)
	set_if_equal(${t} "common" RETDEC_ENABLE_COMMON)
	set_if_equal(${t} "config" RETDEC_ENABLE_CONFIG)
	set_if_equal(${t} "cpdetect" RETDEC_ENABLE_CPDETECT)
	set_if_equal(${t} "ctypes" RETDEC_ENABLE_CTYPES)
	set_if_equal(${t} "ctypesparser" RETDEC_ENABLE_CTYPESPARSER)
	set_if_equal(${t} "debugformat" RETDEC_ENABLE_DEBUGFORMAT)
	set_if_equal(${t} "demangler" RETDEC_ENABLE_DEMANGLER)
	set_if_equal(${t} "demanglertool" RETDEC_ENABLE_DEMANGLERTOOL)
	set_if_equal(${t} "fileformat" RETDEC_ENABLE_FILEFORMAT)
	set_if_equal(${t} "fileinfo" RETDEC_ENABLE_FILEINFO)
	set_if_equal(${t} "getsig" RETDEC_ENABLE_GETSIG)
	set_if_equal(${t} "idr2pat" RETDEC_ENABLE_IDR2PAT)
	set_if_equal(${t} "llvmir-emul" RETDEC_ENABLE_LLVMIR_EMUL)
	set_if_equal(${t} "llvmir2hll" RETDEC_ENABLE_LLVMIR2HLL)
	set_if_equal(${t} "loader" RETDEC_ENABLE_LOADER)
	set_if_equal(${t} "extractor" RETDEC_ENABLE_MACHO_EXTRACTOR)
	set_if_equal(${t} "extractortool" RETDEC_ENABLE_MACHO_EXTRACTORTOOL)
	set_if_equal(${t} "pat2yara" RETDEC_ENABLE_PAT2YARA)
	set_if_equal(${t} "patterngen" RETDEC_ENABLE_PATTERNGEN)
	set_if_equal(${t} "pdbparser" RETDEC_ENABLE_PDBPARSER)
	set_if_equal(${t} "pelib" RETDEC_ENABLE_PELIB)
	set_if_equal(${t} "retdec" RETDEC_ENABLE_RETDEC)
	set_if_equal(${t} "retde-decompiler" RETDEC_ENABLE_RETDEC_DECOMPILER)
	set_if_equal(${t} "retdectool" RETDEC_ENABLE_RETDECTOOL)
	set_if_equal(${t} "rtti-finder" RETDEC_ENABLE_RTTI_FINDER)
	set_if_equal(${t} "serdes" RETDEC_ENABLE_SERDES)
	set_if_equal(${t} "stacofin" RETDEC_ENABLE_STACOFIN)
	set_if_equal(${t} "stacofintool" RETDEC_ENABLE_STACOFINTOOL)
	set_if_equal(${t} "unpacker" RETDEC_ENABLE_UNPACKER)
	set_if_equal(${t} "unpackertool" RETDEC_ENABLE_UNPACKERTOOL)
	set_if_equal(${t} "utils" RETDEC_ENABLE_UTILS)
	set_if_equal(${t} "yaracpp" RETDEC_ENABLE_YARACPP)
endforeach()

# If at least one RETDEC_ENABLE_<component> is set, disable RETDEC_ENABLE_ALL.
#
if (RETDEC_ENABLE_AR_EXTRACTOR
	OR RETDEC_ENABLE_AR_EXTRACTORTOOL
	OR RETDEC_ENABLE_BIN2LLVMIR
	OR RETDEC_ENABLE_BIN2PAT
	OR RETDEC_ENABLE_CAPSTONE2LLVMIR
	OR RETDEC_ENABLE_CAPSTONE2LLVMIRTOOL
	OR RETDEC_ENABLE_COMMON
	OR RETDEC_ENABLE_CONFIG
	OR RETDEC_ENABLE_CPDETECT
	OR RETDEC_ENABLE_CTYPES
	OR RETDEC_ENABLE_CTYPESPARSER
	OR RETDEC_ENABLE_DEBUGFORMAT
	OR RETDEC_ENABLE_DEMANGLER
	OR RETDEC_ENABLE_DEMANGLERTOOL
	OR RETDEC_ENABLE_FILEFORMAT
	OR RETDEC_ENABLE_FILEINFO
	OR RETDEC_ENABLE_GETSIG
	OR RETDEC_ENABLE_IDR2PAT
	OR RETDEC_ENABLE_LLVM_SUPPORT
	OR RETDEC_ENABLE_LLVMIR_EMUL
	OR RETDEC_ENABLE_LLVMIR2HLL
	OR RETDEC_ENABLE_LOADER
	OR RETDEC_ENABLE_MACHO_EXTRACTOR
	OR RETDEC_ENABLE_MACHO_EXTRACTORTOOL
	OR RETDEC_ENABLE_PAT2YARA
	OR RETDEC_ENABLE_PATTERNGEN
	OR RETDEC_ENABLE_PDBPARSER
	OR RETDEC_ENABLE_PELIB
	OR RETDEC_ENABLE_RETDEC
	OR RETDEC_ENABLE_RETDEC_DECOMPILER
	OR RETDEC_ENABLE_RETDECTOOL
	OR RETDEC_ENABLE_RTTI_FINDER
	OR RETDEC_ENABLE_SERDES
	OR RETDEC_ENABLE_STACOFIN
	OR RETDEC_ENABLE_STACOFINTOOL
	OR RETDEC_ENABLE_UNPACKER
	OR RETDEC_ENABLE_UNPACKERTOOL
	OR RETDEC_ENABLE_UTILS
	OR RETDEC_ENABLE_YARACPP)
	set(RETDEC_ENABLE_ALL OFF)
endif()

# Enable chosen components.
# Whenever a component is directly using another component, it must be noted
# in here.
#
macro(set_if_at_least_one_set res)
	foreach(v ${ARGN})
		if(${${v}})
			set(${res} ON)
			break()
		endif()
	endforeach()
endmacro()

macro(set_if_all_set res)
	set(r ON)
	foreach(v ${ARGN})
		if(NOT ${${v}})
			set(r OFF)
			break()
		endif()
	endforeach()
	set(${res} ${r})
endmacro()

# src

# Executables - targets are not used anywhere.
set_if_at_least_one_set(RETDEC_ENABLE_AR_EXTRACTORTOOL
		RETDEC_ENABLE_ALL)

set_if_at_least_one_set(RETDEC_ENABLE_BIN2PAT
		RETDEC_ENABLE_ALL)

if(RETDEC_DEV_TOOLS)
	set_if_at_least_one_set(RETDEC_ENABLE_CAPSTONE2LLVMIRTOOL
			RETDEC_ENABLE_ALL)
endif()

if(RETDEC_DEV_TOOLS)
	set_if_at_least_one_set(RETDEC_ENABLE_DEMANGLERTOOL
			RETDEC_ENABLE_ALL)
endif()

set_if_at_least_one_set(RETDEC_ENABLE_FILEINFO
		RETDEC_ENABLE_ALL)

set_if_at_least_one_set(RETDEC_ENABLE_GETSIG
		RETDEC_ENABLE_ALL)

set_if_at_least_one_set(RETDEC_ENABLE_IDR2PAT
		RETDEC_ENABLE_ALL)

set_if_at_least_one_set(RETDEC_ENABLE_MACHO_EXTRACTORTOOL
		RETDEC_ENABLE_ALL)

set_if_at_least_one_set(RETDEC_ENABLE_PAT2YARA
		RETDEC_ENABLE_ALL)

set_if_at_least_one_set(RETDEC_ENABLE_RETDEC_DECOMPILER
		RETDEC_ENABLE_ALL)

if(RETDEC_DEV_TOOLS)
	set_if_at_least_one_set(RETDEC_ENABLE_RETDECTOOL
			RETDEC_ENABLE_ALL)
endif()

set_if_at_least_one_set(RETDEC_ENABLE_STACOFINTOOL
		RETDEC_ENABLE_ALL)

set_if_at_least_one_set(RETDEC_ENABLE_UNPACKERTOOL
		RETDEC_ENABLE_ALL)

# Libraries - order matters.
set_if_at_least_one_set(RETDEC_ENABLE_RETDEC
		RETDEC_ENABLE_RETDEC_DECOMPILER
		RETDEC_ENABLE_RETDECTOOL
		RETDEC_ENABLE_ALL)

set_if_at_least_one_set(RETDEC_ENABLE_MACHO_EXTRACTOR
		RETDEC_ENABLE_ALL
		RETDEC_ENABLE_MACHO_EXTRACTORTOOL)

set_if_at_least_one_set(RETDEC_ENABLE_AR_EXTRACTOR
		RETDEC_ENABLE_ALL
		RETDEC_ENABLE_AR_EXTRACTORTOOL
		RETDEC_ENABLE_FILEINFO)

set_if_at_least_one_set(RETDEC_ENABLE_BIN2LLVMIR
		RETDEC_ENABLE_ALL
		RETDEC_ENABLE_RETDEC)

set_if_at_least_one_set(RETDEC_ENABLE_LLVMIR2HLL
		RETDEC_ENABLE_ALL
		RETDEC_ENABLE_RETDEC)

set_if_at_least_one_set(RETDEC_ENABLE_UNPACKER
		RETDEC_ENABLE_ALL
		RETDEC_ENABLE_UNPACKERTOOL)

set_if_at_least_one_set(RETDEC_ENABLE_PATTERNGEN
		RETDEC_ENABLE_ALL
		RETDEC_ENABLE_BIN2PAT
		RETDEC_ENABLE_PAT2YARA)

set_if_at_least_one_set(RETDEC_ENABLE_CAPSTONE2LLVMIR
		RETDEC_ENABLE_ALL
		RETDEC_ENABLE_BIN2LLVMIR
		RETDEC_ENABLE_CAPSTONE2LLVMIRTOOL)

set_if_at_least_one_set(RETDEC_ENABLE_STACOFIN
		RETDEC_ENABLE_ALL
		RETDEC_ENABLE_BIN2LLVMIR
		RETDEC_ENABLE_STACOFINTOOL)

set_if_at_least_one_set(RETDEC_ENABLE_CPDETECT
		RETDEC_ENABLE_ALL
		RETDEC_ENABLE_FILEINFO
		RETDEC_ENABLE_BIN2LLVMIR
		RETDEC_ENABLE_UNPACKERTOOL)

set_if_at_least_one_set(RETDEC_ENABLE_RTTI_FINDER
		RETDEC_ENABLE_ALL
		RETDEC_ENABLE_BIN2LLVMIR)

set_if_at_least_one_set(RETDEC_ENABLE_DEBUGFORMAT
		RETDEC_ENABLE_ALL
		RETDEC_ENABLE_BIN2LLVMIR)

set_if_at_least_one_set(RETDEC_ENABLE_DEMANGLER
		RETDEC_ENABLE_ALL
		RETDEC_ENABLE_BIN2LLVMIR
		RETDEC_ENABLE_DEBUGFORMAT
		RETDEC_ENABLE_DEMANGLERTOOL)

set_if_at_least_one_set(RETDEC_ENABLE_CTYPESPARSER
		RETDEC_ENABLE_ALL
		RETDEC_ENABLE_BIN2LLVMIR
		RETDEC_ENABLE_DEMANGLER)

set_if_at_least_one_set(RETDEC_ENABLE_CTYPES
		RETDEC_ENABLE_ALL
		RETDEC_ENABLE_CTYPESPARSER)

set_if_at_least_one_set(RETDEC_ENABLE_PDBPARSER
		RETDEC_ENABLE_DEBUGFORMAT)

set_if_at_least_one_set(RETDEC_ENABLE_LOADER
		RETDEC_ENABLE_ALL
		RETDEC_ENABLE_BIN2LLVMIR
		RETDEC_ENABLE_DEBUGFORMAT
		RETDEC_ENABLE_FILEINFO
		RETDEC_ENABLE_RTTI_FINDER
		RETDEC_ENABLE_STACOFIN
		RETDEC_ENABLE_STACOFINTOOL
		RETDEC_ENABLE_UNPACKER
		RETDEC_ENABLE_UNPACKERTOOL)

set_if_at_least_one_set(RETDEC_ENABLE_FILEFORMAT
		RETDEC_ENABLE_ALL
		RETDEC_ENABLE_BIN2LLVMIR
		RETDEC_ENABLE_CPDETECT
		RETDEC_ENABLE_DEBUGFORMAT
		RETDEC_ENABLE_FILEINFO
		RETDEC_ENABLE_GETSIG
		RETDEC_ENABLE_LOADER
		RETDEC_ENABLE_PATTERNGEN
		RETDEC_ENABLE_UNPACKERTOOL)

set_if_at_least_one_set(RETDEC_ENABLE_PELIB
		RETDEC_ENABLE_FILEFORMAT
		RETDEC_ENABLE_UNPACKERTOOL)

set_if_at_least_one_set(RETDEC_ENABLE_LLVM_SUPPORT
		RETDEC_ENABLE_ALL
		RETDEC_ENABLE_BIN2LLVMIR
		RETDEC_ENABLE_LLVMIR2HLL)

set_if_at_least_one_set(RETDEC_ENABLE_CONFIG
		RETDEC_ENABLE_ALL
		RETDEC_ENABLE_BIN2LLVMIR
		RETDEC_ENABLE_FILEINFO
		RETDEC_ENABLE_LLVMIR2HLL
		RETDEC_ENABLE_STACOFIN)

set_if_at_least_one_set(RETDEC_ENABLE_SERDES
		RETDEC_ENABLE_ALL
		RETDEC_ENABLE_CONFIG)

set_if_at_least_one_set(RETDEC_ENABLE_COMMON
		RETDEC_ENABLE_ALL
		RETDEC_ENABLE_BIN2LLVMIR
		RETDEC_ENABLE_CAPSTONE2LLVMIR
		RETDEC_ENABLE_CONFIG
		RETDEC_ENABLE_DEBUGFORMAT
		RETDEC_ENABLE_FILEFORMAT
		RETDEC_ENABLE_LOADER
		RETDEC_ENABLE_RTTI_FINDER
		RETDEC_ENABLE_SERDES
		RETDEC_ENABLE_STACOFIN)

set_if_at_least_one_set(RETDEC_ENABLE_UTILS
		RETDEC_ENABLE_ALL
		RETDEC_ENABLE_AR_EXTRACTOR
		RETDEC_ENABLE_AR_EXTRACTORTOOL
		RETDEC_ENABLE_BIN2LLVMIR
		RETDEC_ENABLE_BIN2PAT
		RETDEC_ENABLE_CAPSTONE2LLVMIRTOOL
		RETDEC_ENABLE_CONFIG
		RETDEC_ENABLE_COMMON
		RETDEC_ENABLE_CTYPES
		RETDEC_ENABLE_CTYPESPARSER
		RETDEC_ENABLE_FILEFORMAT
		RETDEC_ENABLE_FILEINFO
		RETDEC_ENABLE_IDR2PAT
		RETDEC_ENABLE_LLVM_SUPPORT
		RETDEC_ENABLE_LLVMIR2HLL
		RETDEC_ENABLE_LOADER
		RETDEC_ENABLE_MACHO_EXTRACTOR
		RETDEC_ENABLE_MACHO_EXTRACTORTOOL
		RETDEC_ENABLE_CPDETECT
		RETDEC_ENABLE_PATTERNGEN
		RETDEC_ENABLE_RTTI_FINDER
		RETDEC_ENABLE_STACOFIN
		RETDEC_ENABLE_UNPACKERTOOL)

set_if_at_least_one_set(RETDEC_ENABLE_YARACPP
		RETDEC_ENABLE_ALL
		RETDEC_ENABLE_CPDETECT
		RETDEC_ENABLE_FILEINFO
		RETDEC_ENABLE_STACOFIN)

# tests
set_if_all_set(RETDEC_ENABLE_BIN2LLVMIR_TESTS
		RETDEC_TESTS
		RETDEC_ENABLE_BIN2LLVMIR)
set_if_all_set(RETDEC_ENABLE_CAPSTONE2LLVMIR_TESTS
		RETDEC_TESTS
		RETDEC_ENABLE_CAPSTONE2LLVMIR)
set_if_all_set(RETDEC_ENABLE_CONFIG_TESTS
		RETDEC_TESTS
		RETDEC_ENABLE_CONFIG)
set_if_all_set(RETDEC_ENABLE_CTYPES_TESTS
		RETDEC_TESTS
		RETDEC_ENABLE_CTYPES)
set_if_all_set(RETDEC_ENABLE_CTYPESPARSER_TESTS
		RETDEC_TESTS
		RETDEC_ENABLE_CTYPESPARSER)
set_if_all_set(RETDEC_ENABLE_DEMANGLER_TESTS
		RETDEC_TESTS
		RETDEC_ENABLE_DEMANGLER)
set_if_all_set(RETDEC_ENABLE_FILEFORMAT_TESTS
		RETDEC_TESTS
		RETDEC_ENABLE_FILEFORMAT)
set_if_all_set(RETDEC_ENABLE_LLVMIR_EMUL_TESTS
		RETDEC_TESTS
		RETDEC_ENABLE_LLVMIR_EMUL)
set_if_all_set(RETDEC_ENABLE_LLVMIR2HLL_TESTS
		RETDEC_TESTS
		RETDEC_ENABLE_LLVMIR2HLL)
set_if_all_set(RETDEC_ENABLE_LOADER_TESTS
		RETDEC_TESTS
		RETDEC_ENABLE_LOADER)
set_if_all_set(RETDEC_ENABLE_SERDES_TESTS
		RETDEC_TESTS
		RETDEC_ENABLE_SERDES)
set_if_all_set(RETDEC_ENABLE_UNPACKER_TESTS
		RETDEC_TESTS
		RETDEC_ENABLE_UNPACKER)
set_if_all_set(RETDEC_ENABLE_COMMON_TESTS
		RETDEC_TESTS
		RETDEC_ENABLE_COMMON)
set_if_all_set(RETDEC_ENABLE_UTILS_TESTS
		RETDEC_TESTS
		RETDEC_ENABLE_UTILS)

# src depending on tests
set_if_at_least_one_set(RETDEC_ENABLE_LLVMIR_EMUL
		RETDEC_ENABLE_CAPSTONE2LLVMIR_TESTS)

# deps
set_if_at_least_one_set(RETDEC_ENABLE_AUTHENTICODE_PARSER
		RETDEC_ENABLE_FILEFORMAT)

set_if_at_least_one_set(RETDEC_ENABLE_CAPSTONE
		RETDEC_ENABLE_CAPSTONE2LLVMIR
		RETDEC_ENABLE_STACOFIN)

set_if_at_least_one_set(RETDEC_ENABLE_ELFIO
		RETDEC_ENABLE_FILEFORMAT)

set_if_at_least_one_set(RETDEC_ENABLE_GOOGLETEST
		RETDEC_ENABLE_BIN2LLVMIR_TESTS
		RETDEC_ENABLE_CAPSTONE2LLVMIR_TESTS
		RETDEC_ENABLE_COMMON_TESTS
		RETDEC_ENABLE_CONFIG_TESTS
		RETDEC_ENABLE_CTYPES_TESTS
		RETDEC_ENABLE_CTYPESPARSER_TESTS
		RETDEC_ENABLE_DEMANGLER_TESTS
		RETDEC_ENABLE_FILEFORMAT_TESTS
		RETDEC_ENABLE_LLVMIR_EMUL_TESTS
		RETDEC_ENABLE_LLVMIR2HLL_TESTS
		RETDEC_ENABLE_LOADER_TESTS
		RETDEC_ENABLE_SERDES_TESTS
		RETDEC_ENABLE_UNPACKER_TESTS
		RETDEC_ENABLE_UTILS_TESTS)

set_if_at_least_one_set(RETDEC_ENABLE_KEYSTONE
		RETDEC_ENABLE_CAPSTONE2LLVMIRTOOL
		RETDEC_ENABLE_CAPSTONE2LLVMIR_TESTS)

set_if_at_least_one_set(RETDEC_ENABLE_LLVM
		RETDEC_ENABLE_AR_EXTRACTOR
		RETDEC_ENABLE_BIN2LLVMIR
		RETDEC_ENABLE_CAPSTONE2LLVMIR
		RETDEC_ENABLE_DEMANGLER
		RETDEC_ENABLE_FILEFORMAT
		RETDEC_ENABLE_LLVM_SUPPORT
		RETDEC_ENABLE_LLVMIR_EMUL
		RETDEC_ENABLE_LLVMIR2HLL
		RETDEC_ENABLE_MACHO_EXTRACTOR
		RETDEC_ENABLE_CPDETECT
		RETDEC_ENABLE_DEBUGFORMAT)

set_if_at_least_one_set(RETDEC_ENABLE_RAPIDJSON
		RETDEC_ENABLE_AR_EXTRACTOR
		RETDEC_ENABLE_AR_EXTRACTORTOOL
		RETDEC_ENABLE_CONFIG
		RETDEC_ENABLE_CTYPESPARSER
		RETDEC_ENABLE_FILEINFO
		RETDEC_ENABLE_MACHO_EXTRACTOR
		RETDEC_ENABLE_MACHO_EXTRACTORTOOL
		RETDEC_ENABLE_SERDES)

set_if_at_least_one_set(RETDEC_ENABLE_TINYXML2
		RETDEC_ENABLE_TINYXML2
		RETDEC_ENABLE_FILEINFO
		RETDEC_ENABLE_CPDETECT)

set_if_at_least_one_set(RETDEC_ENABLE_VARIANT
		RETDEC_ENABLE_UTILS)

set_if_at_least_one_set(RETDEC_ENABLE_YARA
		RETDEC_ENABLE_YARACPP)

set_if_at_least_one_set(RETDEC_ENABLE_YARAMOD
		RETDEC_ENABLE_BIN2PAT
		RETDEC_ENABLE_IDR2PAT
		RETDEC_ENABLE_PAT2YARA
		RETDEC_ENABLE_PATTERNGEN)

set_if_at_least_one_set(RETDEC_ENABLE_TLSH
		RETDEC_ENABLE_FILEFORMAT)

set_if_at_least_one_set(RETDEC_ENABLE_STB
		RETDEC_ENABLE_FILEFORMAT)

# Support

set_if_at_least_one_set(RETDEC_ENABLE_SUPPORT_ORDINALS
		RETDEC_ENABLE_BIN2LLVMIR)

set_if_at_least_one_set(RETDEC_ENABLE_SUPPORT_TYPES
		RETDEC_ENABLE_BIN2LLVMIR)

set_if_at_least_one_set(RETDEC_ENABLE_SUPPORT_YARA_SIGNSRCH
		RETDEC_ENABLE_RETDEC
		RETDEC_ENABLE_FILEINFO)

set_if_at_least_one_set(RETDEC_ENABLE_SUPPORT_YARA_TOOLS
		RETDEC_ENABLE_RETDEC
		RETDEC_ENABLE_CPDETECT
		RETDEC_ENABLE_FILEINFO)

set_if_at_least_one_set(RETDEC_ENABLE_SUPPORT_YARA_STATIC_CODE
		RETDEC_ENABLE_RETDEC)


================================================
FILE: cmake/utils.cmake
================================================
#
# Utility functions, macros, etc.
#

function(append_if condition value)
	if (${condition})
		foreach(variable ${ARGN})
			set(${variable} "${${variable}} ${value}" PARENT_SCOPE)
		endforeach(variable)
	endif()
endfunction()

# Forces a configure step for the given external project.
# The configure step for external projects is needed to (1) detect source-file
# changes and (2) fix infinite recursion of 'make' after a terminated build.
# Usage example: force_configure_step(your-external-project)
macro(force_configure_step target)
	# This solution is based on
	# http://comments.gmane.org/gmane.comp.programming.tools.cmake.user/43024
	ExternalProject_Add_Step(${target} force-configure
		COMMAND ${CMAKE_COMMAND} -E echo "Force configure of ${target}"
		DEPENDEES update
		DEPENDERS configure
		ALWAYS 1
	)
endmacro()

# Check if 'variable' changed between two consequent CMake runs.
# Return bool in 'result'.
# Usage example:
#     check_if_variable_changed(VAR CHANGED)
#     if (CHANGED)
#         ...
#     endif()
# Sources:
# https://stackoverflow.com/questions/43542381/set-a-cmake-variable-if-it-is-not-changed-by-the-user
# https://markdewing.github.io/blog/posts/notes-on-cmake/
function(check_if_variable_changed variable result)
	if(NOT DEFINED ${variable})
		set(${variable} "")
	endif()

	if(NOT DEFINED ${variable}_old)
		set(${variable}_old ${${variable}} CACHE INTERNAL "Copy of ${variable}")
	endif()

	if(${variable} STREQUAL ${variable}_old)
		set(${result} FALSE PARENT_SCOPE)
	else()
		set(${result} TRUE PARENT_SCOPE)
	endif()
	# Store current value in the "shadow" variable unconditionally.
	set(${variable}_old ${${variable}} CACHE INTERNAL "Copy of ${variable}")
endfunction()

# Clean all CMake files in the given 'directory'.
# Sources:
# https://stackoverflow.com/questions/9680420/looking-for-a-cmake-clean-command-to-clear-up-cmake-output
function(clean_cmake_files directory)
	set(cmake_generated
		${directory}/CMakeCache.txt
		${directory}/cmake_install.cmake
		${directory}/Makefile
		${directory}/CMakeFiles
	)

	foreach(file ${cmake_generated})
		if (EXISTS ${file})
			file(REMOVE_RECURSE ${file})
		endif()
	endforeach(file)
endfunction()

# add_subdirectory(dir) if the cond is true,
#
macro(cond_add_subdirectory dir cond)
	if(${cond})
		add_subdirectory(${dir})
	endif()
endmacro()


================================================
FILE: deps/CMakeLists.txt
================================================

include(ExternalProject)

include(ProcessorCount)
ProcessorCount(CPUS)

if(CMAKE_C_COMPILER)
	set(CMAKE_C_COMPILER_OPTION "-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}")
endif()
if(CMAKE_CXX_COMPILER)
	set(CMAKE_CXX_COMPILER_OPTION "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}")
endif()

set(MSVC_GE $<BOOL:${MSVC}>)
set(MSVC_CONFIG $<${MSVC_GE}:$<CONFIG>/>)

cond_add_subdirectory(stb RETDEC_ENABLE_STB)
cond_add_subdirectory(authenticode-parser RETDEC_ENABLE_AUTHENTICODE_PARSER)
cond_add_subdirectory(capstone RETDEC_ENABLE_CAPSTONE)
cond_add_subdirectory(elfio RETDEC_ENABLE_ELFIO)
cond_add_subdirectory(googletest RETDEC_ENABLE_GOOGLETEST)
cond_add_subdirectory(keystone RETDEC_ENABLE_KEYSTONE)
cond_add_subdirectory(llvm RETDEC_ENABLE_LLVM)
cond_add_subdirectory(rapidjson RETDEC_ENABLE_RAPIDJSON)
cond_add_subdirectory(tinyxml2 RETDEC_ENABLE_TINYXML2)
cond_add_subdirectory(yara RETDEC_ENABLE_YARA)
cond_add_subdirectory(yaramod RETDEC_ENABLE_YARAMOD)
cond_add_subdirectory(tlsh RETDEC_ENABLE_TLSH)


================================================
FILE: deps/authenticode-parser/CMakeLists.txt
================================================

find_package(OpenSSL 1.1.1 REQUIRED)

add_library(authenticode STATIC
	src/authenticode.c
	src/helper.c
	src/structs.c
	src/countersignature.c
	src/certificate.c
)

add_library(retdec::deps::authenticode ALIAS authenticode)

include (TestBigEndian)
TEST_BIG_ENDIAN(IS_BIG_ENDIAN)
if(IS_BIG_ENDIAN)
        target_compile_definitions(-DWORDS_BIGENDIAN)
endif()

# Disable all warnings from this 3rd party project.
if(MSVC)
	target_compile_options(authenticode PRIVATE "/w")
else()
	target_compile_options(authenticode PRIVATE "-w")
endif()

target_include_directories(authenticode
	PUBLIC
		$<BUILD_INTERFACE:${RETDEC_DEPS_DIR}/authenticode-parser/include>
		$<INSTALL_INTERFACE:${RETDEC_INSTALL_DEPS_INCLUDE_DIR}>
	PRIVATE
		${CMAKE_CURRENT_SOURCE_DIR}/src
)

target_link_libraries(authenticode
	PRIVATE
		OpenSSL::Crypto
)

set_target_properties(authenticode
	PROPERTIES
		OUTPUT_NAME "retdec-authenticode"
)

# Install includes.
install(
	DIRECTORY ${RETDEC_DEPS_DIR}/authenticode-parser/include/
	DESTINATION ${RETDEC_INSTALL_DEPS_INCLUDE_DIR}
)

# Install libs.
install(TARGETS authenticode
	EXPORT authenticode-targets
	ARCHIVE DESTINATION ${RETDEC_INSTALL_LIB_DIR}
	LIBRARY DESTINATION ${RETDEC_INSTALL_LIB_DIR}
)

# Export targets.
install(EXPORT authenticode-targets
	FILE "retdec-authenticode-targets.cmake"
	NAMESPACE retdec::deps::
	DESTINATION ${RETDEC_INSTALL_CMAKE_DIR}
)

# Install CMake files.
install(
	FILES
		"${CMAKE_CURRENT_LIST_DIR}/retdec-authenticode-config.cmake"
	DESTINATION
		"${RETDEC_INSTALL_CMAKE_DIR}"
)


================================================
FILE: deps/authenticode-parser/include/authenticode-parser/authenticode.h
================================================
/* Copyright (c) 2021 Avast Software

Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
of the Software, and to permit persons to whom the Software is furnished to do
so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
*/

#ifndef AUTHENTICODE_PARSER_AUTHENTICODE_H
#define AUTHENTICODE_PARSER_AUTHENTICODE_H

#ifdef __cplusplus
extern "C" {
#endif

#include <stdint.h>
#include <time.h>

/* Signature is valid */
#define AUTHENTICODE_VFY_VALID             0
/* Parsing error (from OpenSSL functions) */
#define AUTHENTICODE_VFY_CANT_PARSE        1
/* Signers certificate is missing */
#define AUTHENTICODE_VFY_NO_SIGNER_CERT    2
/* No digest saved inside the signature */
#define AUTHENTICODE_VFY_DIGEST_MISSING    3
/* Non verification errors - allocations etc. */
#define AUTHENTICODE_VFY_INTERNAL_ERROR    4
/* SignerInfo part of PKCS7 is missing */
#define AUTHENTICODE_VFY_NO_SIGNER_INFO    5
/* PKCS7 doesn't have type of SignedData, can't proceed */
#define AUTHENTICODE_VFY_WRONG_PKCS7_TYPE  6
/* PKCS7 doesn't have corrent content, can't proceed */
#define AUTHENTICODE_VFY_BAD_CONTENT       7
/* Contained and calculated digest don't match */
#define AUTHENTICODE_VFY_INVALID           8
/* Signature hash and file hash doesn't match */
#define AUTHENTICODE_VFY_WRONG_FILE_DIGEST 9
/* Unknown algorithm, can't proceed with verification */
#define AUTHENTICODE_VFY_UNKNOWN_ALGORITHM 10

/* Countersignature is valid */
#define COUNTERSIGNATURE_VFY_VALID                  0
/* Parsing error (from OpenSSL functions) */
#define COUNTERSIGNATURE_VFY_CANT_PARSE             1
/* Signers certificate is missing */
#define COUNTERSIGNATURE_VFY_NO_SIGNER_CERT         2
/* Unknown algorithm, can't proceed with verification */
#define COUNTERSIGNATURE_VFY_UNKNOWN_ALGORITHM      3
/* Verification failed, digest mismatch */
#define COUNTERSIGNATURE_VFY_INVALID                4
/* Failed to decrypt countersignature enc_digest for verification */
#define COUNTERSIGNATURE_VFY_CANT_DECRYPT_DIGEST    5
/* No digest saved inside the countersignature */
#define COUNTERSIGNATURE_VFY_DIGEST_MISSING         6
/* Message digest inside countersignature doesn't match signature it countersigns */
#define COUNTERSIGNATURE_VFY_DOESNT_MATCH_SIGNATURE 7
/* Non verification errors - allocations etc. */
#define COUNTERSIGNATURE_VFY_INTERNAL_ERROR         8
/* Time is missing in the timestamp signature */
#define COUNTERSIGNATURE_VFY_TIME_MISSING           9

typedef struct {
    uint8_t* data;
    int len;
} ByteArray;

typedef struct { /* Various X509 attributes parsed out in raw bytes*/
    ByteArray country;
    ByteArray organization;
    ByteArray organizationalUnit;
    ByteArray nameQualifier;
    ByteArray state;
    ByteArray commonName;
    ByteArray serialNumber;
    ByteArray locality;
    ByteArray title;
    ByteArray surname;
    ByteArray givenName;
    ByteArray initials;
    ByteArray pseudonym;
    ByteArray generationQualifier;
    ByteArray emailAddress;
} Attributes;

typedef struct {
    long version;             /* Raw version of X509 */
    char* issuer;             /* Oneline name of Issuer */
    char* subject;            /* Oneline name of Subject */
    char* serial;             /* Serial number in format 00:01:02:03:04... */
    ByteArray sha1;           /* SHA1 of the DER representation of the cert */
    ByteArray sha256;         /* SHA256 of the DER representation of the cert */
    char* key_alg;            /* Name of the key algorithm */
    char* sig_alg;            /* Name of the signature algorithm */
    char* sig_alg_oid;        /* OID of the signature algorithm */
    int64_t not_before;       /* NotBefore validity */
    int64_t not_after;        /* NotAfter validity */
    char* key;                /* PEM encoded public key */
    Attributes issuer_attrs;  /* Parsed X509 Attributes of Issuer */
    Attributes subject_attrs; /* Parsed X509 Attributes of Subject */
} Certificate;

typedef struct {
    Certificate** certs;
    size_t count;
} CertificateArray;

typedef struct {
    int verify_flags;        /* COUNTERISGNATURE_VFY_ flag */
    int64_t sign_time;       /* Signing time of the timestamp countersignature */
    char* digest_alg;        /* Name of the digest algorithm used */
    ByteArray digest;        /* Stored message digest */
    CertificateArray* chain; /* Certificate chain of the signer */
    CertificateArray* certs; /* All certs stored inside Countersignature, this can be superset
                                of chain in case of non PKCS9 countersignature*/
} Countersignature;

typedef struct {
    Countersignature** counters;
    size_t count;
} CountersignatureArray;

typedef struct {             /* Represents SignerInfo structure */
    ByteArray digest;        /* Message Digest of the SignerInfo */
    char* digest_alg;        /* name of the digest algorithm */
    char* program_name;      /* Program name stored in SpcOpusInfo structure of Authenticode */
    CertificateArray* chain; /* Certificate chain of the signer */
} Signer;

typedef struct {
    int verify_flags;        /* AUTHENTICODE_VFY_ flag */
    int version;             /* Raw PKCS7 version */
    char* digest_alg;        /* name of the digest algorithm */
    ByteArray digest;        /* File Digest stored in the Signature */
    ByteArray file_digest;   /* Actual calculated file digest */
    Signer* signer;          /* SignerInfo information of the Authenticode */
    CertificateArray* certs; /* All certificates in the Signature including the ones in timestamp
                                countersignatures */
    CountersignatureArray* countersigs; /* Array of timestamp countersignatures */
} Authenticode;

typedef struct {
    Authenticode** signatures;
    size_t count;
} AuthenticodeArray;

/**
 * @brief Initializes all globals OpenSSl objects we need for parsing, this is not thread-safe and
 *        needs to be called only once, before any multithreading environment
 *        https://github.com/openssl/openssl/issues/13524
 */
void initialize_authenticode_parser();

/**
 * @brief Constructs AuthenticodeArray from PE file data. Authenticode can
 *        contains nested Authenticode signatures as its unsigned attribute,
 *        which can also contain nested signatures. For this reason the function returns
 *        an Array of parsed Authenticode signatures. Any field of the parsed out
 *        structures can be NULL, depending on the input data.
 *        Verification result is stored in verify_flags with the first verification error.
 *
 * @param pe_data PE binary data
 * @param pe_len
 * @return AuthenticodeArray*
 */
AuthenticodeArray* parse_authenticode(const uint8_t* pe_data, uint64_t pe_len);

/**
 * @brief Constructs AuthenticodeArray from binary data containing Authenticode
 *        signature. Authenticode can contains nested Authenticode signatures
 *        as its unsigned attribute, which can also contain nested signatures.
 *        For this reason the function return an Array of parsed Authenticode signatures.
 *        Any field of the parsed out structures can be NULL, depending on the input data.
 *        WARNING: in case of this interface, the file and signature digest comparison is
 *        up to the library user, as there is no pe data to calculate file digest from.
 *        Verification result is stored in verify_flags with the first verification error
 *
 * @param data Binary data containing Authenticode signature
 * @param len
 * @return AuthenticodeArray*
 */
AuthenticodeArray* authenticode_new(const uint8_t* data, int32_t len);

/**
 * @brief Deallocates AuthenticodeArray and all it's allocated members
 *
 * @param auth
 */
void authenticode_array_free(AuthenticodeArray* auth);

#ifdef __cplusplus
}
#endif

#endif


================================================
FILE: deps/authenticode-parser/retdec-authenticode-config.cmake
================================================

if(NOT TARGET retdec::deps::authenticode)
	include(${CMAKE_CURRENT_LIST_DIR}/retdec-authenticode-targets.cmake)
endif()


================================================
FILE: deps/authenticode-parser/src/authenticode.c
================================================
/* Copyright (c) 2021 Avast Software

Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
of the Software, and to permit persons to whom the Software is furnished to do
so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
*/

#include <openssl/asn1.h>
#include <openssl/evp.h>
#include <openssl/objects.h>
#include <openssl/opensslv.h>
#include <openssl/ossl_typ.h>
#include <openssl/pkcs7.h>
#include <openssl/safestack.h>
#include <openssl/sha.h>
#include <openssl/x509.h>
#include <openssl/x509_vfy.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>

#include <authenticode-parser/authenticode.h>

#include "certificate.h"
#include "countersignature.h"
#include "helper.h"
#include "structs.h"

#define MAX_NESTED_COUNT 16

/* Moves signatures from src to dst, returns 0 on success,
 * else 1. If error occurs, arguments are unchanged */
static int authenticode_array_move(AuthenticodeArray* dst, AuthenticodeArray* src)
{
    size_t newCount = dst->count + src->count;

    Authenticode** tmp = (Authenticode**)realloc(dst->signatures, newCount * sizeof(Authenticode*));
    if (!tmp)
        return 1;

    dst->signatures = tmp;

    for (size_t i = 0; i < src->count; ++i)
        dst->signatures[i + dst->count] = src->signatures[i];

    dst->count = newCount;

    free(src->signatures);
    src->signatures = NULL;
    src->count = 0;

    return 0;
}

static SpcIndirectDataContent* get_content(PKCS7* content)
{
    if (!content)
        return NULL;

    if (OBJ_obj2nid(content->type) != OBJ_txt2nid(NID_spc_indirect_data))
        return NULL;

    SpcIndirectDataContent* spcContent = SpcIndirectDataContent_new();
    if (!spcContent)
        return NULL;

    int len = content->d.other->value.sequence->length;
    const uint8_t* data = content->d.other->value.sequence->data;

    d2i_SpcIndirectDataContent(&spcContent, &data, len);

    return spcContent;
}

static char* parse_program_name(ASN1_TYPE* spcAttr)
{
    const uint8_t* spcData = spcAttr->value.sequence->data;
    int spcLen = spcAttr->value.sequence->length;
    SpcSpOpusInfo* spcInfo = d2i_SpcSpOpusInfo(NULL, &spcData, spcLen);
    if (!spcInfo)
        return NULL;

    char* result = NULL;

    if (spcInfo->programName) {
        uint8_t* data = NULL;
        /* Should be Windows UTF16..., try to convert it to UTF8 */
        int nameLen = ASN1_STRING_to_UTF8(&data, spcInfo->programName->value.unicode);
        if (nameLen >= 0 && nameLen < spcLen) {
            result = (char*)malloc(nameLen + 1);
            if (result) {
                memcpy(result, data, nameLen);
                result[nameLen] = 0;
            }
            OPENSSL_free(data);
        }
    }

    SpcSpOpusInfo_free(spcInfo);
    return result;
}

static void parse_nested_authenticode(PKCS7_SIGNER_INFO* si, AuthenticodeArray* result)
{
    STACK_OF(X509_ATTRIBUTE)* attrs = PKCS7_get_attributes(si);
    int idx = X509at_get_attr_by_NID(attrs, OBJ_txt2nid(NID_spc_nested_signature), -1);
    X509_ATTRIBUTE* attr = X509at_get_attr(attrs, idx);

    int attrCount = X509_ATTRIBUTE_count(attr);
    if (!attrCount)
        return;

    /* Limit the maximum amount of nested attributes to be safe from malformed samples */
    attrCount = attrCount > MAX_NESTED_COUNT ? MAX_NESTED_COUNT : attrCount;

    for (int i = 0; i < attrCount; ++i) {
        ASN1_TYPE* nested = X509_ATTRIBUTE_get0_type(attr, i);
        if (nested == NULL || nested->type != V_ASN1_SEQUENCE || nested->value.sequence == NULL || nested->value.sequence->data == NULL)
            break;
        int len = nested->value.sequence->length;
        const uint8_t* data = nested->value.sequence->data;
        AuthenticodeArray* auth = authenticode_new(data, len);
        if (!auth)
            continue;

        authenticode_array_move(result, auth);
        authenticode_array_free(auth);
    }
}

static void parse_pkcs9_countersig(PKCS7* p7, Authenticode* auth)
{
    PKCS7_SIGNER_INFO* si = sk_PKCS7_SIGNER_INFO_value(PKCS7_get_signer_info(p7), 0);

    STACK_OF(X509_ATTRIBUTE)* attrs = PKCS7_get_attributes(si);

    int idx = X509at_get_attr_by_NID(attrs, NID_pkcs9_countersignature, -1);
    X509_ATTRIBUTE* attr = X509at_get_attr(attrs, idx);

    int attrCount = X509_ATTRIBUTE_count(attr);
    if (!attrCount)
        return;

    /* Limit the maximum amount of nested attributes to be safe from malformed samples */
    attrCount = attrCount > MAX_NESTED_COUNT ? MAX_NESTED_COUNT : attrCount;

    for (int i = 0; i < attrCount; ++i) {
        ASN1_TYPE* nested = X509_ATTRIBUTE_get0_type(attr, i);
        if (nested == NULL)
            break;
        int len = nested->value.sequence->length;
        const uint8_t* data = nested->value.sequence->data;

        Countersignature* sig = pkcs9_countersig_new(data, len, p7->d.sign->cert, si->enc_digest);
        if (!sig)
            continue;

        countersignature_array_insert(auth->countersigs, sig);
    }
}

static void parse_ms_countersig(PKCS7* p7, Authenticode* auth)
{
    PKCS7_SIGNER_INFO* si = sk_PKCS7_SIGNER_INFO_value(PKCS7_get_signer_info(p7), 0);

    STACK_OF(X509_ATTRIBUTE)* attrs = PKCS7_get_attributes(si);

    int idx = X509at_get_attr_by_NID(attrs, OBJ_txt2nid(NID_spc_ms_countersignature), -1);
    X509_ATTRIBUTE* attr = X509at_get_attr(attrs, idx);

    int attrCount = X509_ATTRIBUTE_count(attr);
    if (!attrCount)
        return;

    /* Limit the maximum amount of nested attributes to be safe from malformed samples */
    attrCount = attrCount > MAX_NESTED_COUNT ? MAX_NESTED_COUNT : attrCount;

    for (int i = 0; i < attrCount; ++i) {
        ASN1_TYPE* nested = X509_ATTRIBUTE_get0_type(attr, i);
        if (nested == NULL || nested->type != V_ASN1_SEQUENCE || nested->value.sequence == NULL || nested->value.sequence->data == NULL)
            break;
        int len = nested->value.sequence->length;
        const uint8_t* data = nested->value.sequence->data;

        Countersignature* csig = ms_countersig_new(data, len, si->enc_digest);
        if (!csig)
            return;

        countersignature_array_insert(auth->countersigs, csig);
        /* Because MS TimeStamp countersignature has it's own SET of certificates
         * extract it back into parent signature for consistency with PKCS9 */
        certificate_array_append(auth->certs, csig->certs);
    }
}

static bool authenticode_verify(PKCS7* p7, PKCS7_SIGNER_INFO* si, X509* signCert)
{
    const uint8_t* contentData = p7->d.sign->contents->d.other->value.sequence->data;
    long contentLen = p7->d.sign->contents->d.other->value.sequence->length;

    uint64_t version = 0;
    ASN1_INTEGER_get_uint64(&version, p7->d.sign->version);
    if (version == 1) {
        /* Move the pointer to the actual contents - skip OID and length */
        int pclass = 0, ptag = 0;
        ASN1_get_object(&contentData, &contentLen, &ptag, &pclass, contentLen);
    }

    BIO* contentBio = BIO_new_mem_buf(contentData, contentLen);
    /* Create `digest` type BIO to calculate content digest for verification */
    BIO* p7bio = PKCS7_dataInit(p7, contentBio);

    char buf[4096];
    /* We now have to 'read' from p7bio to calculate content digest */
    while (BIO_read(p7bio, buf, sizeof(buf)) > 0)
        continue;

    /* Pass it to the PKCS7_signatureVerify, to do the hard work for us */
    bool isValid = PKCS7_signatureVerify(p7bio, p7, si, signCert) == 1;

    BIO_free_all(p7bio);

    return isValid;
}

/* Creates all the Authenticode objects so we can parse them with OpenSSL, is not thread-safe, needs
 * to be called once before any multi-threading environmentt -
 * https://github.com/openssl/openssl/issues/13524 */
void initialize_authenticode_parser()
{
    OBJ_create("1.3.6.1.4.1.311.2.1.12", "spcSpOpusInfo", "SPC_SP_OPUS_INFO_OBJID");
    OBJ_create("1.3.6.1.4.1.311.3.3.1", "spcMsCountersignature", "SPC_MICROSOFT_COUNTERSIGNATURE");
    OBJ_create("1.3.6.1.4.1.311.2.4.1", "spcNestedSignature", "SPC_NESTED_SIGNATUREs");
    OBJ_create("1.3.6.1.4.1.311.2.1.4", "spcIndirectData", "SPC_INDIRECT_DATA");
}

/* Return array of Authenticode signatures stored in the data, there can be multiple
 * of signatures as Authenticode signatures are often nested through unauth attributes */
AuthenticodeArray* authenticode_new(const uint8_t* data, int32_t len)
{
    if (!data || len <= 0)
        return NULL;

    AuthenticodeArray* result = (AuthenticodeArray*)calloc(1, sizeof(*result));
    if (!result)
        return NULL;

    result->signatures = (Authenticode**)malloc(sizeof(Authenticode*));
    if (!result->signatures) {
        free(result);
        return NULL;
    }

    Authenticode* auth = (Authenticode*)calloc(1, sizeof(*auth));
    if (!auth) {
        free(result->signatures);
        free(result);
        return NULL;
    }

    result->count = 1;
    result->signatures[0] = auth;

    /* Let openssl parse the PKCS7 structure */
    PKCS7* p7 = d2i_PKCS7(NULL, &data, len);
    if (!p7) {
        auth->verify_flags = AUTHENTICODE_VFY_CANT_PARSE;
        goto end;
    }

    /* We expect SignedData type of PKCS7 */
    if (!PKCS7_type_is_signed(p7) || !p7->d.sign) {
        auth->verify_flags = AUTHENTICODE_VFY_WRONG_PKCS7_TYPE;
        goto end;
    }

    PKCS7_SIGNED* p7data = p7->d.sign;

    uint64_t version = 0;
    if (ASN1_INTEGER_get_uint64(&version, p7data->version))
        auth->version = version;

    STACK_OF(X509)* certs = p7data->cert;

    auth->certs = certificate_array_new(sk_X509_num(certs));
    if (!auth->certs) {
        auth->verify_flags = AUTHENTICODE_VFY_INTERNAL_ERROR;
        goto end;
    }
    parse_x509_certificates(certs, auth->certs);

    /* Get Signature content that contains the message digest and it's algor
Download .txt
gitextract_9nmdfk99/

├── .clang-format
├── .github/
│   └── workflows/
│       ├── Linux/
│       │   ├── build.sh
│       │   ├── ignore_Debug
│       │   ├── ignore_Release
│       │   ├── install-deps.sh
│       │   ├── prepare-clang.sh
│       │   └── run-tests.sh
│       ├── Windows/
│       │   ├── build.sh
│       │   ├── ignore_Debug
│       │   ├── ignore_Release
│       │   ├── install-deps.sh
│       │   ├── prepare-clang.sh
│       │   └── run-tests.sh
│       ├── common/
│       │   └── prepare-retdec-tests.sh
│       ├── macOS/
│       │   ├── build.sh
│       │   ├── ignore_Debug
│       │   ├── ignore_Release
│       │   ├── install-deps.sh
│       │   ├── prepare-clang.sh
│       │   └── run-tests.sh
│       ├── retdec-ci.yml
│       └── retdec-release.yml
├── .gitignore
├── .travis.yml
├── CHANGELOG.md
├── CITATION
├── CMakeLists.txt
├── Dockerfile
├── Dockerfile.dev
├── LICENSE
├── LICENSE-PELIB
├── LICENSE-THIRD-PARTY
├── README.md
├── SECURITY.md
├── cmake/
│   ├── GetGitRevisionDescription.cmake
│   ├── GetGitRevisionDescription.cmake.in
│   ├── deps.cmake
│   ├── options.cmake
│   └── utils.cmake
├── deps/
│   ├── CMakeLists.txt
│   ├── authenticode-parser/
│   │   ├── CMakeLists.txt
│   │   ├── include/
│   │   │   └── authenticode-parser/
│   │   │       └── authenticode.h
│   │   ├── retdec-authenticode-config.cmake
│   │   └── src/
│   │       ├── authenticode.c
│   │       ├── certificate.c
│   │       ├── certificate.h
│   │       ├── countersignature.c
│   │       ├── countersignature.h
│   │       ├── helper.c
│   │       ├── helper.h
│   │       ├── structs.c
│   │       └── structs.h
│   ├── capstone/
│   │   ├── CMakeLists.txt
│   │   ├── retdec-capstone-config.cmake
│   │   └── retdec-system-capstone-config.cmake
│   ├── eigen/
│   │   ├── Eigen/
│   │   │   ├── Cholesky
│   │   │   ├── Core
│   │   │   ├── Householder
│   │   │   ├── Jacobi
│   │   │   ├── QR
│   │   │   └── src/
│   │   │       ├── Cholesky/
│   │   │       │   ├── LDLT.h
│   │   │       │   ├── LLT.h
│   │   │       │   └── LLT_LAPACKE.h
│   │   │       ├── Core/
│   │   │       │   ├── Array.h
│   │   │       │   ├── ArrayBase.h
│   │   │       │   ├── ArrayWrapper.h
│   │   │       │   ├── Assign.h
│   │   │       │   ├── AssignEvaluator.h
│   │   │       │   ├── Assign_MKL.h
│   │   │       │   ├── BandMatrix.h
│   │   │       │   ├── Block.h
│   │   │       │   ├── BooleanRedux.h
│   │   │       │   ├── CommaInitializer.h
│   │   │       │   ├── ConditionEstimator.h
│   │   │       │   ├── CoreEvaluators.h
│   │   │       │   ├── CoreIterators.h
│   │   │       │   ├── CwiseBinaryOp.h
│   │   │       │   ├── CwiseNullaryOp.h
│   │   │       │   ├── CwiseTernaryOp.h
│   │   │       │   ├── CwiseUnaryOp.h
│   │   │       │   ├── CwiseUnaryView.h
│   │   │       │   ├── DenseBase.h
│   │   │       │   ├── DenseCoeffsBase.h
│   │   │       │   ├── DenseStorage.h
│   │   │       │   ├── Diagonal.h
│   │   │       │   ├── DiagonalMatrix.h
│   │   │       │   ├── DiagonalProduct.h
│   │   │       │   ├── Dot.h
│   │   │       │   ├── EigenBase.h
│   │   │       │   ├── ForceAlignedAccess.h
│   │   │       │   ├── Fuzzy.h
│   │   │       │   ├── GeneralProduct.h
│   │   │       │   ├── GenericPacketMath.h
│   │   │       │   ├── GlobalFunctions.h
│   │   │       │   ├── Inverse.h
│   │   │       │   ├── Map.h
│   │   │       │   ├── MapBase.h
│   │   │       │   ├── MathFunctions.h
│   │   │       │   ├── MathFunctionsImpl.h
│   │   │       │   ├── Matrix.h
│   │   │       │   ├── MatrixBase.h
│   │   │       │   ├── NestByValue.h
│   │   │       │   ├── NoAlias.h
│   │   │       │   ├── NumTraits.h
│   │   │       │   ├── PermutationMatrix.h
│   │   │       │   ├── PlainObjectBase.h
│   │   │       │   ├── Product.h
│   │   │       │   ├── ProductEvaluators.h
│   │   │       │   ├── Random.h
│   │   │       │   ├── Redux.h
│   │   │       │   ├── Ref.h
│   │   │       │   ├── Replicate.h
│   │   │       │   ├── ReturnByValue.h
│   │   │       │   ├── Reverse.h
│   │   │       │   ├── Select.h
│   │   │       │   ├── SelfAdjointView.h
│   │   │       │   ├── SelfCwiseBinaryOp.h
│   │   │       │   ├── Solve.h
│   │   │       │   ├── SolveTriangular.h
│   │   │       │   ├── SolverBase.h
│   │   │       │   ├── StableNorm.h
│   │   │       │   ├── Stride.h
│   │   │       │   ├── Swap.h
│   │   │       │   ├── Transpose.h
│   │   │       │   ├── Transpositions.h
│   │   │       │   ├── TriangularMatrix.h
│   │   │       │   ├── VectorBlock.h
│   │   │       │   ├── VectorwiseOp.h
│   │   │       │   ├── Visitor.h
│   │   │       │   ├── arch/
│   │   │       │   │   ├── AVX/
│   │   │       │   │   │   ├── Complex.h
│   │   │       │   │   │   ├── MathFunctions.h
│   │   │       │   │   │   ├── PacketMath.h
│   │   │       │   │   │   └── TypeCasting.h
│   │   │       │   │   ├── AVX512/
│   │   │       │   │   │   ├── MathFunctions.h
│   │   │       │   │   │   └── PacketMath.h
│   │   │       │   │   ├── AltiVec/
│   │   │       │   │   │   ├── Complex.h
│   │   │       │   │   │   ├── MathFunctions.h
│   │   │       │   │   │   └── PacketMath.h
│   │   │       │   │   ├── CUDA/
│   │   │       │   │   │   ├── Complex.h
│   │   │       │   │   │   ├── Half.h
│   │   │       │   │   │   ├── MathFunctions.h
│   │   │       │   │   │   ├── PacketMath.h
│   │   │       │   │   │   ├── PacketMathHalf.h
│   │   │       │   │   │   └── TypeCasting.h
│   │   │       │   │   ├── Default/
│   │   │       │   │   │   ├── ConjHelper.h
│   │   │       │   │   │   └── Settings.h
│   │   │       │   │   ├── NEON/
│   │   │       │   │   │   ├── Complex.h
│   │   │       │   │   │   ├── MathFunctions.h
│   │   │       │   │   │   └── PacketMath.h
│   │   │       │   │   ├── SSE/
│   │   │       │   │   │   ├── Complex.h
│   │   │       │   │   │   ├── MathFunctions.h
│   │   │       │   │   │   ├── PacketMath.h
│   │   │       │   │   │   └── TypeCasting.h
│   │   │       │   │   └── ZVector/
│   │   │       │   │       ├── Complex.h
│   │   │       │   │       ├── MathFunctions.h
│   │   │       │   │       └── PacketMath.h
│   │   │       │   ├── functors/
│   │   │       │   │   ├── AssignmentFunctors.h
│   │   │       │   │   ├── BinaryFunctors.h
│   │   │       │   │   ├── NullaryFunctors.h
│   │   │       │   │   ├── StlFunctors.h
│   │   │       │   │   ├── TernaryFunctors.h
│   │   │       │   │   └── UnaryFunctors.h
│   │   │       │   ├── products/
│   │   │       │   │   ├── GeneralBlockPanelKernel.h
│   │   │       │   │   ├── GeneralMatrixMatrix.h
│   │   │       │   │   ├── GeneralMatrixMatrixTriangular.h
│   │   │       │   │   ├── GeneralMatrixMatrixTriangular_BLAS.h
│   │   │       │   │   ├── GeneralMatrixMatrix_BLAS.h
│   │   │       │   │   ├── GeneralMatrixVector.h
│   │   │       │   │   ├── GeneralMatrixVector_BLAS.h
│   │   │       │   │   ├── Parallelizer.h
│   │   │       │   │   ├── SelfadjointMatrixMatrix.h
│   │   │       │   │   ├── SelfadjointMatrixMatrix_BLAS.h
│   │   │       │   │   ├── SelfadjointMatrixVector.h
│   │   │       │   │   ├── SelfadjointMatrixVector_BLAS.h
│   │   │       │   │   ├── SelfadjointProduct.h
│   │   │       │   │   ├── SelfadjointRank2Update.h
│   │   │       │   │   ├── TriangularMatrixMatrix.h
│   │   │       │   │   ├── TriangularMatrixMatrix_BLAS.h
│   │   │       │   │   ├── TriangularMatrixVector.h
│   │   │       │   │   ├── TriangularMatrixVector_BLAS.h
│   │   │       │   │   ├── TriangularSolverMatrix.h
│   │   │       │   │   ├── TriangularSolverMatrix_BLAS.h
│   │   │       │   │   └── TriangularSolverVector.h
│   │   │       │   └── util/
│   │   │       │       ├── BlasUtil.h
│   │   │       │       ├── Constants.h
│   │   │       │       ├── DisableStupidWarnings.h
│   │   │       │       ├── ForwardDeclarations.h
│   │   │       │       ├── MKL_support.h
│   │   │       │       ├── Macros.h
│   │   │       │       ├── Memory.h
│   │   │       │       ├── Meta.h
│   │   │       │       ├── NonMPL2.h
│   │   │       │       ├── ReenableStupidWarnings.h
│   │   │       │       ├── StaticAssert.h
│   │   │       │       └── XprHelper.h
│   │   │       ├── Householder/
│   │   │       │   ├── BlockHouseholder.h
│   │   │       │   ├── Householder.h
│   │   │       │   └── HouseholderSequence.h
│   │   │       ├── Jacobi/
│   │   │       │   └── Jacobi.h
│   │   │       ├── QR/
│   │   │       │   ├── ColPivHouseholderQR.h
│   │   │       │   ├── ColPivHouseholderQR_LAPACKE.h
│   │   │       │   ├── CompleteOrthogonalDecomposition.h
│   │   │       │   ├── FullPivHouseholderQR.h
│   │   │       │   ├── HouseholderQR.h
│   │   │       │   └── HouseholderQR_LAPACKE.h
│   │   │       └── plugins/
│   │   │           ├── ArrayCwiseBinaryOps.h
│   │   │           ├── ArrayCwiseUnaryOps.h
│   │   │           ├── BlockMethods.h
│   │   │           ├── CommonCwiseBinaryOps.h
│   │   │           ├── CommonCwiseUnaryOps.h
│   │   │           ├── MatrixCwiseBinaryOps.h
│   │   │           └── MatrixCwiseUnaryOps.h
│   │   ├── README.md
│   │   └── license.txt
│   ├── elfio/
│   │   ├── CMakeLists.txt
│   │   ├── COPYING.txt
│   │   ├── README.md
│   │   ├── include/
│   │   │   └── elfio/
│   │   │       ├── elf_types.hpp
│   │   │       ├── elfio.hpp
│   │   │       ├── elfio_dump.hpp
│   │   │       ├── elfio_dynamic.hpp
│   │   │       ├── elfio_header.hpp
│   │   │       ├── elfio_note.hpp
│   │   │       ├── elfio_relocation.hpp
│   │   │       ├── elfio_section.hpp
│   │   │       ├── elfio_segment.hpp
│   │   │       ├── elfio_strings.hpp
│   │   │       ├── elfio_symbols.hpp
│   │   │       └── elfio_utils.hpp
│   │   └── retdec-elfio-config.cmake
│   ├── googletest/
│   │   └── CMakeLists.txt
│   ├── keystone/
│   │   └── CMakeLists.txt
│   ├── llvm/
│   │   ├── CMakeLists.txt
│   │   └── retdec-llvm-config.cmake
│   ├── rapidjson/
│   │   ├── CMakeLists.txt
│   │   ├── README.md
│   │   ├── include/
│   │   │   └── rapidjson/
│   │   │       ├── allocators.h
│   │   │       ├── cursorstreamwrapper.h
│   │   │       ├── document.h
│   │   │       ├── encodedstream.h
│   │   │       ├── encodings.h
│   │   │       ├── error/
│   │   │       │   ├── en.h
│   │   │       │   └── error.h
│   │   │       ├── filereadstream.h
│   │   │       ├── filewritestream.h
│   │   │       ├── fwd.h
│   │   │       ├── internal/
│   │   │       │   ├── biginteger.h
│   │   │       │   ├── clzll.h
│   │   │       │   ├── diyfp.h
│   │   │       │   ├── dtoa.h
│   │   │       │   ├── ieee754.h
│   │   │       │   ├── itoa.h
│   │   │       │   ├── meta.h
│   │   │       │   ├── pow10.h
│   │   │       │   ├── regex.h
│   │   │       │   ├── stack.h
│   │   │       │   ├── strfunc.h
│   │   │       │   ├── strtod.h
│   │   │       │   └── swap.h
│   │   │       ├── istreamwrapper.h
│   │   │       ├── memorybuffer.h
│   │   │       ├── memorystream.h
│   │   │       ├── msinttypes/
│   │   │       │   ├── inttypes.h
│   │   │       │   └── stdint.h
│   │   │       ├── ostreamwrapper.h
│   │   │       ├── pointer.h
│   │   │       ├── prettywriter.h
│   │   │       ├── rapidjson.h
│   │   │       ├── reader.h
│   │   │       ├── schema.h
│   │   │       ├── stream.h
│   │   │       ├── stringbuffer.h
│   │   │       └── writer.h
│   │   ├── license.txt
│   │   └── retdec-rapidjson-config.cmake
│   ├── stb/
│   │   ├── CMakeLists.txt
│   │   ├── include/
│   │   │   └── stb/
│   │   │       └── stb_image.h
│   │   ├── retdec-stb-config.cmake
│   │   └── stb_image.c
│   ├── tinyxml2/
│   │   ├── CMakeLists.txt
│   │   ├── LICENSE.txt
│   │   ├── README.md
│   │   ├── include/
│   │   │   └── tinyxml2/
│   │   │       └── tinyxml2.h
│   │   ├── retdec-tinyxml2-config.cmake
│   │   └── tinyxml2.cpp
│   ├── tlsh/
│   │   ├── CMakeLists.txt
│   │   ├── WinFunctions.cpp
│   │   ├── include/
│   │   │   └── tlsh/
│   │   │       ├── WinFunctions.h
│   │   │       ├── tlsh.h
│   │   │       ├── tlsh_impl.h
│   │   │       ├── tlsh_util.h
│   │   │       ├── version.h
│   │   │       └── win_version.h
│   │   ├── retdec-tlsh-config.cmake
│   │   ├── tlsh.cpp
│   │   ├── tlsh_impl.cpp
│   │   └── tlsh_util.cpp
│   ├── whereami/
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── retdec-whereami-config.cmake
│   │   └── whereami/
│   │       ├── whereami.c
│   │       └── whereami.h
│   ├── yara/
│   │   ├── CMakeLists.txt
│   │   ├── patch.cmake
│   │   └── retdec-libyara-config.cmake
│   └── yaramod/
│       ├── CMakeLists.txt
│       └── retdec-yaramod-config.cmake
├── doc/
│   ├── CMakeLists.txt
│   └── doxygen/
│       ├── CMakeLists.txt
│       ├── doxygen.cfg.in
│       ├── doxygen.h
│       └── show_doxygen_log.cmake
├── include/
│   └── retdec/
│       ├── ar-extractor/
│       │   ├── archive_wrapper.h
│       │   └── detection.h
│       ├── bin2llvmir/
│       │   ├── analyses/
│       │   │   ├── ctor_dtor.h
│       │   │   ├── indirectly_called_funcs_analysis.h
│       │   │   ├── reachable_funcs_analysis.h
│       │   │   ├── reaching_definitions.h
│       │   │   └── symbolic_tree.h
│       │   ├── optimizations/
│       │   │   ├── asm_inst_remover/
│       │   │   │   └── asm_inst_remover.h
│       │   │   ├── class_hierarchy/
│       │   │   │   ├── hierarchy.h
│       │   │   │   └── hierarchy_analysis.h
│       │   │   ├── cond_branch_opt/
│       │   │   │   └── cond_branch_opt.h
│       │   │   ├── constants/
│       │   │   │   └── constants.h
│       │   │   ├── decoder/
│       │   │   │   ├── decoder.h
│       │   │   │   ├── decoder_debug.h
│       │   │   │   ├── decoder_ranges.h
│       │   │   │   └── jump_targets.h
│       │   │   ├── dump_module/
│       │   │   │   └── dump_module.h
│       │   │   ├── idioms/
│       │   │   │   ├── idioms.h
│       │   │   │   ├── idioms_abstract.h
│       │   │   │   ├── idioms_analysis.h
│       │   │   │   ├── idioms_borland.h
│       │   │   │   ├── idioms_common.h
│       │   │   │   ├── idioms_gcc.h
│       │   │   │   ├── idioms_intel.h
│       │   │   │   ├── idioms_llvm.h
│       │   │   │   ├── idioms_magicdivmod.h
│       │   │   │   ├── idioms_owatcom.h
│       │   │   │   ├── idioms_types.h
│       │   │   │   └── idioms_vstudio.h
│       │   │   ├── idioms_libgcc/
│       │   │   │   └── idioms_libgcc.h
│       │   │   ├── inst_opt/
│       │   │   │   ├── inst_opt.h
│       │   │   │   └── inst_opt_pass.h
│       │   │   ├── inst_opt_rda/
│       │   │   │   ├── inst_opt_rda.h
│       │   │   │   └── inst_opt_rda_pass.h
│       │   │   ├── main_detection/
│       │   │   │   └── main_detection.h
│       │   │   ├── param_return/
│       │   │   │   ├── collector/
│       │   │   │   │   ├── collector.h
│       │   │   │   │   └── pic32.h
│       │   │   │   ├── data_entries.h
│       │   │   │   ├── filter/
│       │   │   │   │   ├── filter.h
│       │   │   │   │   └── ms_x64.h
│       │   │   │   └── param_return.h
│       │   │   ├── phi_remover/
│       │   │   │   └── phi_remover.h
│       │   │   ├── provider_init/
│       │   │   │   └── provider_init.h
│       │   │   ├── register_localization/
│       │   │   │   └── register_localization.h
│       │   │   ├── select_functions/
│       │   │   │   └── select_functions.h
│       │   │   ├── simple_types/
│       │   │   │   └── simple_types.h
│       │   │   ├── stack/
│       │   │   │   └── stack.h
│       │   │   ├── stack_pointer_ops/
│       │   │   │   └── stack_pointer_ops.h
│       │   │   ├── syscalls/
│       │   │   │   └── syscalls.h
│       │   │   ├── types_propagator/
│       │   │   │   └── types_propagator.h
│       │   │   ├── unreachable_funcs/
│       │   │   │   └── unreachable_funcs.h
│       │   │   ├── value_protect/
│       │   │   │   └── value_protect.h
│       │   │   ├── writer_bc/
│       │   │   │   └── writer_bc.h
│       │   │   ├── writer_config/
│       │   │   │   └── writer_config.h
│       │   │   ├── writer_dsm/
│       │   │   │   └── writer_dsm.h
│       │   │   ├── writer_ll/
│       │   │   │   └── writer_ll.h
│       │   │   ├── x86_addr_spaces/
│       │   │   │   ├── x86_addr_spaces.h
│       │   │   │   └── x86_addr_spaces_pass.h
│       │   │   └── x87_fpu/
│       │   │       └── x87_fpu.h
│       │   ├── providers/
│       │   │   ├── abi/
│       │   │   │   ├── abi.h
│       │   │   │   ├── arm.h
│       │   │   │   ├── arm64.h
│       │   │   │   ├── mips.h
│       │   │   │   ├── mips64.h
│       │   │   │   ├── ms_x64.h
│       │   │   │   ├── pic32.h
│       │   │   │   ├── powerpc.h
│       │   │   │   ├── powerpc64.h
│       │   │   │   ├── x64.h
│       │   │   │   └── x86.h
│       │   │   ├── asm_instruction.h
│       │   │   ├── calling_convention/
│       │   │   │   ├── arm/
│       │   │   │   │   └── arm_conv.h
│       │   │   │   ├── arm64/
│       │   │   │   │   └── arm64_conv.h
│       │   │   │   ├── calling_convention.h
│       │   │   │   ├── mips/
│       │   │   │   │   ├── mips_conv.h
│       │   │   │   │   └── mips_psp.h
│       │   │   │   ├── mips64/
│       │   │   │   │   └── mips64_conv.h
│       │   │   │   ├── pic32/
│       │   │   │   │   └── pic32_conv.h
│       │   │   │   ├── powerpc/
│       │   │   │   │   └── powerpc_conv.h
│       │   │   │   ├── powerpc64/
│       │   │   │   │   └── powerpc64_conv.h
│       │   │   │   ├── x64/
│       │   │   │   │   ├── x64_conv.h
│       │   │   │   │   ├── x64_microsoft.h
│       │   │   │   │   └── x64_systemv.h
│       │   │   │   └── x86/
│       │   │   │       ├── x86_cdecl.h
│       │   │   │       ├── x86_conv.h
│       │   │   │       ├── x86_fastcall.h
│       │   │   │       ├── x86_pascal.h
│       │   │   │       ├── x86_thiscall.h
│       │   │   │       └── x86_watcom.h
│       │   │   ├── config.h
│       │   │   ├── debugformat.h
│       │   │   ├── demangler.h
│       │   │   ├── fileimage.h
│       │   │   ├── lti.h
│       │   │   └── names.h
│       │   └── utils/
│       │       ├── capstone.h
│       │       ├── ctypes2llvm.h
│       │       ├── debug.h
│       │       ├── ir_modifier.h
│       │       ├── llvm.h
│       │       └── symbolic_tree_match.h
│       ├── capstone2llvmir/
│       │   ├── arm/
│       │   │   ├── arm.h
│       │   │   └── arm_defs.h
│       │   ├── arm64/
│       │   │   ├── arm64.h
│       │   │   └── arm64_defs.h
│       │   ├── capstone2llvmir.h
│       │   ├── exceptions.h
│       │   ├── mips/
│       │   │   ├── mips.h
│       │   │   └── mips_defs.h
│       │   ├── powerpc/
│       │   │   ├── powerpc.h
│       │   │   └── powerpc_defs.h
│       │   └── x86/
│       │       ├── x86.h
│       │       └── x86_defs.h
│       ├── common/
│       │   ├── address.h
│       │   ├── architecture.h
│       │   ├── basic_block.h
│       │   ├── calling_convention.h
│       │   ├── class.h
│       │   ├── file_format.h
│       │   ├── file_type.h
│       │   ├── function.h
│       │   ├── language.h
│       │   ├── object.h
│       │   ├── pattern.h
│       │   ├── range.h
│       │   ├── storage.h
│       │   ├── tool_info.h
│       │   ├── type.h
│       │   └── vtable.h
│       ├── config/
│       │   ├── config.h
│       │   ├── config_exceptions.h
│       │   └── parameters.h
│       ├── cpdetect/
│       │   ├── cpdetect.h
│       │   ├── cptypes.h
│       │   ├── errors.h
│       │   ├── heuristics/
│       │   │   ├── elf_heuristics.h
│       │   │   ├── heuristics.h
│       │   │   ├── macho_heuristics.h
│       │   │   └── pe_heuristics.h
│       │   ├── search.h
│       │   ├── settings.h
│       │   └── signature.h
│       ├── ctypes/
│       │   ├── annotation.h
│       │   ├── annotation_in.h
│       │   ├── annotation_inout.h
│       │   ├── annotation_optional.h
│       │   ├── annotation_out.h
│       │   ├── array_type.h
│       │   ├── call_convention.h
│       │   ├── composite_type.h
│       │   ├── context.h
│       │   ├── ctypes.h
│       │   ├── enum_type.h
│       │   ├── exceptions.h
│       │   ├── floating_point_type.h
│       │   ├── function.h
│       │   ├── function_declaration.h
│       │   ├── function_type.h
│       │   ├── header_file.h
│       │   ├── integral_type.h
│       │   ├── member.h
│       │   ├── module.h
│       │   ├── named_type.h
│       │   ├── parameter.h
│       │   ├── pointer_type.h
│       │   ├── reference_type.h
│       │   ├── struct_type.h
│       │   ├── type.h
│       │   ├── typedefed_type.h
│       │   ├── union_type.h
│       │   ├── unknown_type.h
│       │   ├── visit_all_visitor.h
│       │   ├── visitable.h
│       │   ├── visitor.h
│       │   └── void_type.h
│       ├── ctypesparser/
│       │   ├── ctypes_parser.h
│       │   ├── exceptions.h
│       │   ├── json_ctypes_parser.h
│       │   └── type_config.h
│       ├── debugformat/
│       │   └── debugformat.h
│       ├── demangler/
│       │   ├── ast_ctypes_parser.h
│       │   ├── borland_ast/
│       │   │   ├── array_type.h
│       │   │   ├── borland_ast.h
│       │   │   ├── built_in_type.h
│       │   │   ├── char_type.h
│       │   │   ├── conversion_operator.h
│       │   │   ├── float_type.h
│       │   │   ├── function_node.h
│       │   │   ├── function_type.h
│       │   │   ├── integral_type.h
│       │   │   ├── name_node.h
│       │   │   ├── named_type.h
│       │   │   ├── node.h
│       │   │   ├── node_array.h
│       │   │   ├── parentheses_node.h
│       │   │   ├── pointer_type.h
│       │   │   ├── qualifiers.h
│       │   │   ├── reference_type.h
│       │   │   ├── rreference_type.h
│       │   │   ├── template_node.h
│       │   │   └── type_node.h
│       │   ├── borland_ast_ctypes_parser.h
│       │   ├── borland_ast_parser.h
│       │   ├── borland_demangler.h
│       │   ├── context.h
│       │   ├── demangler.h
│       │   ├── demangler_base.h
│       │   ├── itanium_ast_ctypes_parser.h
│       │   ├── itanium_demangler.h
│       │   ├── microsoft_demangler.h
│       │   └── ms_ast_ctypes_parser.h
│       ├── fileformat/
│       │   ├── fftypes.h
│       │   ├── file_format/
│       │   │   ├── coff/
│       │   │   │   └── coff_format.h
│       │   │   ├── elf/
│       │   │   │   └── elf_format.h
│       │   │   ├── file_format.h
│       │   │   ├── intel_hex/
│       │   │   │   ├── intel_hex_format.h
│       │   │   │   └── intel_hex_parser/
│       │   │   │       ├── intel_hex_parser.h
│       │   │   │       └── intel_hex_tokenizer.h
│       │   │   ├── macho/
│       │   │   │   └── macho_format.h
│       │   │   ├── pe/
│       │   │   │   ├── pe_format.h
│       │   │   │   ├── pe_format_parser.h
│       │   │   │   └── pe_template_aux.h
│       │   │   └── raw_data/
│       │   │       └── raw_data_format.h
│       │   ├── fileformat.h
│       │   ├── format_factory.h
│       │   ├── types/
│       │   │   ├── certificate_table/
│       │   │   │   ├── certificate.h
│       │   │   │   └── certificate_table.h
│       │   │   ├── dotnet_headers/
│       │   │   │   ├── blob_stream.h
│       │   │   │   ├── clr_header.h
│       │   │   │   ├── guid_stream.h
│       │   │   │   ├── metadata_header.h
│       │   │   │   ├── metadata_stream.h
│       │   │   │   ├── metadata_table.h
│       │   │   │   ├── metadata_tables.h
│       │   │   │   ├── stream.h
│       │   │   │   ├── string_stream.h
│       │   │   │   └── user_string_stream.h
│       │   │   ├── dotnet_types/
│       │   │   │   ├── dotnet_class.h
│       │   │   │   ├── dotnet_data_types.h
│       │   │   │   ├── dotnet_field.h
│       │   │   │   ├── dotnet_method.h
│       │   │   │   ├── dotnet_parameter.h
│       │   │   │   ├── dotnet_property.h
│       │   │   │   ├── dotnet_type.h
│       │   │   │   └── dotnet_type_reconstructor.h
│       │   │   ├── dynamic_table/
│       │   │   │   ├── dynamic_entry.h
│       │   │   │   └── dynamic_table.h
│       │   │   ├── export_table/
│       │   │   │   ├── export.h
│       │   │   │   └── export_table.h
│       │   │   ├── import_table/
│       │   │   │   ├── elf_import_table.h
│       │   │   │   ├── import.h
│       │   │   │   ├── import_table.h
│       │   │   │   └── pe_import.h
│       │   │   ├── note_section/
│       │   │   │   ├── elf_core.h
│       │   │   │   └── elf_notes.h
│       │   │   ├── pdb_info/
│       │   │   │   └── pdb_info.h
│       │   │   ├── pe_timestamps/
│       │   │   │   └── pe_timestamps.h
│       │   │   ├── relocation_table/
│       │   │   │   ├── relocation.h
│       │   │   │   └── relocation_table.h
│       │   │   ├── resource_table/
│       │   │   │   ├── bitmap_image.h
│       │   │   │   ├── resource.h
│       │   │   │   ├── resource_icon.h
│       │   │   │   ├── resource_icon_group.h
│       │   │   │   ├── resource_table.h
│       │   │   │   └── resource_tree.h
│       │   │   ├── rich_header/
│       │   │   │   ├── linker_info.h
│       │   │   │   └── rich_header.h
│       │   │   ├── sec_seg/
│       │   │   │   ├── elf_section.h
│       │   │   │   ├── elf_segment.h
│       │   │   │   ├── macho_section.h
│       │   │   │   ├── pe_coff_section.h
│       │   │   │   ├── sec_seg.h
│       │   │   │   ├── section.h
│       │   │   │   └── segment.h
│       │   │   ├── strings/
│       │   │   │   ├── character_iterator.h
│       │   │   │   └── string.h
│       │   │   ├── symbol_table/
│       │   │   │   ├── elf_symbol.h
│       │   │   │   ├── macho_symbol.h
│       │   │   │   ├── symbol.h
│       │   │   │   └── symbol_table.h
│       │   │   ├── tls_info/
│       │   │   │   └── tls_info.h
│       │   │   └── visual_basic/
│       │   │       ├── visual_basic_extern.h
│       │   │       ├── visual_basic_info.h
│       │   │       ├── visual_basic_object.h
│       │   │       └── visual_basic_structures.h
│       │   └── utils/
│       │       ├── asn1.h
│       │       ├── byte_array_buffer.h
│       │       ├── conversions.h
│       │       ├── crypto.h
│       │       ├── file_io.h
│       │       ├── format_detection.h
│       │       └── other.h
│       ├── llvmir-emul/
│       │   ├── exceptions.h
│       │   └── llvmir_emul.h
│       ├── llvmir2hll/
│       │   ├── analysis/
│       │   │   ├── alias_analysis/
│       │   │   │   ├── alias_analyses/
│       │   │   │   │   ├── basic_alias_analysis.h
│       │   │   │   │   └── simple_alias_analysis.h
│       │   │   │   ├── alias_analysis.h
│       │   │   │   └── alias_analysis_factory.h
│       │   │   ├── break_in_if_analysis.h
│       │   │   ├── def_use_analysis.h
│       │   │   ├── expr_types_analysis.h
│       │   │   ├── goto_target_analysis.h
│       │   │   ├── indirect_func_ref_analysis.h
│       │   │   ├── no_init_var_def_analysis.h
│       │   │   ├── null_pointer_analysis.h
│       │   │   ├── special_fp_analysis.h
│       │   │   ├── use_def_analysis.h
│       │   │   ├── used_types_visitor.h
│       │   │   ├── used_vars_visitor.h
│       │   │   ├── value_analysis.h
│       │   │   ├── var_uses_visitor.h
│       │   │   └── written_into_globals_visitor.h
│       │   ├── config/
│       │   │   ├── config.h
│       │   │   └── configs/
│       │   │       └── json_config.h
│       │   ├── evaluator/
│       │   │   ├── arithm_expr_evaluator.h
│       │   │   ├── arithm_expr_evaluator_factory.h
│       │   │   └── arithm_expr_evaluators/
│       │   │       ├── c_arithm_expr_evaluator.h
│       │   │       └── strict_arithm_expr_evaluator.h
│       │   ├── graphs/
│       │   │   ├── cfg/
│       │   │   │   ├── cfg.h
│       │   │   │   ├── cfg_builder.h
│       │   │   │   ├── cfg_builders/
│       │   │   │   │   ├── non_recursive_cfg_builder.h
│       │   │   │   │   └── recursive_cfg_builder.h
│       │   │   │   ├── cfg_traversal.h
│       │   │   │   ├── cfg_traversals/
│       │   │   │   │   ├── lhs_rhs_uses_cfg_traversal.h
│       │   │   │   │   ├── modified_before_read_cfg_traversal.h
│       │   │   │   │   ├── no_var_def_cfg_traversal.h
│       │   │   │   │   ├── nodes_of_var_use_cfg_traversal.h
│       │   │   │   │   ├── optim_func_info_cfg_traversal.h
│       │   │   │   │   ├── var_def_cfg_traversal.h
│       │   │   │   │   └── var_use_cfg_traversal.h
│       │   │   │   ├── cfg_writer.h
│       │   │   │   ├── cfg_writer_factory.h
│       │   │   │   └── cfg_writers/
│       │   │   │       └── graphviz_cfg_writer.h
│       │   │   └── cg/
│       │   │       ├── cg.h
│       │   │       ├── cg_builder.h
│       │   │       ├── cg_writer.h
│       │   │       ├── cg_writer_factory.h
│       │   │       └── cg_writers/
│       │   │           └── graphviz_cg_writer.h
│       │   ├── hll/
│       │   │   ├── bir_writer.h
│       │   │   ├── bracket_manager.h
│       │   │   ├── bracket_managers/
│       │   │   │   ├── c_bracket_manager.h
│       │   │   │   └── no_bracket_manager.h
│       │   │   ├── compound_op_manager.h
│       │   │   ├── compound_op_managers/
│       │   │   │   ├── c_compound_op_manager.h
│       │   │   │   └── no_compound_op_manager.h
│       │   │   ├── hll_writer.h
│       │   │   ├── hll_writer_factory.h
│       │   │   ├── hll_writers/
│       │   │   │   └── c_hll_writer.h
│       │   │   ├── output_manager.h
│       │   │   └── output_managers/
│       │   │       ├── json_manager.h
│       │   │       └── plain_manager.h
│       │   ├── ir/
│       │   │   ├── add_op_expr.h
│       │   │   ├── address_op_expr.h
│       │   │   ├── and_op_expr.h
│       │   │   ├── array_index_op_expr.h
│       │   │   ├── array_type.h
│       │   │   ├── assign_op_expr.h
│       │   │   ├── assign_stmt.h
│       │   │   ├── binary_op_expr.h
│       │   │   ├── bit_and_op_expr.h
│       │   │   ├── bit_cast_expr.h
│       │   │   ├── bit_or_op_expr.h
│       │   │   ├── bit_shl_op_expr.h
│       │   │   ├── bit_shr_op_expr.h
│       │   │   ├── bit_xor_op_expr.h
│       │   │   ├── break_stmt.h
│       │   │   ├── call_expr.h
│       │   │   ├── call_stmt.h
│       │   │   ├── cast_expr.h
│       │   │   ├── comma_op_expr.h
│       │   │   ├── const_array.h
│       │   │   ├── const_bool.h
│       │   │   ├── const_float.h
│       │   │   ├── const_int.h
│       │   │   ├── const_null_pointer.h
│       │   │   ├── const_string.h
│       │   │   ├── const_struct.h
│       │   │   ├── const_symbol.h
│       │   │   ├── constant.h
│       │   │   ├── continue_stmt.h
│       │   │   ├── deref_op_expr.h
│       │   │   ├── div_op_expr.h
│       │   │   ├── empty_stmt.h
│       │   │   ├── eq_op_expr.h
│       │   │   ├── expression.h
│       │   │   ├── ext_cast_expr.h
│       │   │   ├── float_type.h
│       │   │   ├── for_loop_stmt.h
│       │   │   ├── fp_to_int_cast_expr.h
│       │   │   ├── function.h
│       │   │   ├── function_builder.h
│       │   │   ├── function_type.h
│       │   │   ├── global_var_def.h
│       │   │   ├── goto_stmt.h
│       │   │   ├── gt_eq_op_expr.h
│       │   │   ├── gt_op_expr.h
│       │   │   ├── if_stmt.h
│       │   │   ├── int_to_fp_cast_expr.h
│       │   │   ├── int_to_ptr_cast_expr.h
│       │   │   ├── int_type.h
│       │   │   ├── lt_eq_op_expr.h
│       │   │   ├── lt_op_expr.h
│       │   │   ├── mod_op_expr.h
│       │   │   ├── module.h
│       │   │   ├── mul_op_expr.h
│       │   │   ├── neg_op_expr.h
│       │   │   ├── neq_op_expr.h
│       │   │   ├── not_op_expr.h
│       │   │   ├── or_op_expr.h
│       │   │   ├── pointer_type.h
│       │   │   ├── ptr_to_int_cast_expr.h
│       │   │   ├── return_stmt.h
│       │   │   ├── statement.h
│       │   │   ├── string_type.h
│       │   │   ├── struct_index_op_expr.h
│       │   │   ├── struct_type.h
│       │   │   ├── sub_op_expr.h
│       │   │   ├── switch_stmt.h
│       │   │   ├── ternary_op_expr.h
│       │   │   ├── trunc_cast_expr.h
│       │   │   ├── type.h
│       │   │   ├── ufor_loop_stmt.h
│       │   │   ├── unary_op_expr.h
│       │   │   ├── unknown_type.h
│       │   │   ├── unreachable_stmt.h
│       │   │   ├── value.h
│       │   │   ├── var_def_stmt.h
│       │   │   ├── variable.h
│       │   │   ├── void_type.h
│       │   │   └── while_loop_stmt.h
│       │   ├── llvm/
│       │   │   ├── llvm_debug_info_obtainer.h
│       │   │   ├── llvm_intrinsic_converter.h
│       │   │   ├── llvm_support.h
│       │   │   ├── llvmir2bir_converter/
│       │   │   │   ├── basic_block_converter.h
│       │   │   │   ├── cfg_node.h
│       │   │   │   ├── labels_handler.h
│       │   │   │   ├── llvm_constant_converter.h
│       │   │   │   ├── llvm_fcmp_converter.h
│       │   │   │   ├── llvm_instruction_converter.h
│       │   │   │   ├── llvm_type_converter.h
│       │   │   │   ├── llvm_value_converter.h
│       │   │   │   ├── structure_converter.h
│       │   │   │   └── variables_manager.h
│       │   │   ├── llvmir2bir_converter.h
│       │   │   └── string_conversions.h
│       │   ├── llvmir2hll.h
│       │   ├── obtainer/
│       │   │   ├── call_info_obtainer.h
│       │   │   ├── call_info_obtainer_factory.h
│       │   │   ├── call_info_obtainers/
│       │   │   │   ├── optim_call_info_obtainer.h
│       │   │   │   └── pessim_call_info_obtainer.h
│       │   │   ├── calls_in_module_obtainer.h
│       │   │   └── calls_obtainer.h
│       │   ├── optimizer/
│       │   │   ├── func_optimizer.h
│       │   │   ├── optimizer.h
│       │   │   ├── optimizer_manager.h
│       │   │   └── optimizers/
│       │   │       ├── bit_op_to_log_op_optimizer.h
│       │   │       ├── bit_shift_optimizer.h
│       │   │       ├── break_continue_return_optimizer.h
│       │   │       ├── c_array_arg_optimizer.h
│       │   │       ├── c_cast_optimizer.h
│       │   │       ├── copy_propagation_optimizer.h
│       │   │       ├── dead_code_optimizer.h
│       │   │       ├── dead_local_assign_optimizer.h
│       │   │       ├── deref_address_optimizer.h
│       │   │       ├── deref_to_array_index_optimizer.h
│       │   │       ├── empty_array_to_string_optimizer.h
│       │   │       ├── empty_stmt_optimizer.h
│       │   │       ├── goto_stmt_optimizer.h
│       │   │       ├── if_before_loop_optimizer.h
│       │   │       ├── if_structure_optimizer.h
│       │   │       ├── if_to_switch_optimizer.h
│       │   │       ├── llvm_intrinsics_optimizer.h
│       │   │       ├── loop_last_continue_optimizer.h
│       │   │       ├── no_init_var_def_optimizer.h
│       │   │       ├── pre_while_true_loop_conv_optimizer.h
│       │   │       ├── remove_all_casts_optimizer.h
│       │   │       ├── remove_useless_casts_optimizer.h
│       │   │       ├── self_assign_optimizer.h
│       │   │       ├── simple_copy_propagation_optimizer.h
│       │   │       ├── simplify_arithm_expr/
│       │   │       │   ├── bool_comparison_optimizer.h
│       │   │       │   ├── change_order_of_operands_sub_optimizer.h
│       │   │       │   ├── const_operator_const_sub_optimizer.h
│       │   │       │   ├── equal_operands_sub_optimizer.h
│       │   │       │   ├── negation_operator_sub_optimizer.h
│       │   │       │   ├── negative_operand_sub_optimizer.h
│       │   │       │   ├── one_sub_optimizer.h
│       │   │       │   ├── sub_optimizer.h
│       │   │       │   ├── sub_optimizer_factory.h
│       │   │       │   ├── ternary_operator_sub_optimizer.h
│       │   │       │   ├── three_operands_sub_optimizer.h
│       │   │       │   └── zero_sub_optimizer.h
│       │   │       ├── simplify_arithm_expr_optimizer.h
│       │   │       ├── unused_global_var_optimizer.h
│       │   │       ├── var_def_for_loop_optimizer.h
│       │   │       ├── var_def_stmt_optimizer.h
│       │   │       ├── void_return_optimizer.h
│       │   │       ├── while_true_to_for_loop_optimizer.h
│       │   │       ├── while_true_to_ufor_loop_optimizer.h
│       │   │       └── while_true_to_while_cond_optimizer.h
│       │   ├── pattern/
│       │   │   ├── pattern.h
│       │   │   ├── pattern_finder.h
│       │   │   ├── pattern_finder_factory.h
│       │   │   ├── pattern_finder_runner.h
│       │   │   ├── pattern_finder_runners/
│       │   │   │   ├── cli_pattern_finder_runner.h
│       │   │   │   └── no_action_pattern_finder_runner.h
│       │   │   ├── pattern_finders/
│       │   │   │   ├── api_call/
│       │   │   │   │   ├── api_call_info.h
│       │   │   │   │   ├── api_call_info_seq.h
│       │   │   │   │   ├── api_call_info_seq_parser.h
│       │   │   │   │   ├── api_call_seq_data.h
│       │   │   │   │   ├── api_call_seq_finder.h
│       │   │   │   │   └── api_call_seq_finders/
│       │   │   │   │       └── basic_block_api_call_seq_finder.h
│       │   │   │   ├── api_call_pattern_finder.h
│       │   │   │   └── api_call_seq_pattern_finder.h
│       │   │   └── patterns/
│       │   │       └── stmts_pattern.h
│       │   ├── semantics/
│       │   │   ├── semantics/
│       │   │   │   ├── compound_semantics.h
│       │   │   │   ├── compound_semantics_builder.h
│       │   │   │   ├── default_semantics.h
│       │   │   │   ├── gcc_general_semantics/
│       │   │   │   │   ├── get_c_header_file_for_func.h
│       │   │   │   │   ├── get_name_of_param.h
│       │   │   │   │   ├── get_name_of_var_storing_result.h
│       │   │   │   │   └── get_symbolic_names_for_param.h
│       │   │   │   ├── gcc_general_semantics.h
│       │   │   │   ├── impl_support/
│       │   │   │   │   ├── get_c_header_file_for_func.h
│       │   │   │   │   ├── get_name_of_param.h
│       │   │   │   │   ├── get_name_of_var_storing_result.h
│       │   │   │   │   └── get_symbolic_names_for_param.h
│       │   │   │   ├── libc_semantics/
│       │   │   │   │   ├── func_never_returns.h
│       │   │   │   │   ├── get_c_header_file_for_func.h
│       │   │   │   │   ├── get_name_of_param.h
│       │   │   │   │   ├── get_name_of_var_storing_result.h
│       │   │   │   │   └── get_symbolic_names_for_param.h
│       │   │   │   ├── libc_semantics.h
│       │   │   │   ├── win_api_semantics/
│       │   │   │   │   ├── func_never_returns.h
│       │   │   │   │   ├── get_c_header_file_for_func.h
│       │   │   │   │   ├── get_name_of_param/
│       │   │   │   │   │   ├── a.h
│       │   │   │   │   │   ├── b.h
│       │   │   │   │   │   ├── c1.h
│       │   │   │   │   │   ├── c2.h
│       │   │   │   │   │   ├── d.h
│       │   │   │   │   │   ├── e.h
│       │   │   │   │   │   ├── f.h
│       │   │   │   │   │   ├── g1.h
│       │   │   │   │   │   ├── g2.h
│       │   │   │   │   │   ├── h.h
│       │   │   │   │   │   ├── i.h
│       │   │   │   │   │   ├── j.h
│       │   │   │   │   │   ├── k.h
│       │   │   │   │   │   ├── l.h
│       │   │   │   │   │   ├── m.h
│       │   │   │   │   │   ├── n.h
│       │   │   │   │   │   ├── o.h
│       │   │   │   │   │   ├── p.h
│       │   │   │   │   │   ├── q.h
│       │   │   │   │   │   ├── r.h
│       │   │   │   │   │   ├── s.h
│       │   │   │   │   │   ├── t.h
│       │   │   │   │   │   ├── u.h
│       │   │   │   │   │   ├── v.h
│       │   │   │   │   │   ├── w.h
│       │   │   │   │   │   ├── x.h
│       │   │   │   │   │   ├── y.h
│       │   │   │   │   │   └── z.h
│       │   │   │   │   ├── get_name_of_param.h
│       │   │   │   │   ├── get_name_of_var_storing_result.h
│       │   │   │   │   └── get_symbolic_names_for_param.h
│       │   │   │   └── win_api_semantics.h
│       │   │   ├── semantics.h
│       │   │   └── semantics_factory.h
│       │   ├── support/
│       │   │   ├── caching.h
│       │   │   ├── const_symbol_converter.h
│       │   │   ├── debug.h
│       │   │   ├── expr_types_fixer.h
│       │   │   ├── expression_negater.h
│       │   │   ├── factory.h
│       │   │   ├── global_vars_sorter.h
│       │   │   ├── headers_for_declared_funcs.h
│       │   │   ├── library_funcs_remover.h
│       │   │   ├── metadatable.h
│       │   │   ├── observer.h
│       │   │   ├── singleton.h
│       │   │   ├── smart_ptr.h
│       │   │   ├── statements_counter.h
│       │   │   ├── struct_types_sorter.h
│       │   │   ├── subject.h
│       │   │   ├── types.h
│       │   │   ├── unreachable_code_in_cfg_remover.h
│       │   │   ├── valid_state.h
│       │   │   ├── value_text_repr_visitor.h
│       │   │   ├── variable_replacer.h
│       │   │   ├── visitable.h
│       │   │   ├── visitor.h
│       │   │   ├── visitor_adapter.h
│       │   │   └── visitors/
│       │   │       └── ordered_all_visitor.h
│       │   ├── utils/
│       │   │   ├── graphviz.h
│       │   │   ├── ir.h
│       │   │   ├── loop_optimizer.h
│       │   │   └── string.h
│       │   ├── validator/
│       │   │   ├── validator.h
│       │   │   ├── validator_factory.h
│       │   │   └── validators/
│       │   │       ├── break_outside_loop_validator.h
│       │   │       ├── no_global_var_def_validator.h
│       │   │       └── return_validator.h
│       │   ├── var_name_gen/
│       │   │   ├── var_name_gen.h
│       │   │   ├── var_name_gen_factory.h
│       │   │   └── var_name_gens/
│       │   │       ├── fruit_var_name_gen.h
│       │   │       ├── num_var_name_gen.h
│       │   │       └── word_var_name_gen.h
│       │   └── var_renamer/
│       │       ├── var_renamer.h
│       │       ├── var_renamer_factory.h
│       │       └── var_renamers/
│       │           ├── address_var_renamer.h
│       │           ├── hungarian_var_renamer.h
│       │           ├── readable_var_renamer.h
│       │           ├── simple_var_renamer.h
│       │           └── unified_var_renamer.h
│       ├── loader/
│       │   ├── image_factory.h
│       │   ├── loader/
│       │   │   ├── coff/
│       │   │   │   └── coff_image.h
│       │   │   ├── elf/
│       │   │   │   └── elf_image.h
│       │   │   ├── image.h
│       │   │   ├── intel_hex/
│       │   │   │   └── intel_hex_image.h
│       │   │   ├── macho/
│       │   │   │   └── macho_image.h
│       │   │   ├── pe/
│       │   │   │   └── pe_image.h
│       │   │   ├── raw_data/
│       │   │   │   └── raw_data_image.h
│       │   │   ├── segment.h
│       │   │   └── segment_data_source.h
│       │   ├── loader.h
│       │   └── utils/
│       │       ├── name_generator.h
│       │       ├── overlap_resolver.h
│       │       └── range.h
│       ├── macho-extractor/
│       │   └── break_fat.h
│       ├── patterngen/
│       │   ├── pattern_extractor/
│       │   │   ├── pattern_extractor.h
│       │   │   └── types/
│       │   │       └── symbol_pattern.h
│       │   └── patterngen.h
│       ├── pdbparser/
│       │   ├── pdb_file.h
│       │   ├── pdb_info.h
│       │   ├── pdb_symbols.h
│       │   ├── pdb_types.h
│       │   └── pdb_utils.h
│       ├── pelib/
│       │   ├── BoundImportDirectory.h
│       │   ├── CoffSymbolTable.h
│       │   ├── ComHeaderDirectory.h
│       │   ├── ConfigDirectory.h
│       │   ├── DebugDirectory.h
│       │   ├── DelayImportDirectory.h
│       │   ├── ExportDirectory.h
│       │   ├── IatDirectory.h
│       │   ├── ImageLoader.h
│       │   ├── ImportDirectory.h
│       │   ├── InputBuffer.h
│       │   ├── OutputBuffer.h
│       │   ├── PeFile.h
│       │   ├── PeLibAux.h
│       │   ├── PeLibInc.h
│       │   ├── RelocationsDirectory.h
│       │   ├── ResourceDirectory.h
│       │   ├── RichHeader.h
│       │   ├── SecurityDirectory.h
│       │   └── TlsDirectory.h
│       ├── retdec/
│       │   └── retdec.h
│       ├── rtti-finder/
│       │   ├── rtti/
│       │   │   ├── rtti_gcc.h
│       │   │   ├── rtti_gcc_parser.h
│       │   │   ├── rtti_msvc.h
│       │   │   └── rtti_msvc_parser.h
│       │   ├── rtti_finder.h
│       │   └── vtable/
│       │       ├── vtable_finder.h
│       │       ├── vtable_gcc.h
│       │       └── vtable_msvc.h
│       ├── serdes/
│       │   ├── address.h
│       │   ├── architecture.h
│       │   ├── basic_block.h
│       │   ├── calling_convention.h
│       │   ├── class.h
│       │   ├── file_format.h
│       │   ├── file_type.h
│       │   ├── function.h
│       │   ├── language.h
│       │   ├── object.h
│       │   ├── pattern.h
│       │   ├── std.h
│       │   ├── storage.h
│       │   ├── tool_info.h
│       │   ├── type.h
│       │   └── vtable.h
│       ├── stacofin/
│       │   └── stacofin.h
│       ├── unpacker/
│       │   ├── decompression/
│       │   │   ├── compressed_data.h
│       │   │   ├── lzma/
│       │   │   │   └── lzma_data.h
│       │   │   ├── lzmat/
│       │   │   │   └── lzmat_data.h
│       │   │   └── nrv/
│       │   │       ├── bit_parsers.h
│       │   │       ├── nrv2b_data.h
│       │   │       ├── nrv2d_data.h
│       │   │       ├── nrv2e_data.h
│       │   │       └── nrv_data.h
│       │   ├── plugin.h
│       │   ├── signature.h
│       │   ├── unpacker_exception.h
│       │   └── unpacking_stub.h
│       ├── unpackertool/
│       │   └── unpackertool.h
│       ├── utils/
│       │   ├── alignment.h
│       │   ├── array.h
│       │   ├── binary_path.h
│       │   ├── byte_value_storage.h
│       │   ├── container.h
│       │   ├── conversion.h
│       │   ├── crc32.h
│       │   ├── debug.h
│       │   ├── dynamic_buffer.h
│       │   ├── equality.h
│       │   ├── file_io.h
│       │   ├── filesystem.h
│       │   ├── filter_iterator.h
│       │   ├── io/
│       │   │   ├── log.h
│       │   │   └── logger.h
│       │   ├── math.h
│       │   ├── memory.h
│       │   ├── non_copyable.h
│       │   ├── ord_lookup.h
│       │   ├── os.h
│       │   ├── scope_exit.h
│       │   ├── string.h
│       │   ├── system.h
│       │   ├── time.h
│       │   └── version.h
│       └── yaracpp/
│           ├── doxygen.h
│           ├── yara_detector.h
│           ├── yara_match.h
│           ├── yara_meta.h
│           └── yara_rule.h
├── publications/
│   └── README.md
├── retdec-config.cmake
├── scripts/
│   ├── CMakeLists.txt
│   ├── retdec-archive-decompiler.py
│   ├── retdec-fileinfo.py
│   ├── retdec-signature-from-library-creator.py
│   ├── retdec-tests-runner.py
│   ├── retdec-unpacker.py
│   ├── retdec-utils.py
│   └── type_extractor/
│       ├── .gitignore
│       ├── Makefile
│       ├── extract_types.py
│       ├── gen_cstdlib_and_linux_jsons.sh
│       ├── gen_windows_and_windrivers_jsons.sh
│       ├── merge_jsons.py
│       ├── optimize_jsons.py
│       ├── tests/
│       │   ├── arg_parser_tests.py
│       │   ├── func_info_tests.py
│       │   ├── header_text_filters_tests.py
│       │   ├── io_tests.py
│       │   ├── json_types_tests.py
│       │   ├── merge_files_tests.py
│       │   ├── params_info_tests.py
│       │   ├── parse_enums_tests.py
│       │   ├── parse_includes_tests.py
│       │   ├── parse_structs_unions_tests.py
│       │   ├── remove_json_types_tests.py
│       │   ├── substitute_json_keys_tests.py
│       │   └── utils_tests.py
│       └── type_extractor/
│           ├── __init__.py
│           ├── arg_parser.py
│           ├── common_types.py
│           ├── func_info.py
│           ├── header_text_filters.py
│           ├── io.py
│           ├── json_types.py
│           ├── lti_types.py
│           ├── merge_files.py
│           ├── params_info.py
│           ├── parse_enums.py
│           ├── parse_includes.py
│           ├── parse_structs_unions.py
│           ├── remove_json_types.py
│           ├── substitute_json_keys.py
│           └── utils.py
├── src/
│   ├── CMakeLists.txt
│   ├── ar-extractor/
│   │   ├── CMakeLists.txt
│   │   ├── archive_wrapper.cpp
│   │   ├── detection.cpp
│   │   ├── doxygen.h
│   │   └── retdec-ar-extractor-config.cmake
│   ├── ar-extractortool/
│   │   ├── CMakeLists.txt
│   │   └── ar_extractor.cpp
│   ├── bin2llvmir/
│   │   ├── CMakeLists.txt
│   │   ├── analyses/
│   │   │   ├── ctor_dtor.cpp
│   │   │   ├── indirectly_called_funcs_analysis.cpp
│   │   │   ├── reachable_funcs_analysis.cpp
│   │   │   ├── reaching_definitions.cpp
│   │   │   └── symbolic_tree.cpp
│   │   ├── doxygen.h
│   │   ├── optimizations/
│   │   │   ├── asm_inst_remover/
│   │   │   │   └── asm_inst_remover.cpp
│   │   │   ├── class_hierarchy/
│   │   │   │   ├── hierarchy.cpp
│   │   │   │   └── hierarchy_analysis.cpp
│   │   │   ├── cond_branch_opt/
│   │   │   │   └── cond_branch_opt.cpp
│   │   │   ├── constants/
│   │   │   │   └── constants.cpp
│   │   │   ├── decoder/
│   │   │   │   ├── arm.cpp
│   │   │   │   ├── arm64.cpp
│   │   │   │   ├── bbs.cpp
│   │   │   │   ├── decoder.cpp
│   │   │   │   ├── decoder_init.cpp
│   │   │   │   ├── decoder_ranges.cpp
│   │   │   │   ├── functions.cpp
│   │   │   │   ├── ir_modifications.cpp
│   │   │   │   ├── jump_targets.cpp
│   │   │   │   ├── mips.cpp
│   │   │   │   ├── patterns.cpp
│   │   │   │   ├── powerpc.cpp
│   │   │   │   └── x86.cpp
│   │   │   ├── dump_module/
│   │   │   │   └── dump_module.cpp
│   │   │   ├── idioms/
│   │   │   │   ├── idioms.cpp
│   │   │   │   ├── idioms_abstract.cpp
│   │   │   │   ├── idioms_analysis.cpp
│   │   │   │   ├── idioms_borland.cpp
│   │   │   │   ├── idioms_common.cpp
│   │   │   │   ├── idioms_gcc.cpp
│   │   │   │   ├── idioms_intel.cpp
│   │   │   │   ├── idioms_llvm.cpp
│   │   │   │   ├── idioms_magicdivmod.cpp
│   │   │   │   ├── idioms_owatcom.cpp
│   │   │   │   └── idioms_vstudio.cpp
│   │   │   ├── idioms_libgcc/
│   │   │   │   └── idioms_libgcc.cpp
│   │   │   ├── inst_opt/
│   │   │   │   ├── inst_opt.cpp
│   │   │   │   └── inst_opt_pass.cpp
│   │   │   ├── inst_opt_rda/
│   │   │   │   ├── inst_opt_rda.cpp
│   │   │   │   └── inst_opt_rda_pass.cpp
│   │   │   ├── main_detection/
│   │   │   │   └── main_detection.cpp
│   │   │   ├── param_return/
│   │   │   │   ├── collector/
│   │   │   │   │   ├── collector.cpp
│   │   │   │   │   └── pic32.cpp
│   │   │   │   ├── data_entries.cpp
│   │   │   │   ├── filter/
│   │   │   │   │   ├── filter.cpp
│   │   │   │   │   └── ms_x64.cpp
│   │   │   │   └── param_return.cpp
│   │   │   ├── phi_remover/
│   │   │   │   └── phi_remover.cpp
│   │   │   ├── provider_init/
│   │   │   │   └── provider_init.cpp
│   │   │   ├── register_localization/
│   │   │   │   └── register_localization.cpp
│   │   │   ├── select_functions/
│   │   │   │   └── select_functions.cpp
│   │   │   ├── simple_types/
│   │   │   │   └── simple_types.cpp
│   │   │   ├── stack/
│   │   │   │   └── stack.cpp
│   │   │   ├── stack_pointer_ops/
│   │   │   │   └── stack_pointer_ops.cpp
│   │   │   ├── syscalls/
│   │   │   │   ├── arm.cpp
│   │   │   │   ├── arm64.cpp
│   │   │   │   ├── mips.cpp
│   │   │   │   ├── syscalls.cpp
│   │   │   │   └── x86.cpp
│   │   │   ├── types_propagator/
│   │   │   │   └── types_propagator.cpp
│   │   │   ├── unreachable_funcs/
│   │   │   │   └── unreachable_funcs.cpp
│   │   │   ├── value_protect/
│   │   │   │   └── value_protect.cpp
│   │   │   ├── writer_bc/
│   │   │   │   └── writer_bc.cpp
│   │   │   ├── writer_config/
│   │   │   │   └── writer_config.cpp
│   │   │   ├── writer_dsm/
│   │   │   │   └── writer_dsm.cpp
│   │   │   ├── writer_ll/
│   │   │   │   └── writer_ll.cpp
│   │   │   ├── x86_addr_spaces/
│   │   │   │   ├── x86_addr_spaces.cpp
│   │   │   │   └── x86_addr_spaces_pass.cpp
│   │   │   └── x87_fpu/
│   │   │       └── x87_fpu.cpp
│   │   ├── providers/
│   │   │   ├── abi/
│   │   │   │   ├── abi.cpp
│   │   │   │   ├── arm.cpp
│   │   │   │   ├── arm64.cpp
│   │   │   │   ├── mips.cpp
│   │   │   │   ├── mips64.cpp
│   │   │   │   ├── ms_x64.cpp
│   │   │   │   ├── pic32.cpp
│   │   │   │   ├── powerpc.cpp
│   │   │   │   ├── powerpc64.cpp
│   │   │   │   ├── x64.cpp
│   │   │   │   └── x86.cpp
│   │   │   ├── asm_instruction.cpp
│   │   │   ├── calling_convention/
│   │   │   │   ├── arm/
│   │   │   │   │   └── arm_conv.cpp
│   │   │   │   ├── arm64/
│   │   │   │   │   └── arm64_conv.cpp
│   │   │   │   ├── calling_convention.cpp
│   │   │   │   ├── mips/
│   │   │   │   │   ├── mips_conv.cpp
│   │   │   │   │   └── mips_psp.cpp
│   │   │   │   ├── mips64/
│   │   │   │   │   └── mips64_conv.cpp
│   │   │   │   ├── pic32/
│   │   │   │   │   └── pic32_conv.cpp
│   │   │   │   ├── powerpc/
│   │   │   │   │   └── powerpc_conv.cpp
│   │   │   │   ├── powerpc64/
│   │   │   │   │   └── powerpc64_conv.cpp
│   │   │   │   ├── x64/
│   │   │   │   │   ├── x64_conv.cpp
│   │   │   │   │   ├── x64_microsoft.cpp
│   │   │   │   │   └── x64_systemv.cpp
│   │   │   │   └── x86/
│   │   │   │       ├── x86_cdecl.cpp
│   │   │   │       ├── x86_conv.cpp
│   │   │   │       ├── x86_fastcall.cpp
│   │   │   │       ├── x86_pascal.cpp
│   │   │   │       ├── x86_thiscall.cpp
│   │   │   │       └── x86_watcom.cpp
│   │   │   ├── config.cpp
│   │   │   ├── debugformat.cpp
│   │   │   ├── demangler.cpp
│   │   │   ├── fileimage.cpp
│   │   │   ├── lti.cpp
│   │   │   └── names.cpp
│   │   ├── retdec-bin2llvmir-config.cmake
│   │   └── utils/
│   │       ├── capstone.cpp
│   │       ├── ctypes2llvm.cpp
│   │       ├── debug.cpp
│   │       ├── ir_modifier.cpp
│   │       └── llvm.cpp
│   ├── bin2pat/
│   │   ├── CMakeLists.txt
│   │   └── bin2pat.cpp
│   ├── capstone2llvmir/
│   │   ├── CMakeLists.txt
│   │   ├── arm/
│   │   │   ├── arm.cpp
│   │   │   ├── arm_impl.h
│   │   │   └── arm_init.cpp
│   │   ├── arm64/
│   │   │   ├── arm64.cpp
│   │   │   ├── arm64_impl.h
│   │   │   └── arm64_init.cpp
│   │   ├── capstone2llvmir.cpp
│   │   ├── capstone2llvmir_impl.cpp
│   │   ├── capstone2llvmir_impl.h
│   │   ├── capstone_utils.h
│   │   ├── exceptions.cpp
│   │   ├── llvmir_utils.cpp
│   │   ├── llvmir_utils.h
│   │   ├── mips/
│   │   │   ├── mips.cpp
│   │   │   ├── mips_impl.h
│   │   │   └── mips_init.cpp
│   │   ├── powerpc/
│   │   │   ├── powerpc.cpp
│   │   │   ├── powerpc_impl.h
│   │   │   └── powerpc_init.cpp
│   │   ├── retdec-capstone2llvmir-config.cmake
│   │   └── x86/
│   │       ├── x86.cpp
│   │       ├── x86_impl.h
│   │       └── x86_init.cpp
│   ├── capstone2llvmirtool/
│   │   ├── CMakeLists.txt
│   │   └── capstone2llvmir.cpp
│   ├── common/
│   │   ├── CMakeLists.txt
│   │   ├── address.cpp
│   │   ├── architecture.cpp
│   │   ├── basic_block.cpp
│   │   ├── calling_convention.cpp
│   │   ├── class.cpp
│   │   ├── file_format.cpp
│   │   ├── file_type.cpp
│   │   ├── function.cpp
│   │   ├── language.cpp
│   │   ├── object.cpp
│   │   ├── pattern.cpp
│   │   ├── retdec-common-config.cmake
│   │   ├── storage.cpp
│   │   ├── tool_info.cpp
│   │   ├── type.cpp
│   │   └── vtable.cpp
│   ├── config/
│   │   ├── CMakeLists.txt
│   │   ├── config.cpp
│   │   ├── parameters.cpp
│   │   └── retdec-config-config.cmake
│   ├── cpdetect/
│   │   ├── CMakeLists.txt
│   │   ├── cpdetect.cpp
│   │   ├── cptypes.cpp
│   │   ├── doxygen.h
│   │   ├── errors.cpp
│   │   ├── heuristics/
│   │   │   ├── elf_heuristics.cpp
│   │   │   ├── heuristics.cpp
│   │   │   ├── macho_heuristics.cpp
│   │   │   └── pe_heuristics.cpp
│   │   ├── retdec-cpdetect-config.cmake
│   │   ├── search.cpp
│   │   └── signature.cpp
│   ├── ctypes/
│   │   ├── CMakeLists.txt
│   │   ├── annotation.cpp
│   │   ├── annotation_in.cpp
│   │   ├── annotation_inout.cpp
│   │   ├── annotation_optional.cpp
│   │   ├── annotation_out.cpp
│   │   ├── array_type.cpp
│   │   ├── call_convention.cpp
│   │   ├── composite_type.cpp
│   │   ├── context.cpp
│   │   ├── doxygen.h
│   │   ├── enum_type.cpp
│   │   ├── floating_point_type.cpp
│   │   ├── function.cpp
│   │   ├── function_declaration.cpp
│   │   ├── function_type.cpp
│   │   ├── header_file.cpp
│   │   ├── integral_type.cpp
│   │   ├── member.cpp
│   │   ├── module.cpp
│   │   ├── named_type.cpp
│   │   ├── parameter.cpp
│   │   ├── pointer_type.cpp
│   │   ├── reference_type.cpp
│   │   ├── retdec-ctypes-config.cmake
│   │   ├── struct_type.cpp
│   │   ├── type.cpp
│   │   ├── typedefed_type.cpp
│   │   ├── union_type.cpp
│   │   ├── unknown_type.cpp
│   │   ├── visit_all_visitor.cpp
│   │   ├── visitor.cpp
│   │   └── void_type.cpp
│   ├── ctypesparser/
│   │   ├── CMakeLists.txt
│   │   ├── ctypes_parser.cpp
│   │   ├── doxygen.h
│   │   ├── json_ctypes_parser.cpp
│   │   ├── retdec-ctypesparser-config.cmake
│   │   └── type_config.cpp
│   ├── debugformat/
│   │   ├── CMakeLists.txt
│   │   ├── debugformat.cpp
│   │   ├── dwarf.cpp
│   │   ├── pdb.cpp
│   │   └── retdec-debugformat-config.cmake
│   ├── demangler/
│   │   ├── CMakeLists.txt
│   │   ├── ast_ctypes_parser.cpp
│   │   ├── borland_ast/
│   │   │   ├── array_type.cpp
│   │   │   ├── built_in_type.cpp
│   │   │   ├── char_type.cpp
│   │   │   ├── conversion_operator.cpp
│   │   │   ├── float_type.cpp
│   │   │   ├── function_node.cpp
│   │   │   ├── function_type.cpp
│   │   │   ├── integral_type.cpp
│   │   │   ├── name_node.cpp
│   │   │   ├── named_type.cpp
│   │   │   ├── node.cpp
│   │   │   ├── node_array.cpp
│   │   │   ├── parentheses_node.cpp
│   │   │   ├── pointer_type.cpp
│   │   │   ├── qualifiers.cpp
│   │   │   ├── reference_type.cpp
│   │   │   ├── rreference_type.cpp
│   │   │   ├── template_node.cpp
│   │   │   └── type_node.cpp
│   │   ├── borland_ast_ctypes_parser.cpp
│   │   ├── borland_ast_parser.cpp
│   │   ├── borland_demangler.cpp
│   │   ├── context.cpp
│   │   ├── demangler_base.cpp
│   │   ├── itanium_ast_ctypes_parser.cpp
│   │   ├── itanium_demangler_adapter.cpp
│   │   ├── microsoft_demangler_adapter.cpp
│   │   ├── ms_ast_ctypes_parser.cpp
│   │   └── retdec-demangler-config.cmake
│   ├── demanglertool/
│   │   ├── CMakeLists.txt
│   │   └── demangler.cpp
│   ├── fileformat/
│   │   ├── CMakeLists.txt
│   │   ├── doxygen.h
│   │   ├── file_format/
│   │   │   ├── coff/
│   │   │   │   └── coff_format.cpp
│   │   │   ├── elf/
│   │   │   │   └── elf_format.cpp
│   │   │   ├── file_format.cpp
│   │   │   ├── intel_hex/
│   │   │   │   ├── intel_hex_format.cpp
│   │   │   │   └── intel_hex_parser/
│   │   │   │       ├── intel_hex_parser.cpp
│   │   │   │       └── intel_hex_tokenizer.cpp
│   │   │   ├── macho/
│   │   │   │   └── macho_format.cpp
│   │   │   ├── pe/
│   │   │   │   ├── pe_dll_list.cpp
│   │   │   │   └── pe_format.cpp
│   │   │   └── raw_data/
│   │   │       └── raw_data_format.cpp
│   │   ├── format_factory.cpp
│   │   ├── retdec-fileformat-config.cmake
│   │   ├── types/
│   │   │   ├── certificate_table/
│   │   │   │   ├── certificate.cpp
│   │   │   │   └── certificate_table.cpp
│   │   │   ├── dotnet_headers/
│   │   │   │   ├── blob_stream.cpp
│   │   │   │   ├── clr_header.cpp
│   │   │   │   ├── guid_stream.cpp
│   │   │   │   ├── metadata_header.cpp
│   │   │   │   ├── metadata_stream.cpp
│   │   │   │   ├── metadata_tables.cpp
│   │   │   │   ├── string_stream.cpp
│   │   │   │   └── user_string_stream.cpp
│   │   │   ├── dotnet_types/
│   │   │   │   ├── dotnet_class.cpp
│   │   │   │   ├── dotnet_data_types.cpp
│   │   │   │   ├── dotnet_field.cpp
│   │   │   │   ├── dotnet_method.cpp
│   │   │   │   ├── dotnet_parameter.cpp
│   │   │   │   ├── dotnet_property.cpp
│   │   │   │   ├── dotnet_type.cpp
│   │   │   │   └── dotnet_type_reconstructor.cpp
│   │   │   ├── dynamic_table/
│   │   │   │   ├── dynamic_entry.cpp
│   │   │   │   └── dynamic_table.cpp
│   │   │   ├── export_table/
│   │   │   │   ├── export.cpp
│   │   │   │   └── export_table.cpp
│   │   │   ├── import_table/
│   │   │   │   ├── elf_import_table.cpp
│   │   │   │   ├── import.cpp
│   │   │   │   ├── import_table.cpp
│   │   │   │   └── pe_import.cpp
│   │   │   ├── note_section/
│   │   │   │   ├── elf_core.cpp
│   │   │   │   └── elf_notes.cpp
│   │   │   ├── pdb_info/
│   │   │   │   └── pdb_info.cpp
│   │   │   ├── relocation_table/
│   │   │   │   ├── relocation.cpp
│   │   │   │   └── relocation_table.cpp
│   │   │   ├── resource_table/
│   │   │   │   ├── bitmap_image.cpp
│   │   │   │   ├── resource.cpp
│   │   │   │   ├── resource_icon.cpp
│   │   │   │   ├── resource_icon_group.cpp
│   │   │   │   ├── resource_table.cpp
│   │   │   │   └── resource_tree.cpp
│   │   │   ├── rich_header/
│   │   │   │   ├── linker_info.cpp
│   │   │   │   └── rich_header.cpp
│   │   │   ├── sec_seg/
│   │   │   │   ├── elf_section.cpp
│   │   │   │   ├── elf_segment.cpp
│   │   │   │   ├── macho_section.cpp
│   │   │   │   ├── pe_coff_section.cpp
│   │   │   │   ├── sec_seg.cpp
│   │   │   │   ├── section.cpp
│   │   │   │   └── segment.cpp
│   │   │   ├── strings/
│   │   │   │   └── string.cpp
│   │   │   ├── symbol_table/
│   │   │   │   ├── elf_symbol.cpp
│   │   │   │   ├── macho_symbol.cpp
│   │   │   │   ├── symbol.cpp
│   │   │   │   └── symbol_table.cpp
│   │   │   ├── tls_info/
│   │   │   │   └── tls_info.cpp
│   │   │   └── visual_basic/
│   │   │       ├── visual_basic_extern.cpp
│   │   │       ├── visual_basic_info.cpp
│   │   │       └── visual_basic_object.cpp
│   │   └── utils/
│   │       ├── asn1.cpp
│   │       ├── byte_array_buffer.cpp
│   │       ├── conversions.cpp
│   │       ├── crypto.cpp
│   │       ├── file_io.cpp
│   │       ├── format_detection.cpp
│   │       └── other.cpp
│   ├── fileinfo/
│   │   ├── CMakeLists.txt
│   │   ├── doxygen.h
│   │   ├── file_detector/
│   │   │   ├── coff_detector.cpp
│   │   │   ├── coff_detector.h
│   │   │   ├── detector_factory.cpp
│   │   │   ├── detector_factory.h
│   │   │   ├── elf_detector.cpp
│   │   │   ├── elf_detector.h
│   │   │   ├── file_detector.cpp
│   │   │   ├── file_detector.h
│   │   │   ├── intel_hex_detector.cpp
│   │   │   ├── intel_hex_detector.h
│   │   │   ├── macho_detector.cpp
│   │   │   ├── macho_detector.h
│   │   │   ├── pe_detector.cpp
│   │   │   ├── pe_detector.h
│   │   │   ├── raw_data_detector.cpp
│   │   │   └── raw_data_detector.h
│   │   ├── file_information/
│   │   │   ├── file_information.cpp
│   │   │   ├── file_information.h
│   │   │   └── file_information_types/
│   │   │       ├── data_directory.cpp
│   │   │       ├── data_directory.h
│   │   │       ├── dotnet_info.cpp
│   │   │       ├── dotnet_info.h
│   │   │       ├── dynamic_section/
│   │   │       │   ├── dynamic_entry.cpp
│   │   │       │   ├── dynamic_entry.h
│   │   │       │   ├── dynamic_section.cpp
│   │   │       │   └── dynamic_section.h
│   │   │       ├── elf_core.cpp
│   │   │       ├── elf_core.h
│   │   │       ├── elf_notes.cpp
│   │   │       ├── elf_notes.h
│   │   │       ├── export_table.cpp
│   │   │       ├── export_table.h
│   │   │       ├── file_header.cpp
│   │   │       ├── file_header.h
│   │   │       ├── file_information_types.h
│   │   │       ├── file_section.cpp
│   │   │       ├── file_section.h
│   │   │       ├── file_segment.cpp
│   │   │       ├── file_segment.h
│   │   │       ├── flags.cpp
│   │   │       ├── flags.h
│   │   │       ├── import_table.cpp
│   │   │       ├── import_table.h
│   │   │       ├── loader_info.cpp
│   │   │       ├── loader_info.h
│   │   │       ├── pattern/
│   │   │       │   ├── pattern.cpp
│   │   │       │   ├── pattern.h
│   │   │       │   ├── pattern_match.cpp
│   │   │       │   └── pattern_match.h
│   │   │       ├── pdb_info.cpp
│   │   │       ├── pdb_info.h
│   │   │       ├── relocation_table/
│   │   │       │   ├── relocation.cpp
│   │   │       │   ├── relocation.h
│   │   │       │   ├── relocation_table.cpp
│   │   │       │   └── relocation_table.h
│   │   │       ├── resource_table/
│   │   │       │   ├── resource.cpp
│   │   │       │   ├── resource.h
│   │   │       │   ├── resource_table.cpp
│   │   │       │   └── resource_table.h
│   │   │       ├── rich_header.cpp
│   │   │       ├── rich_header.h
│   │   │       ├── special_information.cpp
│   │   │       ├── special_information.h
│   │   │       ├── strings.cpp
│   │   │       ├── strings.h
│   │   │       ├── symbol_table/
│   │   │       │   ├── symbol.cpp
│   │   │       │   ├── symbol.h
│   │   │       │   ├── symbol_table.cpp
│   │   │       │   └── symbol_table.h
│   │   │       ├── tls_info.cpp
│   │   │       ├── tls_info.h
│   │   │       ├── type_conversions.cpp
│   │   │       ├── type_conversions.h
│   │   │       ├── visual_basic_info.cpp
│   │   │       └── visual_basic_info.h
│   │   ├── file_presentation/
│   │   │   ├── config_presentation.cpp
│   │   │   ├── config_presentation.h
│   │   │   ├── file_presentation.cpp
│   │   │   ├── file_presentation.h
│   │   │   ├── getters/
│   │   │   │   ├── format.cpp
│   │   │   │   ├── format.h
│   │   │   │   ├── iterative_getter/
│   │   │   │   │   ├── iterative_distribution_getter/
│   │   │   │   │   │   ├── anomalies_plain_getter.cpp
│   │   │   │   │   │   ├── anomalies_plain_getter.h
│   │   │   │   │   │   ├── data_directory_plain_getter.cpp
│   │   │   │   │   │   ├── data_directory_plain_getter.h
│   │   │   │   │   │   ├── dynamic_sections_plain_getter.cpp
│   │   │   │   │   │   ├── dynamic_sections_plain_getter.h
│   │   │   │   │   │   ├── elf_auxv_plain_getter.cpp
│   │   │   │   │   │   ├── elf_auxv_plain_getter.h
│   │   │   │   │   │   ├── elf_core_map_plain_getter.cpp
│   │   │   │   │   │   ├── elf_core_map_plain_getter.h
│   │   │   │   │   │   ├── elf_notes_plain_getter.cpp
│   │   │   │   │   │   ├── elf_notes_plain_getter.h
│   │   │   │   │   │   ├── export_table_plain_getter.cpp
│   │   │   │   │   │   ├── export_table_plain_getter.h
│   │   │   │   │   │   ├── import_table_plain_getter.cpp
│   │   │   │   │   │   ├── import_table_plain_getter.h
│   │   │   │   │   │   ├── iterative_distribution_getter.cpp
│   │   │   │   │   │   ├── iterative_distribution_getter.h
│   │   │   │   │   │   ├── loader_info_plain_getter.cpp
│   │   │   │   │   │   ├── loader_info_plain_getter.h
│   │   │   │   │   │   ├── missing_deps_plain_getter.cpp
│   │   │   │   │   │   ├── missing_deps_plain_getter.h
│   │   │   │   │   │   ├── pattern_matches_plain_getter.cpp
│   │   │   │   │   │   ├── pattern_matches_plain_getter.h
│   │   │   │   │   │   ├── relocation_tables_plain_getter.cpp
│   │   │   │   │   │   ├── relocation_tables_plain_getter.h
│   │   │   │   │   │   ├── resource_plain_getter.cpp
│   │   │   │   │   │   ├── resource_plain_getter.h
│   │   │   │   │   │   ├── rich_header_plain_getter.cpp
│   │   │   │   │   │   ├── rich_header_plain_getter.h
│   │   │   │   │   │   ├── section_plain_getter.cpp
│   │   │   │   │   │   ├── section_plain_getter.h
│   │   │   │   │   │   ├── segment_plain_getter.cpp
│   │   │   │   │   │   ├── segment_plain_getter.h
│   │   │   │   │   │   ├── strings_plain_getter.cpp
│   │   │   │   │   │   ├── strings_plain_getter.h
│   │   │   │   │   │   ├── symbol_tables_plain_getter.cpp
│   │   │   │   │   │   ├── symbol_tables_plain_getter.h
│   │   │   │   │   │   ├── tls_info_plain_getter.cpp
│   │   │   │   │   │   ├── tls_info_plain_getter.h
│   │   │   │   │   │   ├── typeref_table_plain_getter.cpp
│   │   │   │   │   │   ├── typeref_table_plain_getter.h
│   │   │   │   │   │   ├── version_info_language_table_plain_getter.cpp
│   │   │   │   │   │   ├── version_info_language_table_plain_getter.h
│   │   │   │   │   │   ├── version_info_string_table_plain_getter.cpp
│   │   │   │   │   │   ├── version_info_string_table_plain_getter.h
│   │   │   │   │   │   ├── visual_basic_extern_table_plain_getter.cpp
│   │   │   │   │   │   └── visual_basic_extern_table_plain_getter.h
│   │   │   │   │   ├── iterative_getter.cpp
│   │   │   │   │   ├── iterative_getter.h
│   │   │   │   │   ├── iterative_simple_getter/
│   │   │   │   │   │   ├── iterative_simple_getter.cpp
│   │   │   │   │   │   └── iterative_simple_getter.h
│   │   │   │   │   └── iterative_subtitle_getter/
│   │   │   │   │       ├── anomalies_json_getter.cpp
│   │   │   │   │       ├── anomalies_json_getter.h
│   │   │   │   │       ├── data_directory_json_getter.cpp
│   │   │   │   │       ├── data_directory_json_getter.h
│   │   │   │   │       ├── dynamic_sections_json_getter.cpp
│   │   │   │   │       ├── dynamic_sections_json_getter.h
│   │   │   │   │       ├── export_table_json_getter.cpp
│   │   │   │   │       ├── export_table_json_getter.h
│   │   │   │   │       ├── import_table_json_getter.cpp
│   │   │   │   │       ├── import_table_json_getter.h
│   │   │   │   │       ├── iterative_subtitle_getter.cpp
│   │   │   │   │       ├── iterative_subtitle_getter.h
│   │   │   │   │       ├── loader_info_json_getter.cpp
│   │   │   │   │       ├── loader_info_json_getter.h
│   │   │   │   │       ├── missing_deps_json_getter.cpp
│   │   │   │   │       ├── missing_deps_json_getter.h
│   │   │   │   │       ├── relocation_tables_json_getter.cpp
│   │   │   │   │       ├── relocation_tables_json_getter.h
│   │   │   │   │       ├── resource_json_getter.cpp
│   │   │   │   │       ├── resource_json_getter.h
│   │   │   │   │       ├── rich_header_json_getter.cpp
│   │   │   │   │       ├── rich_header_json_getter.h
│   │   │   │   │       ├── section_json_getter.cpp
│   │   │   │   │       ├── section_json_getter.h
│   │   │   │   │       ├── segment_json_getter.cpp
│   │   │   │   │       ├── segment_json_getter.h
│   │   │   │   │       ├── strings_json_getter.cpp
│   │   │   │   │       ├── strings_json_getter.h
│   │   │   │   │       ├── symbol_tables_json_getter.cpp
│   │   │   │   │       ├── symbol_tables_json_getter.h
│   │   │   │   │       ├── typeref_table_json_getter.cpp
│   │   │   │   │       └── typeref_table_json_getter.h
│   │   │   │   ├── json_getters.h
│   │   │   │   ├── pattern_config_getter/
│   │   │   │   │   ├── pattern_config_getter.cpp
│   │   │   │   │   └── pattern_config_getter.h
│   │   │   │   ├── plain_getters.h
│   │   │   │   └── simple_getter/
│   │   │   │       ├── basic_json_getter.cpp
│   │   │   │       ├── basic_json_getter.h
│   │   │   │       ├── basic_plain_getter.cpp
│   │   │   │       ├── basic_plain_getter.h
│   │   │   │       ├── dotnet_plain_getter.cpp
│   │   │   │       ├── dotnet_plain_getter.h
│   │   │   │       ├── entry_point_json_getter.cpp
│   │   │   │       ├── entry_point_json_getter.h
│   │   │   │       ├── header_json_getter.cpp
│   │   │   │       ├── header_json_getter.h
│   │   │   │       ├── header_plain_getter.cpp
│   │   │   │       ├── header_plain_getter.h
│   │   │   │       ├── pdb_json_getter.cpp
│   │   │   │       ├── pdb_json_getter.h
│   │   │   │       ├── pdb_plain_getter.cpp
│   │   │   │       ├── pdb_plain_getter.h
│   │   │   │       ├── simple_getter.cpp
│   │   │   │       ├── simple_getter.h
│   │   │   │       ├── visual_basic_plain_getter.cpp
│   │   │   │       └── visual_basic_plain_getter.h
│   │   │   ├── json_presentation.cpp
│   │   │   ├── json_presentation.h
│   │   │   ├── plain_presentation.cpp
│   │   │   └── plain_presentation.h
│   │   ├── file_wrapper/
│   │   │   ├── coff_wrapper.cpp
│   │   │   ├── coff_wrapper.h
│   │   │   ├── elf_wrapper.cpp
│   │   │   ├── elf_wrapper.h
│   │   │   ├── macho_wrapper.cpp
│   │   │   ├── macho_wrapper.h
│   │   │   ├── pe_wrapper.cpp
│   │   │   └── pe_wrapper.h
│   │   ├── fileinfo-config.json
│   │   ├── fileinfo.cpp
│   │   └── pattern_detector/
│   │       ├── pattern_detector.cpp
│   │       └── pattern_detector.h
│   ├── getsig/
│   │   ├── CMakeLists.txt
│   │   ├── doxygen.h
│   │   └── getsig.cpp
│   ├── idr2pat/
│   │   ├── CMakeLists.txt
│   │   └── idr2pat.cpp
│   ├── llvmir-emul/
│   │   ├── CMakeLists.txt
│   │   ├── llvmir_emul.cpp
│   │   └── retdec-llvmir-emul-config.cmake
│   ├── llvmir2hll/
│   │   ├── CMakeLists.txt
│   │   ├── analysis/
│   │   │   ├── alias_analysis/
│   │   │   │   ├── alias_analyses/
│   │   │   │   │   ├── basic_alias_analysis.cpp
│   │   │   │   │   └── simple_alias_analysis.cpp
│   │   │   │   └── alias_analysis.cpp
│   │   │   ├── break_in_if_analysis.cpp
│   │   │   ├── def_use_analysis.cpp
│   │   │   ├── expr_types_analysis.cpp
│   │   │   ├── goto_target_analysis.cpp
│   │   │   ├── indirect_func_ref_analysis.cpp
│   │   │   ├── no_init_var_def_analysis.cpp
│   │   │   ├── null_pointer_analysis.cpp
│   │   │   ├── special_fp_analysis.cpp
│   │   │   ├── use_def_analysis.cpp
│   │   │   ├── used_types_visitor.cpp
│   │   │   ├── used_vars_visitor.cpp
│   │   │   ├── value_analysis.cpp
│   │   │   ├── var_uses_visitor.cpp
│   │   │   └── written_into_globals_visitor.cpp
│   │   ├── config/
│   │   │   ├── config.cpp
│   │   │   └── configs/
│   │   │       └── json_config.cpp
│   │   ├── doxygen.h
│   │   ├── evaluator/
│   │   │   ├── arithm_expr_evaluator.cpp
│   │   │   └── arithm_expr_evaluators/
│   │   │       ├── c_arithm_expr_evaluator.cpp
│   │   │       └── strict_arithm_expr_evaluator.cpp
│   │   ├── graphs/
│   │   │   ├── cfg/
│   │   │   │   ├── cfg.cpp
│   │   │   │   ├── cfg_builder.cpp
│   │   │   │   ├── cfg_builders/
│   │   │   │   │   ├── non_recursive_cfg_builder.cpp
│   │   │   │   │   └── recursive_cfg_builder.cpp
│   │   │   │   ├── cfg_traversal.cpp
│   │   │   │   ├── cfg_traversals/
│   │   │   │   │   ├── lhs_rhs_uses_cfg_traversal.cpp
│   │   │   │   │   ├── modified_before_read_cfg_traversal.cpp
│   │   │   │   │   ├── no_var_def_cfg_traversal.cpp
│   │   │   │   │   ├── nodes_of_var_use_cfg_traversal.cpp
│   │   │   │   │   ├── optim_func_info_cfg_traversal.cpp
│   │   │   │   │   ├── var_def_cfg_traversal.cpp
│   │   │   │   │   └── var_use_cfg_traversal.cpp
│   │   │   │   ├── cfg_writer.cpp
│   │   │   │   └── cfg_writers/
│   │   │   │       └── graphviz_cfg_writer.cpp
│   │   │   └── cg/
│   │   │       ├── cg.cpp
│   │   │       ├── cg_builder.cpp
│   │   │       ├── cg_writer.cpp
│   │   │       └── cg_writers/
│   │   │           └── graphviz_cg_writer.cpp
│   │   ├── hll/
│   │   │   ├── bir_writer.cpp
│   │   │   ├── bracket_manager.cpp
│   │   │   ├── bracket_managers/
│   │   │   │   ├── c_bracket_manager.cpp
│   │   │   │   └── no_bracket_manager.cpp
│   │   │   ├── compound_op_manager.cpp
│   │   │   ├── compound_op_managers/
│   │   │   │   ├── c_compound_op_manager.cpp
│   │   │   │   └── no_compound_op_manager.cpp
│   │   │   ├── hll_writer.cpp
│   │   │   ├── hll_writers/
│   │   │   │   └── c_hll_writer.cpp
│   │   │   ├── output_manager.cpp
│   │   │   └── output_managers/
│   │   │       ├── json_manager.cpp
│   │   │       └── plain_manager.cpp
│   │   ├── ir/
│   │   │   ├── add_op_expr.cpp
│   │   │   ├── address_op_expr.cpp
│   │   │   ├── and_op_expr.cpp
│   │   │   ├── array_index_op_expr.cpp
│   │   │   ├── array_type.cpp
│   │   │   ├── assign_op_expr.cpp
│   │   │   ├── assign_stmt.cpp
│   │   │   ├── binary_op_expr.cpp
│   │   │   ├── bit_and_op_expr.cpp
│   │   │   ├── bit_cast_expr.cpp
│   │   │   ├── bit_or_op_expr.cpp
│   │   │   ├── bit_shl_op_expr.cpp
│   │   │   ├── bit_shr_op_expr.cpp
│   │   │   ├── bit_xor_op_expr.cpp
│   │   │   ├── break_stmt.cpp
│   │   │   ├── call_expr.cpp
│   │   │   ├── call_stmt.cpp
│   │   │   ├── cast_expr.cpp
│   │   │   ├── comma_op_expr.cpp
│   │   │   ├── const_array.cpp
│   │   │   ├── const_bool.cpp
│   │   │   ├── const_float.cpp
│   │   │   ├── const_int.cpp
│   │   │   ├── const_null_pointer.cpp
│   │   │   ├── const_string.cpp
│   │   │   ├── const_struct.cpp
│   │   │   ├── const_symbol.cpp
│   │   │   ├── continue_stmt.cpp
│   │   │   ├── deref_op_expr.cpp
│   │   │   ├── div_op_expr.cpp
│   │   │   ├── empty_stmt.cpp
│   │   │   ├── eq_op_expr.cpp
│   │   │   ├── expression.cpp
│   │   │   ├── ext_cast_expr.cpp
│   │   │   ├── float_type.cpp
│   │   │   ├── for_loop_stmt.cpp
│   │   │   ├── fp_to_int_cast_expr.cpp
│   │   │   ├── function.cpp
│   │   │   ├── function_builder.cpp
│   │   │   ├── function_type.cpp
│   │   │   ├── global_var_def.cpp
│   │   │   ├── goto_stmt.cpp
│   │   │   ├── gt_eq_op_expr.cpp
│   │   │   ├── gt_op_expr.cpp
│   │   │   ├── if_stmt.cpp
│   │   │   ├── int_to_fp_cast_expr.cpp
│   │   │   ├── int_to_ptr_cast_expr.cpp
│   │   │   ├── int_type.cpp
│   │   │   ├── lt_eq_op_expr.cpp
│   │   │   ├── lt_op_expr.cpp
│   │   │   ├── mod_op_expr.cpp
│   │   │   ├── module.cpp
│   │   │   ├── mul_op_expr.cpp
│   │   │   ├── neg_op_expr.cpp
│   │   │   ├── neq_op_expr.cpp
│   │   │   ├── not_op_expr.cpp
│   │   │   ├── or_op_expr.cpp
│   │   │   ├── pointer_type.cpp
│   │   │   ├── ptr_to_int_cast_expr.cpp
│   │   │   ├── return_stmt.cpp
│   │   │   ├── statement.cpp
│   │   │   ├── string_type.cpp
│   │   │   ├── struct_index_op_expr.cpp
│   │   │   ├── struct_type.cpp
│   │   │   ├── sub_op_expr.cpp
│   │   │   ├── switch_stmt.cpp
│   │   │   ├── ternary_op_expr.cpp
│   │   │   ├── trunc_cast_expr.cpp
│   │   │   ├── ufor_loop_stmt.cpp
│   │   │   ├── unary_op_expr.cpp
│   │   │   ├── unknown_type.cpp
│   │   │   ├── unreachable_stmt.cpp
│   │   │   ├── value.cpp
│   │   │   ├── var_def_stmt.cpp
│   │   │   ├── variable.cpp
│   │   │   ├── void_type.cpp
│   │   │   └── while_loop_stmt.cpp
│   │   ├── llvm/
│   │   │   ├── llvm_debug_info_obtainer.cpp
│   │   │   ├── llvm_intrinsic_converter.cpp
│   │   │   ├── llvm_support.cpp
│   │   │   ├── llvmir2bir_converter/
│   │   │   │   ├── basic_block_converter.cpp
│   │   │   │   ├── cfg_node.cpp
│   │   │   │   ├── labels_handler.cpp
│   │   │   │   ├── llvm_constant_converter.cpp
│   │   │   │   ├── llvm_fcmp_converter.cpp
│   │   │   │   ├── llvm_instruction_converter.cpp
│   │   │   │   ├── llvm_type_converter.cpp
│   │   │   │   ├── llvm_value_converter.cpp
│   │   │   │   ├── structure_converter.cpp
│   │   │   │   └── variables_manager.cpp
│   │   │   ├── llvmir2bir_converter.cpp
│   │   │   └── string_conversions.cpp
│   │   ├── llvmir2hll.cpp
│   │   ├── obtainer/
│   │   │   ├── call_info_obtainer.cpp
│   │   │   ├── call_info_obtainers/
│   │   │   │   ├── optim_call_info_obtainer.cpp
│   │   │   │   └── pessim_call_info_obtainer.cpp
│   │   │   ├── calls_in_module_obtainer.cpp
│   │   │   └── calls_obtainer.cpp
│   │   ├── optimizer/
│   │   │   ├── func_optimizer.cpp
│   │   │   ├── optimizer.cpp
│   │   │   ├── optimizer_manager.cpp
│   │   │   └── optimizers/
│   │   │       ├── bit_op_to_log_op_optimizer.cpp
│   │   │       ├── bit_shift_optimizer.cpp
│   │   │       ├── break_continue_return_optimizer.cpp
│   │   │       ├── c_array_arg_optimizer.cpp
│   │   │       ├── c_cast_optimizer.cpp
│   │   │       ├── copy_propagation_optimizer.cpp
│   │   │       ├── dead_code_optimizer.cpp
│   │   │       ├── dead_local_assign_optimizer.cpp
│   │   │       ├── deref_address_optimizer.cpp
│   │   │       ├── deref_to_array_index_optimizer.cpp
│   │   │       ├── empty_array_to_string_optimizer.cpp
│   │   │       ├── empty_stmt_optimizer.cpp
│   │   │       ├── goto_stmt_optimizer.cpp
│   │   │       ├── if_before_loop_optimizer.cpp
│   │   │       ├── if_structure_optimizer.cpp
│   │   │       ├── if_to_switch_optimizer.cpp
│   │   │       ├── llvm_intrinsics_optimizer.cpp
│   │   │       ├── loop_last_continue_optimizer.cpp
│   │   │       ├── no_init_var_def_optimizer.cpp
│   │   │       ├── pre_while_true_loop_conv_optimizer.cpp
│   │   │       ├── remove_all_casts_optimizer.cpp
│   │   │       ├── remove_useless_casts_optimizer.cpp
│   │   │       ├── self_assign_optimizer.cpp
│   │   │       ├── simple_copy_propagation_optimizer.cpp
│   │   │       ├── simplify_arithm_expr/
│   │   │       │   ├── bool_comparison_optimizer.cpp
│   │   │       │   ├── change_order_of_operands_sub_optimizer.cpp
│   │   │       │   ├── const_operator_const_sub_optimizer.cpp
│   │   │       │   ├── equal_operands_sub_optimizer.cpp
│   │   │       │   ├── negation_operator_sub_optimizer.cpp
│   │   │       │   ├── negative_operand_sub_optimizer.cpp
│   │   │       │   ├── one_sub_optimizer.cpp
│   │   │       │   ├── sub_optimizer.cpp
│   │   │       │   ├── ternary_operator_sub_optimizer.cpp
│   │   │       │   ├── three_operands_sub_optimizer.cpp
│   │   │       │   └── zero_sub_optimizer.cpp
│   │   │       ├── simplify_arithm_expr_optimizer.cpp
│   │   │       ├── unused_global_var_optimizer.cpp
│   │   │       ├── var_def_for_loop_optimizer.cpp
│   │   │       ├── var_def_stmt_optimizer.cpp
│   │   │       ├── void_return_optimizer.cpp
│   │   │       ├── while_true_to_for_loop_optimizer.cpp
│   │   │       ├── while_true_to_ufor_loop_optimizer.cpp
│   │   │       └── while_true_to_while_cond_optimizer.cpp
│   │   ├── pattern/
│   │   │   ├── pattern_finder.cpp
│   │   │   ├── pattern_finder_runner.cpp
│   │   │   ├── pattern_finder_runners/
│   │   │   │   ├── cli_pattern_finder_runner.cpp
│   │   │   │   └── no_action_pattern_finder_runner.cpp
│   │   │   ├── pattern_finders/
│   │   │   │   ├── api_call/
│   │   │   │   │   ├── api_call_info.cpp
│   │   │   │   │   ├── api_call_info_seq.cpp
│   │   │   │   │   ├── api_call_info_seq_parser.cpp
│   │   │   │   │   ├── api_call_seq_data.cpp
│   │   │   │   │   ├── api_call_seq_finder.cpp
│   │   │   │   │   └── api_call_seq_finders/
│   │   │   │   │       └── basic_block_api_call_seq_finder.cpp
│   │   │   │   ├── api_call_pattern_finder.cpp
│   │   │   │   └── api_call_seq_pattern_finder.cpp
│   │   │   └── patterns/
│   │   │       └── stmts_pattern.cpp
│   │   ├── retdec-llvmir2hll-config.cmake
│   │   ├── semantics/
│   │   │   └── semantics/
│   │   │       ├── compound_semantics.cpp
│   │   │       ├── compound_semantics_builder.cpp
│   │   │       ├── default_semantics.cpp
│   │   │       ├── doxygen.h
│   │   │       ├── gcc_general_semantics/
│   │   │       │   ├── doxygen.h
│   │   │       │   ├── get_c_header_file_for_func.cpp
│   │   │       │   ├── get_name_of_param.cpp
│   │   │       │   ├── get_name_of_var_storing_result.cpp
│   │   │       │   └── get_symbolic_names_for_param.cpp
│   │   │       ├── gcc_general_semantics.cpp
│   │   │       ├── impl_support/
│   │   │       │   ├── get_c_header_file_for_func.cpp
│   │   │       │   ├── get_name_of_param.cpp
│   │   │       │   ├── get_name_of_var_storing_result.cpp
│   │   │       │   └── get_symbolic_names_for_param.cpp
│   │   │       ├── libc_semantics/
│   │   │       │   ├── doxygen.h
│   │   │       │   ├── func_never_returns.cpp
│   │   │       │   ├── get_c_header_file_for_func.cpp
│   │   │       │   ├── get_name_of_param.cpp
│   │   │       │   ├── get_name_of_var_storing_result.cpp
│   │   │       │   └── get_symbolic_names_for_param.cpp
│   │   │       ├── libc_semantics.cpp
│   │   │       ├── win_api_semantics/
│   │   │       │   ├── doxygen.h
│   │   │       │   ├── func_never_returns.cpp
│   │   │       │   ├── get_c_header_file_for_func.cpp
│   │   │       │   ├── get_name_of_param/
│   │   │       │   │   ├── a.cpp
│   │   │       │   │   ├── b.cpp
│   │   │       │   │   ├── c1.cpp
│   │   │       │   │   ├── c2.cpp
│   │   │       │   │   ├── d.cpp
│   │   │       │   │   ├── e.cpp
│   │   │       │   │   ├── f.cpp
│   │   │       │   │   ├── g1.cpp
│   │   │       │   │   ├── g2.cpp
│   │   │       │   │   ├── h.cpp
│   │   │       │   │   ├── i.cpp
│   │   │       │   │   ├── j.cpp
│   │   │       │   │   ├── k.cpp
│   │   │       │   │   ├── l.cpp
│   │   │       │   │   ├── m.cpp
│   │   │       │   │   ├── n.cpp
│   │   │       │   │   ├── o.cpp
│   │   │       │   │   ├── p.cpp
│   │   │       │   │   ├── q.cpp
│   │   │       │   │   ├── r.cpp
│   │   │       │   │   ├── s.cpp
│   │   │       │   │   ├── t.cpp
│   │   │       │   │   ├── u.cpp
│   │   │       │   │   ├── v.cpp
│   │   │       │   │   ├── w.cpp
│   │   │       │   │   ├── x.cpp
│   │   │       │   │   ├── y.cpp
│   │   │       │   │   └── z.cpp
│   │   │       │   ├── get_name_of_param.cpp
│   │   │       │   ├── get_name_of_var_storing_result.cpp
│   │   │       │   └── get_symbolic_names_for_param.cpp
│   │   │       └── win_api_semantics.cpp
│   │   ├── support/
│   │   │   ├── const_symbol_converter.cpp
│   │   │   ├── expr_types_fixer.cpp
│   │   │   ├── expression_negater.cpp
│   │   │   ├── global_vars_sorter.cpp
│   │   │   ├── headers_for_declared_funcs.cpp
│   │   │   ├── library_funcs_remover.cpp
│   │   │   ├── statements_counter.cpp
│   │   │   ├── struct_types_sorter.cpp
│   │   │   ├── types.cpp
│   │   │   ├── unreachable_code_in_cfg_remover.cpp
│   │   │   ├── valid_state.cpp
│   │   │   ├── value_text_repr_visitor.cpp
│   │   │   ├── variable_replacer.cpp
│   │   │   └── visitors/
│   │   │       └── ordered_all_visitor.cpp
│   │   ├── utils/
│   │   │   ├── graphviz.cpp
│   │   │   ├── ir.cpp
│   │   │   ├── loop_optimizer.cpp
│   │   │   └── string.cpp
│   │   ├── validator/
│   │   │   ├── validator.cpp
│   │   │   └── validators/
│   │   │       ├── break_outside_loop_validator.cpp
│   │   │       ├── no_global_var_def_validator.cpp
│   │   │       └── return_validator.cpp
│   │   ├── var_name_gen/
│   │   │   ├── var_name_gen.cpp
│   │   │   └── var_name_gens/
│   │   │       ├── fruit_var_name_gen.cpp
│   │   │       ├── num_var_name_gen.cpp
│   │   │       └── word_var_name_gen.cpp
│   │   └── var_renamer/
│   │       ├── var_renamer.cpp
│   │       └── var_renamers/
│   │           ├── address_var_renamer.cpp
│   │           ├── hungarian_var_renamer.cpp
│   │           ├── readable_var_renamer.cpp
│   │           ├── simple_var_renamer.cpp
│   │           └── unified_var_renamer.cpp
│   ├── loader/
│   │   ├── CMakeLists.txt
│   │   ├── doxygen.h
│   │   ├── image_factory.cpp
│   │   ├── loader/
│   │   │   ├── coff/
│   │   │   │   └── coff_image.cpp
│   │   │   ├── elf/
│   │   │   │   └── elf_image.cpp
│   │   │   ├── image.cpp
│   │   │   ├── intel_hex/
│   │   │   │   └── intel_hex_image.cpp
│   │   │   ├── macho/
│   │   │   │   └── macho_image.cpp
│   │   │   ├── pe/
│   │   │   │   └── pe_image.cpp
│   │   │   ├── raw_data/
│   │   │   │   └── raw_data_image.cpp
│   │   │   ├── segment.cpp
│   │   │   └── segment_data_source.cpp
│   │   ├── retdec-loader-config.cmake
│   │   └── utils/
│   │       ├── name_generator.cpp
│   │       ├── overlap_resolver.cpp
│   │       └── range.cpp
│   ├── macho-extractor/
│   │   ├── CMakeLists.txt
│   │   ├── break_fat.cpp
│   │   ├── doxygen.h
│   │   └── retdec-macho-extractor-config.cmake
│   ├── macho-extractortool/
│   │   ├── CMakeLists.txt
│   │   └── macho_extractor.cpp
│   ├── pat2yara/
│   │   ├── CMakeLists.txt
│   │   ├── compare.cpp
│   │   ├── compare.h
│   │   ├── logic.cpp
│   │   ├── logic.h
│   │   ├── modifications.cpp
│   │   ├── modifications.h
│   │   ├── pat2yara.cpp
│   │   ├── processing.cpp
│   │   ├── processing.h
│   │   ├── utils.cpp
│   │   └── utils.h
│   ├── patterngen/
│   │   ├── CMakeLists.txt
│   │   ├── doxygen.h
│   │   ├── pattern_extractor/
│   │   │   ├── pattern_extractor.cpp
│   │   │   └── types/
│   │   │       └── symbol_pattern.cpp
│   │   └── retdec-patterngen-config.cmake
│   ├── pdbparser/
│   │   ├── CMakeLists.txt
│   │   ├── doxygen.h
│   │   ├── pdb_file.cpp
│   │   ├── pdb_symbols.cpp
│   │   ├── pdb_types.cpp
│   │   ├── pdb_utils.cpp
│   │   └── retdec-pdbparser-config.cmake
│   ├── pelib/
│   │   ├── BoundImportDirectory.cpp
│   │   ├── CMakeLists.txt
│   │   ├── CoffSymbolTable.cpp
│   │   ├── ComHeaderDirectory.cpp
│   │   ├── ConfigDirectory.cpp
│   │   ├── DebugDirectory.cpp
│   │   ├── ExportDirectory.cpp
│   │   ├── IatDirectory.cpp
│   │   ├── ImageLoader.cpp
│   │   ├── InputBuffer.cpp
│   │   ├── OutputBuffer.cpp
│   │   ├── PeFile.cpp
│   │   ├── PeLibAux.cpp
│   │   ├── RelocationsDirectory.cpp
│   │   ├── ResourceDirectory.cpp
│   │   ├── RichHeader.cpp
│   │   ├── SecurityDirectory.cpp
│   │   └── retdec-pelib-config.cmake
│   ├── retdec/
│   │   ├── CMakeLists.txt
│   │   ├── retdec-retdec-config.cmake
│   │   └── retdec.cpp
│   ├── retdec-decompiler/
│   │   ├── CMakeLists.txt
│   │   ├── decompiler-config.json
│   │   └── retdec-decompiler.cpp
│   ├── retdectool/
│   │   ├── CMakeLists.txt
│   │   └── retdec.cpp
│   ├── rtti-finder/
│   │   ├── CMakeLists.txt
│   │   ├── retdec-rtti-finder-config.cmake
│   │   ├── rtti/
│   │   │   ├── rtti_gcc_parser.cpp
│   │   │   └── rtti_msvc_parser.cpp
│   │   ├── rtti_finder.cpp
│   │   └── vtable/
│   │       └── vtable_finder.cpp
│   ├── serdes/
│   │   ├── CMakeLists.txt
│   │   ├── address.cpp
│   │   ├── architecture.cpp
│   │   ├── basic_block.cpp
│   │   ├── calling_convention.cpp
│   │   ├── class.cpp
│   │   ├── file_format.cpp
│   │   ├── file_type.cpp
│   │   ├── function.cpp
│   │   ├── language.cpp
│   │   ├── object.cpp
│   │   ├── pattern.cpp
│   │   ├── retdec-serdes-config.cmake
│   │   ├── std.cpp
│   │   ├── storage.cpp
│   │   ├── tool_info.cpp
│   │   ├── type.cpp
│   │   └── vtable.cpp
│   ├── stacofin/
│   │   ├── CMakeLists.txt
│   │   ├── doxygen.h
│   │   ├── retdec-stacofin-config.cmake
│   │   └── stacofin.cpp
│   ├── stacofintool/
│   │   ├── CMakeLists.txt
│   │   └── stacofin.cpp
│   ├── unpacker/
│   │   ├── CMakeLists.txt
│   │   ├── decompression/
│   │   │   ├── lzma/
│   │   │   │   └── lzma_data.cpp
│   │   │   ├── lzmat/
│   │   │   │   └── lzmat_data.cpp
│   │   │   └── nrv/
│   │   │       ├── nrv2b_data.cpp
│   │   │       ├── nrv2d_data.cpp
│   │   │       └── nrv2e_data.cpp
│   │   ├── doxygen.h
│   │   ├── retdec-unpacker-config.cmake
│   │   └── signature.cpp
│   ├── unpackertool/
│   │   ├── CMakeLists.txt
│   │   ├── arg_handler.cpp
│   │   ├── arg_handler.h
│   │   ├── doxygen.h
│   │   ├── main.cpp
│   │   ├── plugin_mgr.cpp
│   │   ├── plugin_mgr.h
│   │   ├── plugins/
│   │   │   ├── example/
│   │   │   │   ├── doxygen.h
│   │   │   │   ├── example.cpp
│   │   │   │   └── example.h
│   │   │   ├── mpress/
│   │   │   │   ├── doxygen.h
│   │   │   │   ├── mpress.cpp
│   │   │   │   ├── mpress.h
│   │   │   │   └── mpress_exceptions.h
│   │   │   └── upx/
│   │   │       ├── decompressors/
│   │   │       │   ├── decompressor.cpp
│   │   │       │   ├── decompressor.h
│   │   │       │   ├── decompressor_direct_jump.cpp
│   │   │       │   ├── decompressor_direct_jump.h
│   │   │       │   ├── decompressor_lzma.cpp
│   │   │       │   ├── decompressor_lzma.h
│   │   │       │   ├── decompressor_nrv.cpp
│   │   │       │   ├── decompressor_nrv.h
│   │   │       │   ├── decompressor_scrambler.cpp
│   │   │       │   ├── decompressor_scrambler.h
│   │   │       │   ├── decompressor_upxshit.cpp
│   │   │       │   ├── decompressor_upxshit.h
│   │   │       │   └── decompressors.h
│   │   │       ├── doxygen.h
│   │   │       ├── elf/
│   │   │       │   ├── elf_upx_stub.cpp
│   │   │       │   └── elf_upx_stub.h
│   │   │       ├── macho/
│   │   │       │   ├── macho_upx_stub.cpp
│   │   │       │   └── macho_upx_stub.h
│   │   │       ├── pe/
│   │   │       │   ├── pe_upx_stub.cpp
│   │   │       │   └── pe_upx_stub.h
│   │   │       ├── unfilter.cpp
│   │   │       ├── unfilter.h
│   │   │       ├── upx.cpp
│   │   │       ├── upx.h
│   │   │       ├── upx_exceptions.h
│   │   │       ├── upx_stub.cpp
│   │   │       ├── upx_stub.h
│   │   │       ├── upx_stub_signatures.cpp
│   │   │       └── upx_stub_signatures.h
│   │   ├── retdec-unpackertool-config.cmake
│   │   └── unpacker.cpp
│   ├── utils/
│   │   ├── CMakeLists.txt
│   │   ├── alignment.cpp
│   │   ├── binary_path.cpp
│   │   ├── byte_value_storage.cpp
│   │   ├── conversion.cpp
│   │   ├── crc32.cpp
│   │   ├── doxygen.h
│   │   ├── dynamic_buffer.cpp
│   │   ├── file_io.cpp
│   │   ├── io/
│   │   │   ├── log.cpp
│   │   │   └── logger.cpp
│   │   ├── math.cpp
│   │   ├── memory.cpp
│   │   ├── ord_lookup.cpp
│   │   ├── retdec-utils-config.cmake
│   │   ├── string.cpp
│   │   ├── system.cpp
│   │   ├── time.cpp
│   │   └── version.cpp
│   └── yaracpp/
│       ├── CMakeLists.txt
│       ├── retdec-yaracpp-config.cmake
│       ├── yara_detector.cpp
│       ├── yara_match.cpp
│       ├── yara_meta.cpp
│       └── yara_rule.cpp
├── support/
│   ├── CMakeLists.txt
│   ├── README
│   ├── install-share.py
│   ├── install-yara.py
│   ├── ordinals/
│   │   ├── arm/
│   │   │   ├── addrstor.ord
│   │   │   ├── atlce400.ord
│   │   │   ├── aygshell.ord
│   │   │   ├── bthlink.ord
│   │   │   ├── bthutil.ord
│   │   │   ├── ceddk.ord
│   │   │   ├── cellcore.ord
│   │   │   ├── ceshell.ord
│   │   │   ├── commctrl.ord
│   │   │   ├── coredll.ord
│   │   │   ├── htmlview.ord
│   │   │   ├── imgdecmp.ord
│   │   │   ├── mfcce400.ord
│   │   │   ├── mlang.ord
│   │   │   ├── msgstore.ord
│   │   │   ├── note_prj.ord
│   │   │   ├── olece400.ord
│   │   │   ├── phone.ord
│   │   │   ├── pimstore.ord
│   │   │   ├── pndtapi.ord
│   │   │   ├── pushprxy.ord
│   │   │   ├── ril.ord
│   │   │   ├── sms.ord
│   │   │   ├── tnefutil.ord
│   │   │   ├── webview.ord
│   │   │   ├── wininet.ord
│   │   │   ├── wmlview.ord
│   │   │   └── wsp.ord
│   │   └── x86/
│   │       ├── 1394bus.ord
│   │       ├── 6to4svc.ord
│   │       ├── aaaamon.ord
│   │       ├── acledit.ord
│   │       ├── aclui.ord
│   │       ├── activeds.ord
│   │       ├── actxprxy.ord
│   │       ├── admparse.ord
│   │       ├── adptif.ord
│   │       ├── adsldp.ord
│   │       ├── adsldpc.ord
│   │       ├── adsmsext.ord
│   │       ├── adsnt.ord
│   │       ├── advapi32.ord
│   │       ├── advpack.ord
│   │       ├── aelupsvc.ord
│   │       ├── alrsvc.ord
│   │       ├── apcups.ord
│   │       ├── apidll.ord
│   │       ├── apphelp.ord
│   │       ├── appmgmts.ord
│   │       ├── appmgr.ord
│   │       ├── asfsipc.ord
│   │       ├── asycfilt.ord
│   │       ├── atkctrs.ord
│   │       ├── atl.ord
│   │       ├── atl71.ord
│   │       ├── atl80.ord
│   │       ├── atmpvcno.ord
│   │       ├── audiodev.ord
│   │       ├── audiosrv.ord
│   │       ├── audpci40.ord
│   │       ├── audwin16.ord
│   │       ├── audwin32.ord
│   │       ├── authz.ord
│   │       ├── autodisc.ord
│   │       ├── avicap.ord
│   │       ├── avicap32.ord
│   │       ├── avifil32.ord
│   │       ├── avifile.ord
│   │       ├── aweman.ord
│   │       ├── aweman32.ord
│   │       ├── axaltocm.ord
│   │       ├── azroles.ord
│   │       ├── azroleui.ord
│   │       ├── basecsp.ord
│   │       ├── basesrv.ord
│   │       ├── batmeter.ord
│   │       ├── battc.ord
│   │       ├── bdasup.ord
│   │       ├── bdcalls.ord
│   │       ├── bidispl.ord
│   │       ├── bitsprx2.ord
│   │       ├── bitsprx3.ord
│   │       ├── bivbx30.ord
│   │       ├── blackbox.ord
│   │       ├── browser.ord
│   │       ├── browseui.ord
│   │       ├── browsewm.ord
│   │       ├── bwcc.ord
│   │       ├── bwcc32.ord
│   │       ├── c_eucdb.ord
│   │       ├── c_g18030.ord
│   │       ├── c_is2022.ord
│   │       ├── c_iscii.ord
│   │       ├── c_snadb.ord
│   │       ├── cabinet.ord
│   │       ├── cabview.ord
│   │       ├── calwin16.ord
│   │       ├── calwin32.ord
│   │       ├── camocx.ord
│   │       ├── cards.ord
│   │       ├── catsrv.ord
│   │       ├── catsrvps.ord
│   │       ├── catsrvut.ord
│   │       ├── ccfapi32.ord
│   │       ├── ccfgnt.ord
│   │       ├── cdfview.ord
│   │       ├── cdosys.ord
│   │       ├── certadm.ord
│   │       ├── certcli.ord
│   │       ├── certmgr.ord
│   │       ├── ceutil.ord
│   │       ├── cewmdm.ord
│   │       ├── cfgmgr32.ord
│   │       ├── chsbrkr.ord
│   │       ├── chtbrkr.ord
│   │       ├── ciadmin.ord
│   │       ├── cic.ord
│   │       ├── ciodm.ord
│   │       ├── classpnp.ord
│   │       ├── clb.ord
│   │       ├── clbcatex.ord
│   │       ├── clbcatq.ord
│   │       ├── cliconfg.ord
│   │       ├── clnwin16.ord
│   │       ├── clnwin32.ord
│   │       ├── clnwinth.ord
│   │       ├── clusapi.ord
│   │       ├── clxwin16.ord
│   │       ├── clxwin32.ord
│   │       ├── cmcfg32.ord
│   │       ├── cmdial32.ord
│   │       ├── cmpbk32.ord
│   │       ├── cmsetacl.ord
│   │       ├── cmutil.ord
│   │       ├── cnbjmon.ord
│   │       ├── cnetcfg.ord
│   │       ├── cnvfat.ord
│   │       ├── colbact.ord
│   │       ├── comaddin.ord
│   │       ├── comadmin.ord
│   │       ├── comcat.ord
│   │       ├── comctl32.ord
│   │       ├── comdlg32.ord
│   │       ├── commctrl.ord
│   │       ├── commdlg.ord
│   │       ├── commtb32.ord
│   │       ├── compatui.ord
│   │       ├── compobj.ord
│   │       ├── compstui.ord
│   │       ├── comres.ord
│   │       ├── comsnap.ord
│   │       ├── comsvcs.ord
│   │       ├── comuid.ord
│   │       ├── confmsp.ord
│   │       ├── console.ord
│   │       ├── coredll.ord
│   │       ├── corpol.ord
│   │       ├── credui.ord
│   │       ├── crtdll.ord
│   │       ├── crypt32.ord
│   │       ├── cryptdlg.ord
│   │       ├── cryptdll.ord
│   │       ├── cryptext.ord
│   │       ├── cryptnet.ord
│   │       ├── cryptsvc.ord
│   │       ├── cryptui.ord
│   │       ├── cscdll.ord
│   │       ├── cscui.ord
│   │       ├── csrsrv.ord
│   │       ├── csseqchk.ord
│   │       ├── ctl3d.ord
│   │       ├── ctl3d32.ord
│   │       ├── ctl3dv2.ord
│   │       ├── cufat.ord
│   │       ├── cw3220.ord
│   │       ├── cw3220mt.ord
│   │       ├── cw3230.ord
│   │       ├── cw3230mt.ord
│   │       ├── d3d8.ord
│   │       ├── d3d8thk.ord
│   │       ├── d3d9.ord
│   │       ├── d3dhalf.ord
│   │       ├── d3dim.ord
│   │       ├── d3dim700.ord
│   │       ├── d3dpmesh.ord
│   │       ├── d3dramp.ord
│   │       ├── d3drampf.ord
│   │       ├── d3drg16f.ord
│   │       ├── d3drg24f.ord
│   │       ├── d3drg32f.ord
│   │       ├── d3drg8f.ord
│   │       ├── d3drgbf.ord
│   │       ├── d3drm.ord
│   │       ├── d3drm16f.ord
│   │       ├── d3drm24f.ord
│   │       ├── d3drm32f.ord
│   │       ├── d3drm8f.ord
│   │       ├── d3dx8d.ord
│   │       ├── d3dxof.ord
│   │       ├── danim.ord
│   │       ├── dataclen.ord
│   │       ├── datime.ord
│   │       ├── davclnt.ord
│   │       ├── dbclient.ord
│   │       ├── dbgeng.ord
│   │       ├── dbghelp.ord
│   │       ├── dbmsrpcn.ord
│   │       ├── dbnetlib.ord
│   │       ├── dbnmpntw.ord
│   │       ├── dciman32.ord
│   │       ├── ddeml.ord
│   │       ├── ddraw.ord
│   │       ├── ddrawex.ord
│   │       ├── deskadp.ord
│   │       ├── deskmon.ord
│   │       ├── deskperf.ord
│   │       ├── devmgr.ord
│   │       ├── dflayout.ord
│   │       ├── dfshim.ord
│   │       ├── dfsshlex.ord
│   │       ├── dgnet.ord
│   │       ├── dhcpcsvc.ord
│   │       ├── dhcpmon.ord
│   │       ├── dhcpsapi.ord
│   │       ├── diactfrm.ord
│   │       ├── dibeng.ord
│   │       ├── digest.ord
│   │       ├── digsig.ord
│   │       ├── dimap.ord
│   │       ├── dimsntfy.ord
│   │       ├── dimsroam.ord
│   │       ├── dinput.ord
│   │       ├── dinput8.ord
│   │       ├── diskcopy.ord
│   │       ├── dispex.ord
│   │       ├── dlcapi.ord
│   │       ├── dmband.ord
│   │       ├── dmcompos.ord
│   │       ├── dmime.ord
│   │       ├── dmloader.ord
│   │       ├── dmocx.ord
│   │       ├── dmscript.ord
│   │       ├── dmstyle.ord
│   │       ├── dmsynth.ord
│   │       ├── dmusic.ord
│   │       ├── dnsapi.ord
│   │       ├── dnsperf.ord
│   │       ├── dnsrslvr.ord
│   │       ├── docobj.ord
│   │       ├── docprop.ord
│   │       ├── docprop2.ord
│   │       ├── dplay.ord
│   │       ├── dplayx.ord
│   │       ├── dpmodemx.ord
│   │       ├── dpnaddr.ord
│   │       ├── dpnet.ord
│   │       ├── dpnhpast.ord
│   │       ├── dpnhupnp.ord
│   │       ├── dpnlobby.ord
│   │       ├── dpserial.ord
│   │       ├── dpvacm.ord
│   │       ├── dpvoice.ord
│   │       ├── dpvvox.ord
│   │       ├── dpwsock.ord
│   │       ├── dpwsockx.ord
│   │       ├── drmclien.ord
│   │       ├── drmk.ord
│   │       ├── drmstor.ord
│   │       ├── drmv2clt.ord
│   │       ├── drprov.ord
│   │       ├── ds32gt.ord
│   │       ├── dsauth.ord
│   │       ├── dsdmo.ord
│   │       ├── dsdmoprp.ord
│   │       ├── dsetup.ord
│   │       ├── dskquota.ord
│   │       ├── dskquoui.ord
│   │       ├── dsound.ord
│   │       ├── dsound3d.ord
│   │       ├── dsprop.ord
│   │       ├── dsquery.ord
│   │       ├── dssec.ord
│   │       ├── dssenh.ord
│   │       ├── dsuiext.ord
│   │       ├── dswave.ord
│   │       ├── duser.ord
│   │       ├── dx7vb.ord
│   │       ├── dx8vb.ord
│   │       ├── dxapi.ord
│   │       ├── dxtmsft.ord
│   │       ├── dxtrans.ord
│   │       ├── edb500.ord
│   │       ├── efsadu.ord
│   │       ├── els.ord
│   │       ├── encapi.ord
│   │       ├── ep100dg.ord
│   │       ├── epro100.ord
│   │       ├── es.ord
│   │       ├── esent.ord
│   │       ├── esent97.ord
│   │       ├── esentprf.ord
│   │       ├── eventlog.ord
│   │       ├── expsrv.ord
│   │       ├── exsec32.ord
│   │       ├── extmgr.ord
│   │       ├── f3ahvoas.ord
│   │       ├── faultrep.ord
│   │       ├── fde.ord
│   │       ├── fdeploy.ord
│   │       ├── feclient.ord
│   │       ├── filemgmt.ord
│   │       ├── fldrclnr.ord
│   │       ├── fltlib.ord
│   │       ├── fmifs.ord
│   │       ├── fontext.ord
│   │       ├── fontsub.ord
│   │       ├── framedyd.ord
│   │       ├── framedyn.ord
│   │       ├── fsusd.ord
│   │       ├── ftlx041e.ord
│   │       ├── ftsrch.ord
│   │       ├── fwcfg.ord
│   │       ├── gcdef.ord
│   │       ├── gdi.ord
│   │       ├── gdi32.ord
│   │       ├── gdiplus.ord
│   │       ├── getuname.ord
│   │       ├── glmf32.ord
│   │       ├── glu32.ord
│   │       ├── gpedit.ord
│   │       ├── gpkcsp.ord
│   │       ├── gptext.ord
│   │       ├── grabber.ord
│   │       ├── gswag32.ord
│   │       ├── gswdll32.ord
│   │       ├── h323msp.ord
│   │       ├── hal.ord
│   │       ├── hbaapi.ord
│   │       ├── hcaport.ord
│   │       ├── hhsetup.ord
│   │       ├── hid.ord
│   │       ├── hidclass.ord
│   │       ├── hidparse.ord
│   │       ├── hidserv.ord
│   │       ├── hlink.ord
│   │       ├── hlinkprx.ord
│   │       ├── hnetcfg.ord
│   │       ├── hnetmon.ord
│   │       ├── hpmon.ord
│   │       ├── hpscan32.ord
│   │       ├── hticons.ord
│   │       ├── httpapi.ord
│   │       ├── htui.ord
│   │       ├── hypertrm.ord
│   │       ├── iasacct.ord
│   │       ├── iasads.ord
│   │       ├── iashlpr.ord
│   │       ├── iasnap.ord
│   │       ├── iaspolcy.ord
│   │       ├── iasrad.ord
│   │       ├── iasrecst.ord
│   │       ├── iassam.ord
│   │       ├── iassdo.ord
│   │       ├── iassvcs.ord
│   │       ├── iccvid.ord
│   │       ├── icfgnt5.ord
│   │       ├── icm32.ord
│   │       ├── icmapi16.ord
│   │       ├── icmp.ord
│   │       ├── icmui.ord
│   │       ├── icwdial.ord
│   │       ├── icwphbk.ord
│   │       ├── idq.ord
│   │       ├── iduninst.ord
│   │       ├── ieakeng.ord
│   │       ├── ieaksie.ord
│   │       ├── iedkcs32.ord
│   │       ├── iepeers.ord
│   │       ├── iernonce.ord
│   │       ├── iesetup.ord
│   │       ├── ifmon.ord
│   │       ├── ifsutil.ord
│   │       ├── ifxcardm.ord
│   │       ├── igmpagnt.ord
│   │       ├── ils.ord
│   │       ├── imagehlp.ord
│   │       ├── imeshare.ord
│   │       ├── imgutil.ord
│   │       ├── imjp81k.ord
│   │       ├── imm32.ord
│   │       ├── inetcfg.ord
│   │       ├── inetcomm.ord
│   │       ├── inetmib1.ord
│   │       ├── inetpp.ord
│   │       ├── inetppui.ord
│   │       ├── infosoft.ord
│   │       ├── initpki.ord
│   │       ├── input.ord
│   │       ├── inseng.ord
│   │       ├── iologmsg.ord
│   │       ├── iphlpapi.ord
│   │       ├── ipmontr.ord
│   │       ├── ipnathlp.ord
│   │       ├── ippromon.ord
│   │       ├── iprop.ord
│   │       ├── iprtprio.ord
│   │       ├── iprtrmgr.ord
│   │       ├── ipsecsnp.ord
│   │       ├── ipsecsvc.ord
│   │       ├── ipsmsnap.ord
│   │       ├── ipv6mon.ord
│   │       ├── ipxcfg.ord
│   │       ├── ipxsap.ord
│   │       ├── ir32_32.ord
│   │       ├── isign32.ord
│   │       ├── itircl.ord
│   │       ├── itss.ord
│   │       ├── iuctl.ord
│   │       ├── iuengine.ord
│   │       ├── ixsso.ord
│   │       ├── iyuv_32.ord
│   │       ├── jet500.ord
│   │       ├── jobexec.ord
│   │       ├── jpeg1x32.ord
│   │       ├── jpeg2x32.ord
│   │       ├── jscript.ord
│   │       ├── jsproxy.ord
│   │       ├── kbd101.ord
│   │       ├── kbd101a.ord
│   │       ├── kbd101b.ord
│   │       ├── kbd101c.ord
│   │       ├── kbd103.ord
│   │       ├── kbd106.ord
│   │       ├── kbd106n.ord
│   │       ├── kbda1.ord
│   │       ├── kbda2.ord
│   │       ├── kbda3.ord
│   │       ├── kbdal.ord
│   │       ├── kbdarme.ord
│   │       ├── kbdarmw.ord
│   │       ├── kbdax2.ord
│   │       ├── kbdaze.ord
│   │       ├── kbdazel.ord
│   │       ├── kbdbe.ord
│   │       ├── kbdbene.ord
│   │       ├── kbdblr.ord
│   │       ├── kbdbr.ord
│   │       ├── kbdbu.ord
│   │       ├── kbdca.ord
│   │       ├── kbdcan.ord
│   │       ├── kbdcr.ord
│   │       ├── kbdcz.ord
│   │       ├── kbdcz1.ord
│   │       ├── kbdcz2.ord
│   │       ├── kbdda.ord
│   │       ├── kbddiv1.ord
│   │       ├── kbddiv2.ord
│   │       ├── kbddll.ord
│   │       ├── kbddv.ord
│   │       ├── kbdes.ord
│   │       ├── kbdest.ord
│   │       ├── kbdfa.ord
│   │       ├── kbdfc.ord
│   │       ├── kbdfi.ord
│   │       ├── kbdfo.ord
│   │       ├── kbdfr.ord
│   │       ├── kbdgae.ord
│   │       ├── kbdgeo.ord
│   │       ├── kbdgkl.ord
│   │       ├── kbdgr.ord
│   │       ├── kbdgr1.ord
│   │       ├── kbdhe.ord
│   │       ├── kbdhe220.ord
│   │       ├── kbdhe319.ord
│   │       ├── kbdheb.ord
│   │       ├── kbdhela2.ord
│   │       ├── kbdhela3.ord
│   │       ├── kbdhept.ord
│   │       ├── kbdhu.ord
│   │       ├── kbdhu1.ord
│   │       ├── kbdibm02.ord
│   │       ├── kbdic.ord
│   │       ├── kbdindev.ord
│   │       ├── kbdinguj.ord
│   │       ├── kbdinhin.ord
│   │       ├── kbdinkan.ord
│   │       ├── kbdinmar.ord
│   │       ├── kbdinpun.ord
│   │       ├── kbdintam.ord
│   │       ├── kbdintel.ord
│   │       ├── kbdir.ord
│   │       ├── kbdit.ord
│   │       ├── kbdit142.ord
│   │       ├── kbdjpn.ord
│   │       ├── kbdkaz.ord
│   │       ├── kbdkor.ord
│   │       ├── kbdkyr.ord
│   │       ├── kbdla.ord
│   │       ├── kbdlk41a.ord
│   │       ├── kbdlk41j.ord
│   │       ├── kbdlt.ord
│   │       ├── kbdlt1.ord
│   │       ├── kbdlv.ord
│   │       ├── kbdlv1.ord
│   │       ├── kbdmac.ord
│   │       ├── kbdmon.ord
│   │       ├── kbdne.ord
│   │       ├── kbdnec.ord
│   │       ├── kbdnec95.ord
│   │       ├── kbdnecat.ord
│   │       ├── kbdnecnt.ord
│   │       ├── kbdno.ord
│   │       ├── kbdpl.ord
│   │       ├── kbdpl1.ord
│   │       ├── kbdpo.ord
│   │       ├── kbdro.ord
│   │       ├── kbdru.ord
│   │       ├── kbdru1.ord
│   │       ├── kbdsf.ord
│   │       ├── kbdsg.ord
│   │       ├── kbdsl.ord
│   │       ├── kbdsl1.ord
│   │       ├── kbdsp.ord
│   │       ├── kbdsw.ord
│   │       ├── kbdsyr1.ord
│   │       ├── kbdsyr2.ord
│   │       ├── kbdtat.ord
│   │       ├── kbdth0.ord
│   │       ├── kbdth1.ord
│   │       ├── kbdth2.ord
│   │       ├── kbdth3.ord
│   │       ├── kbdtuf.ord
│   │       ├── kbdtuq.ord
│   │       ├── kbduk.ord
│   │       ├── kbdur.ord
│   │       ├── kbdurdu.ord
│   │       ├── kbdus.ord
│   │       ├── kbdusa.ord
│   │       ├── kbdusl.ord
│   │       ├── kbdusr.ord
│   │       ├── kbdusx.ord
│   │       ├── kbduzb.ord
│   │       ├── kbdvntc.ord
│   │       ├── kbdycc.ord
│   │       ├── kbdycl.ord
│   │       ├── kerberos.ord
│   │       ├── kernel.ord
│   │       ├── kernel32.ord
│   │       ├── keyboard.ord
│   │       ├── keymgr.ord
│   │       ├── korwbrkr.ord
│   │       ├── ks.ord
│   │       ├── ksecdd.ord
│   │       ├── ksproxy.ax.ord
│   │       ├── ksuser.ord
│   │       ├── langwrbk.ord
│   │       ├── laprxy.ord
│   │       ├── licmgr10.ord
│   │       ├── linkinfo.ord
│   │       ├── llsrpc.ord
│   │       ├── lmhsvc.ord
│   │       ├── lmrt.ord
│   │       ├── loadperf.ord
│   │       ├── localmon.ord
│   │       ├── localsec.ord
│   │       ├── localspl.ord
│   │       ├── localui.ord
│   │       ├── locwin16.ord
│   │       ├── locwin32.ord
│   │       ├── loghours.ord
│   │       ├── logonsrv.ord
│   │       ├── lpk.ord
│   │       ├── lprhelp.ord
│   │       ├── lprmonui.ord
│   │       ├── lsapi16.ord
│   │       ├── lsasrv.ord
│   │       ├── lvcodek.ord
│   │       ├── lz32.ord
│   │       ├── lzexpand.ord
│   │       ├── mag_hook.ord
│   │       ├── mapi.ord
│   │       ├── mapi32.ord
│   │       ├── mapistub.ord
│   │       ├── mcastmib.ord
│   │       ├── mcd.ord
│   │       ├── mcd32.ord
│   │       ├── mcdsrv32.ord
│   │       ├── mchgrcoi.ord
│   │       ├── mciavi32.ord
│   │       ├── mcicda.ord
│   │       ├── mciole16.ord
│   │       ├── mciole32.ord
│   │       ├── mciseq.ord
│   │       ├── mciwave.ord
│   │       ├── mdgncdet.ord
│   │       ├── mdhcp.ord
│   │       ├── mdminst.ord
│   │       ├── mdt2fw95.ord
│   │       ├── mf3216.ord
│   │       ├── mfc100.ord
│   │       ├── mfc100d.ord
│   │       ├── mfc100u.ord
│   │       ├── mfc100ud.ord
│   │       ├── mfc110.ord
│   │       ├── mfc110d.ord
│   │       ├── mfc110u.ord
│   │       ├── mfc110ud.ord
│   │       ├── mfc200.ord
│   │       ├── mfc200d.ord
│   │       ├── mfc250.ord
│   │       ├── mfc250d.ord
│   │       ├── mfc30.ord
│   │       ├── mfc30u.ord
│   │       ├── mfc40.ord
│   │       ├── mfc40d.ord
│   │       ├── mfc40u.ord
│   │       ├── mfc40ud.ord
│   │       ├── mfc42.ord
│   │       ├── mfc42d.ord
│   │       ├── mfc42u.ord
│   │       ├── mfc42ud.ord
│   │       ├── mfc70.ord
│   │       ├── mfc70u.ord
│   │       ├── mfc71.ord
│   │       ├── mfc71d.ord
│   │       ├── mfc71u.ord
│   │       ├── mfc71ud.ord
│   │       ├── mfc80.ord
│   │       ├── mfc80d.ord
│   │       ├── mfc80u.ord
│   │       ├── mfc80ud.ord
│   │       ├── mfc90.ord
│   │       ├── mfc90d.ord
│   │       ├── mfc90u.ord
│   │       ├── mfc90ud.ord
│   │       ├── mfcans32.ord
│   │       ├── mfcapwz.ord
│   │       ├── mfcd250.ord
│   │       ├── mfcd250d.ord
│   │       ├── mfcd30.ord
│   │       ├── mfcd40d.ord
│   │       ├── mfcd40ud.ord
│   │       ├── mfcd42d.ord
│   │       ├── mfcd42ud.ord
│   │       ├── mfcm100.ord
│   │       ├── mfcm100d.ord
│   │       ├── mfcm100u.ord
│   │       ├── mfcm100ud.ord
│   │       ├── mfcm110.ord
│   │       ├── mfcm110d.ord
│   │       ├── mfcm110u.ord
│   │       ├── mfcm110ud.ord
│   │       ├── mfcm80.ord
│   │       ├── mfcm80d.ord
│   │       ├── mfcm80u.ord
│   │       ├── mfcm80ud.ord
│   │       ├── mfcm90.ord
│   │       ├── mfcm90d.ord
│   │       ├── mfcm90u.ord
│   │       ├── mfcm90ud.ord
│   │       ├── mfcn30.ord
│   │       ├── mfcn30u.ord
│   │       ├── mfcn40d.ord
│   │       ├── mfcn40ud.ord
│   │       ├── mfcn42d.ord
│   │       ├── mfcn42ud.ord
│   │       ├── mfco250.ord
│   │       ├── mfco250d.ord
│   │       ├── mfco30.ord
│   │       ├── mfco30u.ord
│   │       ├── mfco40d.ord
│   │       ├── mfco40ud.ord
│   │       ├── mfco42d.ord
│   │       ├── mfco42ud.ord
│   │       ├── mfcsubs.ord
│   │       ├── mgmtapi.ord
│   │       ├── midimap.ord
│   │       ├── miglibnt.ord
│   │       ├── mimefilt.ord
│   │       ├── mlang.ord
│   │       ├── mll_hp.ord
│   │       ├── mll_mtf.ord
│   │       ├── mll_qic.ord
│   │       ├── mmcbase.ord
│   │       ├── mmcndmgr.ord
│   │       ├── mmcshext.ord
│   │       ├── mmdrv.ord
│   │       ├── mmfutil.ord
│   │       ├── mmsys.ord
│   │       ├── mmsystem.ord
│   │       ├── mmutilse.ord
│   │       ├── mobsync.ord
│   │       ├── modemui.ord
│   │       ├── moricons.ord
│   │       ├── mp43dmod.ord
│   │       ├── mp4sdmod.ord
│   │       ├── mpg4dmod.ord
│   │       ├── mpr.ord
│   │       ├── mprapi.ord
│   │       ├── mprddm.ord
│   │       ├── mprdim.ord
│   │       ├── mprmsg.ord
│   │       ├── mprsnap.ord
│   │       ├── mprui.ord
│   │       ├── mqad.ord
│   │       ├── mqdscli.ord
│   │       ├── mqoa.ord
│   │       ├── mqperf.ord
│   │       ├── mqrt.ord
│   │       ├── mqsec.ord
│   │       ├── mqutil.ord
│   │       ├── msaatext.ord
│   │       ├── msacm.ord
│   │       ├── msacm32.ord
│   │       ├── msafd.ord
│   │       ├── msapsspc.ord
│   │       ├── msasn1.ord
│   │       ├── mscat32.ord
│   │       ├── mscms.ord
│   │       ├── msconf.ord
│   │       ├── mscoree.ord
│   │       ├── mscories.ord
│   │       ├── mscpxl32.ord
│   │       ├── msctf.ord
│   │       ├── msctfp.ord
│   │       ├── msdadiag.ord
│   │       ├── msdart.ord
│   │       ├── msdmo.ord
│   │       ├── msdtcprx.ord
│   │       ├── msdtcuiu.ord
│   │       ├── msexch40.ord
│   │       ├── msexcl40.ord
│   │       ├── msfrt40.ord
│   │       ├── msftedit.ord
│   │       ├── msgina.ord
│   │       ├── msgstrpc.ord
│   │       ├── msgsvc.ord
│   │       ├── mshtml.ord
│   │       ├── mshtmled.ord
│   │       ├── msi.ord
│   │       ├── msident.ord
│   │       ├── msidle.ord
│   │       ├── msieftp.ord
│   │       ├── msihnd.ord
│   │       ├── msimg32.ord
│   │       ├── msimrt.ord
│   │       ├── msimrt16.ord
│   │       ├── msimrt32.ord
│   │       ├── msimtf.ord
│   │       ├── msimusic.ord
│   │       ├── msir3jp.ord
│   │       ├── msisip.ord
│   │       ├── msjet35.ord
│   │       ├── msjet40.ord
│   │       ├── msjetoledb40.ord
│   │       ├── msjint32.ord
│   │       ├── msjint35.ord
│   │       ├── msjint40.ord
│   │       ├── msjter32.ord
│   │       ├── msjter35.ord
│   │       ├── msjter40.ord
│   │       ├── msjtes40.ord
│   │       ├── mslbui.ord
│   │       ├── msls31.ord
│   │       ├── msltus40.ord
│   │       ├── msncdet.ord
│   │       ├── msnetobj.ord
│   │       ├── msnsspc.ord
│   │       ├── mso97v.ord
│   │       ├── msoeacct.ord
│   │       ├── msoert2.ord
│   │       ├── msorcl32.ord
│   │       ├── msorfs.ord
│   │       ├── msoss.ord
│   │       ├── mspatcha.ord
│   │       ├── mspbde40.ord
│   │       ├── mspdb60.ord
│   │       ├── mspmsnsv.ord
│   │       ├── mspmsp.ord
│   │       ├── msports.ord
│   │       ├── msprivs.ord
│   │       ├── msr2c.ord
│   │       ├── msrating.ord
│   │       ├── msrclr40.ord
│   │       ├── msrd2x32.ord
│   │       ├── msrd2x35.ord
│   │       ├── msrd2x40.ord
│   │       ├── msrd3x40.ord
│   │       ├── msrdo20.ord
│   │       ├── msrepl40.ord
│   │       ├── msrle32.ord
│   │       ├── mssap.ord
│   │       ├── msscp.ord
│   │       ├── mssign32.ord
│   │       ├── mssip32.ord
│   │       ├── msstdfmt.ord
│   │       ├── msstkprp.ord
│   │       ├── msswch.ord
│   │       ├── mstask.ord
│   │       ├── mstext40.ord
│   │       ├── mstime.ord
│   │       ├── mstlsapi.ord
│   │       ├── mstscax.ord
│   │       ├── msutb.ord
│   │       ├── msv1_0.ord
│   │       ├── msvbvm50.ord
│   │       ├── msvbvm60.ord
│   │       ├── msvci70.ord
│   │       ├── msvcirt.ord
│   │       ├── msvcp100.ord
│   │       ├── msvcp100d.ord
│   │       ├── msvcp110.ord
│   │       ├── msvcp110d.ord
│   │       ├── msvcp50.ord
│   │       ├── msvcp60.ord
│   │       ├── msvcp70.ord
│   │       ├── msvcp71.ord
│   │       ├── msvcp80.ord
│   │       ├── msvcp90.ord
│   │       ├── msvcp90d.ord
│   │       ├── msvcr100.ord
│   │       ├── msvcr100d.ord
│   │       ├── msvcr110.ord
│   │       ├── msvcr110d.ord
│   │       ├── msvcr70.ord
│   │       ├── msvcr71.ord
│   │       ├── msvcr80.ord
│   │       ├── msvcr90.ord
│   │       ├── msvcr90d.ord
│   │       ├── msvcrt.ord
│   │       ├── msvcrt10.ord
│   │       ├── msvcrt20.ord
│   │       ├── msvcrt40.ord
│   │       ├── msvcrtd.ord
│   │       ├── msvfw32.ord
│   │       ├── msvidc32.ord
│   │       ├── msvidctl.ord
│   │       ├── msvideo.ord
│   │       ├── msw3prt.ord
│   │       ├── mswdat10.ord
│   │       ├── mswebdvd.ord
│   │       ├── mswmdm.ord
│   │       ├── mswsock.ord
│   │       ├── mswstr10.ord
│   │       ├── msxbde40.ord
│   │       ├── msxml.ord
│   │       ├── msxml2.ord
│   │       ├── msxml3.ord
│   │       ├── msyuv.ord
│   │       ├── mtxclu.ord
│   │       ├── mtxdm.ord
│   │       ├── mtxex.ord
│   │       ├── mtxlegih.ord
│   │       ├── mtxoci.ord
│   │       ├── muweb.ord
│   │       ├── mycomput.ord
│   │       ├── mydocs.ord
│   │       ├── narrhook.ord
│   │       ├── ncobjapi.ord
│   │       ├── ncpwin16.ord
│   │       ├── ncpwin32.ord
│   │       ├── nddeapi.ord
│   │       ├── nddenb.ord
│   │       ├── nddenb32.ord
│   │       ├── ndis.ord
│   │       ├── ndrd.ord
│   │       ├── netapi.ord
│   │       ├── netapi32.ord
│   │       ├── netbios.ord
│   │       ├── netcfg.ord
│   │       ├── netcfgx.ord
│   │       ├── netdi.ord
│   │       ├── netdtect.ord
│   │       ├── netevent.ord
│   │       ├── netflex.ord
│   │       ├── netfxperf.ord
│   │       ├── neth.ord
│   │       ├── netid.ord
│   │       ├── netlogon.ord
│   │       ├── netman.ord
│   │       ├── netmsg.ord
│   │       ├── netobjs.ord
│   │       ├── netos.ord
│   │       ├── netplwiz.ord
│   │       ├── netrap.ord
│   │       ├── netsetup.ord
│   │       ├── netshell.ord
│   │       ├── netsub.ord
│   │       ├── netui0.ord
│   │       ├── netui1.ord
│   │       ├── netui2.ord
│   │       ├── netwin16.ord
│   │       ├── netwin32.ord
│   │       ├── newdev.ord
│   │       ├── nia35det.ord
│   │       ├── nibcdet.ord
│   │       ├── nlhtml.ord
│   │       ├── nls32.ord
│   │       ├── nlsapi.ord
│   │       ├── nlsapi32.ord
│   │       ├── nmapi.ord
│   │       ├── nmmkcert.ord
│   │       ├── nmocod.ord
│   │       ├── nmsckn.ord
│   │       ├── nmsupp.ord
│   │       ├── nmw3vwn.ord
│   │       ├── npptools.ord
│   │       ├── nshipsec.ord
│   │       ├── ntctl3d.ord
│   │       ├── ntdll.ord
│   │       ├── ntdsa.ord
│   │       ├── ntdsapi.ord
│   │       ├── ntdsatq.ord
│   │       ├── ntdsbcli.ord
│   │       ├── ntdsetup.ord
│   │       ├── ntfrsapi.ord
│   │       ├── ntlanman.ord
│   │       ├── ntlanui.ord
│   │       ├── ntlanui2.ord
│   │       ├── ntlmssps.ord
│   │       ├── ntlsapi.ord
│   │       ├── ntmarta.ord
│   │       ├── ntmsapi.ord
│   │       ├── ntoskrnl.exe.ord
│   │       ├── ntoskrnl.ord
│   │       ├── ntprint.ord
│   │       ├── ntsdexts.ord
│   │       ├── ntshrui.ord
│   │       ├── ntvdm.exe.ord
│   │       ├── ntvdm64.ord
│   │       ├── nwapp16.ord
│   │       ├── nwappw95.ord
│   │       ├── nwappwnt.ord
│   │       ├── nwcfg.ord
│   │       ├── nwipxspx.ord
│   │       ├── nwmon.ord
│   │       ├── nwprint.ord
│   │       ├── nwsevent.ord
│   │       ├── nwslib.ord
│   │       ├── oakley.ord
│   │       ├── objsel.ord
│   │       ├── oc30.ord
│   │       ├── occache.ord
│   │       ├── ocmanage.ord
│   │       ├── odbc16gt.ord
│   │       ├── odbc32.ord
│   │       ├── odbc32gt.ord
│   │       ├── odbcbcp.ord
│   │       ├── odbcconf.ord
│   │       ├── odbccp32.ord
│   │       ├── odbccr32.ord
│   │       ├── odbccu32.ord
│   │       ├── odbcji32.ord
│   │       ├── odbcjt32.ord
│   │       ├── odbctl32.ord
│   │       ├── odbctrac.ord
│   │       ├── oddbse32.ord
│   │       ├── odexl32.ord
│   │       ├── odfox32.ord
│   │       ├── odpdx32.ord
│   │       ├── odtext32.ord
│   │       ├── offfilt.ord
│   │       ├── oiadm400.ord
│   │       ├── oicom400.ord
│   │       ├── oidis400.ord
│   │       ├── oifil400.ord
│   │       ├── oigfs400.ord
│   │       ├── oiprt400.ord
│   │       ├── oislb400.ord
│   │       ├── oissq400.ord
│   │       ├── oitwa400.ord
│   │       ├── oiui400.ord
│   │       ├── ole2.ord
│   │       ├── ole2conv.ord
│   │       ├── ole2disp.ord
│   │       ├── ole2nls.ord
│   │       ├── ole32.ord
│   │       ├── oleacc.ord
│   │       ├── oleaut32.ord
│   │       ├── olecli.ord
│   │       ├── olecli32.ord
│   │       ├── olecnv32.ord
│   │       ├── oledlg.ord
│   │       ├── oleprn.ord
│   │       ├── olepro32.ord
│   │       ├── olesvr.ord
│   │       ├── olesvr32.ord
│   │       ├── oleswr.ord
│   │       ├── olethk32.ord
│   │       ├── opengl32.ord
│   │       ├── oprghdlr.ord
│   │       ├── osuninst.ord
│   │       ├── outlwab.ord
│   │       ├── panmap.ord
│   │       ├── parser.ord
│   │       ├── passfilt.ord
│   │       ├── pautoenr.ord
│   │       ├── pciidex.ord
│   │       ├── pdh.ord
│   │       ├── penwin.ord
│   │       ├── perfctrs.ord
│   │       ├── perfdisk.ord
│   │       ├── perfnet.ord
│   │       ├── perfos.ord
│   │       ├── perfproc.ord
│   │       ├── perfts.ord
│   │       ├── photowiz.ord
│   │       ├── pid.ord
│   │       ├── pidgen.ord
│   │       ├── pjlmon.ord
│   │       ├── pkiview.ord
│   │       ├── plustab.ord
│   │       ├── pmailext.ord
│   │       ├── pmspl.ord
│   │       ├── pngfilt.ord
│   │       ├── pointer.ord
│   │       ├── polstore.ord
│   │       ├── portcls.ord
│   │       ├── powrprof.ord
│   │       ├── ppcload.ord
│   │       ├── ppuninst.ord
│   │       ├── ppvexp.ord
│   │       ├── prflbmsg.ord
│   │       ├── printui.ord
│   │       ├── profext.ord
│   │       ├── profmap.ord
│   │       ├── prokdd.ord
│   │       ├── propci.ord
│   │       ├── prtwin16.ord
│   │       ├── prtwin32.ord
│   │       ├── psapi.ord
│   │       ├── psbase.ord
│   │       ├── pschdprf.ord
│   │       ├── psnppagn.ord
│   │       ├── pstorec.ord
│   │       ├── pstorsvc.ord
│   │       ├── psxdll.ord
│   │       ├── ptilink.ord
│   │       ├── pubole32.ord
│   │       ├── qasf.ord
│   │       ├── qmgrprxy.ord
│   │       ├── qosname.ord
│   │       ├── quartz.ord
│   │       ├── query.ord
│   │       ├── r81wdet.ord
│   │       ├── rapi.ord
│   │       ├── rasadhlp.ord
│   │       ├── rasapi32.ord
│   │       ├── rasauto.ord
│   │       ├── rascfg.ord
│   │       ├── raschap.ord
│   │       ├── rasctrs.ord
│   │       ├── rasdlg.ord
│   │       ├── rasfil32.ord
│   │       ├── rasman.ord
│   │       ├── rasmans.ord
│   │       ├── rasmontr.ord
│   │       ├── rasmxs.ord
│   │       ├── rasppp.ord
│   │       ├── rasrad.ord
│   │       ├── rassapi.ord
│   │       ├── rasser.ord
│   │       ├── rasshell.ord
│   │       ├── rastapi.ord
│   │       ├── rastls.ord
│   │       ├── rasuser.ord
│   │       ├── rdocurs.ord
│   │       ├── rdpsnd.ord
│   │       ├── regapi.ord
│   │       ├── regsvc.ord
│   │       ├── regwizc.ord
│   │       ├── rend.ord
│   │       ├── resutils.ord
│   │       ├── riched20.ord
│   │       ├── rnr20.ord
│   │       ├── routetab.ord
│   │       ├── rpcdbg.ord
│   │       ├── rpcfilt.ord
│   │       ├── rpcltc1.ord
│   │       ├── rpcltc8.ord
│   │       ├── rpcltccm.ord
│   │       ├── rpclts1.ord
│   │       ├── rpclts3.ord
│   │       ├── rpcltscm.ord
│   │       ├── rpcmqcl.ord
│   │       ├── rpcmqsvr.ord
│   │       ├── rpcns4.ord
│   │       ├── rpcnsh.ord
│   │       ├── rpcrt4.ord
│   │       ├── rsabase.ord
│   │       ├── rsaenh.ord
│   │       ├── rshx32.ord
│   │       ├── rtm.ord
│   │       ├── rtutils.ord
│   │       ├── samlib.ord
│   │       ├── samsrv.ord
│   │       ├── saport.ord
│   │       ├── sbeio.ord
│   │       ├── scarddlg.ord
│   │       ├── sccbase.ord
│   │       ├── sccsccp.ord
│   │       ├── scecli.ord
│   │       ├── scesrv.ord
│   │       ├── schannel.ord
│   │       ├── schedsvc.ord
│   │       ├── sclgntfy.ord
│   │       ├── scp32.ord
│   │       ├── scredir.ord
│   │       ├── scripto.ord
│   │       ├── scriptpw.ord
│   │       ├── scrobj.ord
│   │       ├── scrptutl.ord
│   │       ├── scrrun.ord
│   │       ├── scsiport.ord
│   │       ├── sdpblb.ord
│   │       ├── seclogon.ord
│   │       ├── secsspi.ord
│   │       ├── secur32.ord
│   │       ├── security.ord
│   │       ├── sendcmsg.ord
│   │       ├── sendmail.ord
│   │       ├── sens.ord
│   │       ├── sensapi.ord
│   │       ├── senscfg.ord
│   │       ├── serialui.ord
│   │       ├── servdeps.ord
│   │       ├── serwvdrv.ord
│   │       ├── setupapi.ord
│   │       ├── setupdll.ord
│   │       ├── sfc.ord
│   │       ├── sfc_os.ord
│   │       ├── sfcfiles.ord
│   │       ├── sfmapi.ord
│   │       ├── sfmatcfg.ord
│   │       ├── sfmutil.ord
│   │       ├── shcompui.ord
│   │       ├── shdocvw.ord
│   │       ├── shell.ord
│   │       ├── shell32.ord
│   │       ├── shfolder.ord
│   │       ├── shgina.ord
│   │       ├── shimeng.ord
│   │       ├── shimgvw.ord
│   │       ├── shlwapi.ord
│   │       ├── shmedia.ord
│   │       ├── shscrap.ord
│   │       ├── shsvcs.ord
│   │       ├── sigtab.ord
│   │       ├── sirenacm.ord
│   │       ├── sisbkup.ord
│   │       ├── skdll.ord
│   │       ├── slayerxp.ord
│   │       ├── smclib.ord
│   │       ├── smlogcfg.ord
│   │       ├── snapin32.ord
│   │       ├── sndblst.ord
│   │       ├── sndsys32.ord
│   │       ├── snmpapi.ord
│   │       ├── snmpsnap.ord
│   │       ├── softpub.ord
│   │       ├── sound.ord
│   │       ├── spinbtn.ord
│   │       ├── spoolss.ord
│   │       ├── sporder.ord
│   │       ├── sqlsrv32.ord
│   │       ├── sqlunirl.ord
│   │       ├── sqlwid.ord
│   │       ├── sqlwoa.ord
│   │       ├── srclient.ord
│   │       ├── srvsvc.ord
│   │       ├── ssdpapi.ord
│   │       ├── ssdpsrv.ord
│   │       ├── stboglnt.ord
│   │       ├── stclient.ord
│   │       ├── stdvcl40.ord
│   │       ├── sti.ord
│   │       ├── sti_ci.ord
│   │       ├── stobject.ord
│   │       ├── storage.ord
│   │       ├── storport.ord
│   │       ├── stream.ord
│   │       ├── streamci.ord
│   │       ├── streams.ord
│   │       ├── stress.ord
│   │       ├── strmdll.ord
│   │       ├── strmfilt.ord
│   │       ├── svcpack.ord
│   │       ├── sxs.ord
│   │       ├── synceng.ord
│   │       ├── syncui.ord
│   │       ├── sysinv.ord
│   │       ├── syssetup.ord
│   │       ├── t1instal.ord
│   │       ├── t2embed.ord
│   │       ├── tape.ord
│   │       ├── tapi.ord
│   │       ├── tapi3.ord
│   │       ├── tapi32.ord
│   │       ├── tapiperf.ord
│   │       ├── tapisrv.ord
│   │       ├── tcpcfg.ord
│   │       ├── tcpip.ord
│   │       ├── tcpip6.ord
│   │       ├── tcpmib.ord
│   │       ├── tcpmon.ord
│   │       ├── tcpmonui.ord
│   │       ├── tdi.ord
│   │       ├── termmgr.ord
│   │       ├── thawbrkr.ord
│   │       ├── themeui.ord
│   │       ├── tli_win.ord
│   │       ├── toolhelp.ord
│   │       ├── traffic.ord
│   │       ├── trkwks.ord
│   │       ├── tsappcmp.ord
│   │       ├── tsbyuv.ord
│   │       ├── tsd32.ord
│   │       ├── tsec.ord
│   │       ├── twain_32.ord
│   │       ├── twext.ord
│   │       ├── txflog.ord
│   │       ├── typelib.ord
│   │       ├── udhisapi.ord
│   │       ├── ufat.ord
│   │       ├── uicom.ord
│   │       ├── ulib.ord
│   │       ├── umandlg.ord
│   │       ├── umdmxfrm.ord
│   │       ├── umpnpmgr.ord
│   │       ├── unidrv.ord
│   │       ├── uniime.ord
│   │       ├── unimdmat.ord
│   │       ├── uniplat.ord
│   │       ├── untfs.ord
│   │       ├── upnp.ord
│   │       ├── upnphost.ord
│   │       ├── upnpui.ord
│   │       ├── ureg.ord
│   │       ├── url.ord
│   │       ├── urlmon.ord
│   │       ├── usbcamd.ord
│   │       ├── usbcamd2.ord
│   │       ├── usbd.ord
│   │       ├── usbmon.ord
│   │       ├── user.ord
│   │       ├── user32.ord
│   │       ├── userenv.ord
│   │       ├── usp10.ord
│   │       ├── utildll.ord
│   │       ├── uxtheme.ord
│   │       ├── vb5stkit.ord
│   │       ├── vbajet32.ord
│   │       ├── vbame.ord
│   │       ├── vbar332.ord
│   │       ├── vbscript.ord
│   │       ├── vcdex.ord
│   │       ├── vcfidl32.ord
│   │       ├── vcfiwz32.ord
│   │       ├── vdmdbg.ord
│   │       ├── vdmredir.ord
│   │       ├── vds_ps.ord
│   │       ├── ver.ord
│   │       ├── verifier.ord
│   │       ├── version.ord
│   │       ├── vfpodbc.ord
│   │       ├── videoprt.ord
│   │       ├── vkbd.ord
│   │       ├── vlpt.ord
│   │       ├── vspell32.ord
│   │       ├── vss_ps.ord
│   │       ├── vssapi.ord
│   │       ├── vwipxspx.ord
│   │       ├── w32time.ord
│   │       ├── w32topl.ord
│   │       ├── w3ssl.ord
│   │       ├── w95upgnt.ord
│   │       ├── wangcmn.ord
│   │       ├── wangshl.ord
│   │       ├── wavemsp.ord
│   │       ├── wdfapi.ord
│   │       ├── wdigest.ord
│   │       ├── webcheck.ord
│   │       ├── webclnt.ord
│   │       ├── webhits.ord
│   │       ├── webvw.ord
│   │       ├── wiadefui.ord
│   │       ├── wiadss.ord
│   │       ├── wiarpc.ord
│   │       ├── wiascr.ord
│   │       ├── wiaservc.ord
│   │       ├── wiashext.ord
│   │       ├── wiavideo.ord
│   │       ├── wiavusd.ord
│   │       ├── wifeman.ord
│   │       ├── win32k.ord
│   │       ├── win32s16.ord
│   │       ├── win87em.ord
│   │       ├── winfax.ord
│   │       ├── wininet.ord
│   │       ├── winipsec.ord
│   │       ├── winmem32.ord
│   │       ├── winmm.ord
│   │       ├── winnls.ord
│   │       ├── winntbbu.ord
│   │       ├── winrnr.ord
│   │       ├── winscard.ord
│   │       ├── winshfhc.ord
│   │       ├── winsock.ord
│   │       ├── winspool.drv.ord
│   │       ├── winspool.ord
│   │       ├── winsrv.ord
│   │       ├── winsta.ord
│   │       ├── winstrm.ord
│   │       ├── wintrust.ord
│   │       ├── wkssvc.ord
│   │       ├── wlanmon.ord
│   │       ├── wldap32.ord
│   │       ├── wlsnp.ord
│   │       ├── wlstore.ord
│   │       ├── wmadmod.ord
│   │       ├── wmadmoe.ord
│   │       ├── wmasf.ord
│   │       ├── wmdmlog.ord
│   │       ├── wmdmps.ord
│   │       ├── wmdrmdev.ord
│   │       ├── wmdrmnet.ord
│   │       ├── wmi.ord
│   │       ├── wmidx.ord
│   │       ├── wmilib.ord
│   │       ├── wmiprop.ord
│   │       ├── wmiscmgr.ord
│   │       ├── wmnetmgr.ord
│   │       ├── wmp.ord
│   │       ├── wmpasf.ord
│   │       ├── wmpcd.ord
│   │       ├── wmpcore.ord
│   │       ├── wmpdxm.ord
│   │       ├── wmpencen.ord
│   │       ├── wmpns.ord
│   │       ├── wmpshell.ord
│   │       ├── wmpsrcwp.ord
│   │       ├── wmpui.ord
│   │       ├── wmsdmod.ord
│   │       ├── wmsdmoe2.ord
│   │       ├── wmspdmod.ord
│   │       ├── wmspdmoe.ord
│   │       ├── wmstream.ord
│   │       ├── wmvadvd.ord
│   │       ├── wmvadve.ord
│   │       ├── wmvcore.ord
│   │       ├── wmvdmod.ord
│   │       ├── wmvdmoe2.ord
│   │       ├── wow32.ord
│   │       ├── wowfax.ord
│   │       ├── wowfaxui.ord
│   │       ├── wpd_ci.ord
│   │       ├── wpdsp.ord
│   │       ├── ws2_32.ord
│   │       ├── ws2help.ord
│   │       ├── wsecedit.ord
│   │       ├── wshatm.ord
│   │       ├── wshbth.ord
│   │       ├── wshcon.ord
│   │       ├── wshext.ord
│   │       ├── wship6.ord
│   │       ├── wshisn.ord
│   │       ├── wshisotp.ord
│   │       ├── wshnetbs.ord
│   │       ├── wshqos.ord
│   │       ├── wshrm.ord
│   │       ├── wshtcpip.ord
│   │       ├── wsihk32.ord
│   │       ├── wsiwin32.ord
│   │       ├── wsnmp32.ord
│   │       ├── wsock32.ord
│   │       ├── wsock32n.ord
│   │       ├── wstdecod.ord
│   │       ├── wtsapi32.ord
│   │       ├── wuapi.ord
│   │       ├── wuaueng.ord
│   │       ├── wups.ord
│   │       ├── wups2.ord
│   │       ├── wuweb.ord
│   │       ├── wzcdlg.ord
│   │       ├── wzcsapi.ord
│   │       ├── wzcsvc.ord
│   │       ├── xactsrv.ord
│   │       ├── xenroll.ord
│   │       ├── xfilexr.ord
│   │       ├── xmlprov.ord
│   │       ├── xmlprovi.ord
│   │       ├── xolehlp.ord
│   │       └── zipfldr.ord
│   ├── types/
│   │   ├── arm.json
│   │   ├── cstdlib.json
│   │   ├── linux.json
│   │   ├── windows.json
│   │   └── windrivers.json
│   └── yara_patterns/
│       ├── signsrch/
│       │   ├── signsrch.yara
│       │   └── signsrch_regex.yara
│       └── tools/
│           ├── elf/
│           │   ├── arm/
│           │   │   ├── compilers.yara
│           │   │   └── packers.yara
│           │   ├── arm64/
│           │   │   └── compilers.yara
│           │   ├── mips/
│           │   │   ├── compilers.yara
│           │   │   └── packers.yara
│           │   ├── mips64/
│           │   │   └── compilers.yara
│           │   ├── ppc/
│           │   │   ├── compilers.yara
│           │   │   └── packers.yara
│           │   ├── ppc64/
│           │   │   └── compilers.yara
│           │   ├── x64/
│           │   │   ├── compilers.yara
│           │   │   └── packers.yara
│           │   └── x86/
│           │       ├── compilers.yara
│           │       ├── installers.yara
│           │       └── packers.yara
│           ├── macho/
│           │   ├── arm/
│           │   │   ├── compilers.yara
│           │   │   └── packers.yara
│           │   ├── ppc/
│           │   │   ├── compilers.yara
│           │   │   └── packers.yara
│           │   ├── ppc64/
│           │   │   └── compilers.yara
│           │   ├── x64/
│           │   │   ├── compilers.yara
│           │   │   └── packers.yara
│           │   └── x86/
│           │       ├── compilers.yara
│           │       └── packers.yara
│           └── pe/
│               ├── arm/
│               │   ├── compilers.yara
│               │   └── packers.yara
│               ├── x64/
│               │   ├── compilers.yara
│               │   ├── installers.yara
│               │   └── packers.yara
│               └── x86/
│                   ├── compilers.yara
│                   ├── installers.yara
│                   └── packers.yara
└── tests/
    ├── CMakeLists.txt
    ├── bin2llvmir/
    │   ├── CMakeLists.txt
    │   ├── analyses/
    │   │   └── reaching_definitions_tests.cpp
    │   ├── optimizations/
    │   │   ├── asm_inst_remover/
    │   │   │   └── asm_inst_remover_tests.cpp
    │   │   ├── idioms_libgcc/
    │   │   │   └── idioms_libgcc_tests.cpp
    │   │   ├── inst_opt/
    │   │   │   ├── inst_opt_pass_tests.cpp
    │   │   │   └── inst_opt_tests.cpp
    │   │   ├── param_return/
    │   │   │   └── param_return_tests.cpp
    │   │   ├── stack_pointer_ops/
    │   │   │   └── stack_pointer_ops_tests.cpp
    │   │   ├── unreachable_funcs/
    │   │   │   └── unreachable_funcs_tests.cpp
    │   │   ├── value_protect/
    │   │   │   └── value_protect_test.cpp
    │   │   ├── writer_dsm/
    │   │   │   └── writer_dsm_tests.cpp
    │   │   ├── x86_addr_spaces/
    │   │   │   ├── x86_addr_spaces_pass_test.cpp
    │   │   │   └── x86_addr_spaces_test.cpp
    │   │   └── x87_fpu/
    │   │       └── x87_fpu_test.cpp
    │   ├── providers/
    │   │   ├── asm_instruction_tests.cpp
    │   │   ├── config_tests.cpp
    │   │   ├── debugformat_tests.cpp
    │   │   ├── demangler_tests.cpp
    │   │   ├── fileimage_tests.cpp
    │   │   ├── lti_tests.cpp
    │   │   └── names.cpp
    │   └── utils/
    │       ├── ctypes2llvm_type_tests.cpp
    │       ├── instcombine_tests.cpp
    │       ├── ir_modifier_tests.cpp
    │       ├── llvm_tests.cpp
    │       ├── llvmir_tests.h
    │       └── simplifycfg_tests.cpp
    ├── capstone2llvmir/
    │   ├── CMakeLists.txt
    │   ├── arm64_tests.cpp
    │   ├── arm_tests.cpp
    │   ├── capstone2llvmir_tests.h
    │   ├── mips_tests.cpp
    │   ├── powerpc_tests.cpp
    │   └── x86_tests.cpp
    ├── common/
    │   ├── CMakeLists.txt
    │   ├── address_tests.cpp
    │   ├── architecture_tests.cpp
    │   ├── calling_convention_tests.cpp
    │   ├── class_tests.cpp
    │   ├── file_format_tests.cpp
    │   ├── file_type_tests.cpp
    │   ├── function_tests.cpp
    │   ├── language_tests.cpp
    │   ├── object_tests.cpp
    │   ├── patterns_tests.cpp
    │   ├── range_tests.cpp
    │   ├── tool_info_tests.cpp
    │   └── type_tests.cpp
    ├── config/
    │   ├── CMakeLists.txt
    │   ├── config_tests.cpp
    │   └── doxygen.h
    ├── ctypes/
    │   ├── CMakeLists.txt
    │   ├── annotation_in_tests.cpp
    │   ├── annotation_inout_tests.cpp
    │   ├── annotation_optional_tests.cpp
    │   ├── annotation_out_tests.cpp
    │   ├── array_type_tests.cpp
    │   ├── call_convention_tests.cpp
    │   ├── composite_type_tests.cpp
    │   ├── context_tests.cpp
    │   ├── doxygen.h
    │   ├── enum_type_tests.cpp
    │   ├── floating_point_type_tests.cpp
    │   ├── function_declaration_tests.cpp
    │   ├── function_tests.cpp
    │   ├── function_type_tests.cpp
    │   ├── header_file_tests.cpp
    │   ├── integral_type_tests.cpp
    │   ├── member_tests.cpp
    │   ├── module_tests.cpp
    │   ├── parameter_tests.cpp
    │   ├── pointer_type.cpp
    │   ├── struct_type_tests.cpp
    │   ├── typedefed_type_tests.cpp
    │   ├── union_type_tests.cpp
    │   ├── unknown_type_tests.cpp
    │   ├── visit_all_visitor_tests.cpp
    │   └── void_type_tests.cpp
    ├── ctypesparser/
    │   ├── CMakeLists.txt
    │   ├── doxygen.h
    │   └── json_ctypes_parser_tests.cpp
    ├── demangler/
    │   ├── CMakeLists.txt
    │   ├── borland_ast_to_ctypes_tests.cpp
    │   ├── borland_context_tests.cpp
    │   ├── borland_tests.cpp
    │   ├── dem_test.h
    │   ├── gcc_tests.cpp
    │   ├── itanium_ast_to_ctypes_tests.cpp
    │   ├── ms_ast_to_ctypes_tests.cpp
    │   └── msvc_tests.cpp
    ├── fileformat/
    │   ├── CMakeLists.txt
    │   ├── coff_format_tests.cpp
    │   ├── elf_format_tests.cpp
    │   ├── fileformat_tests.h
    │   ├── format_detection_tests.cpp
    │   ├── format_factory_tests.cpp
    │   ├── intel_hex_format_20bit_tests.cpp
    │   ├── intel_hex_format_tests.cpp
    │   ├── intel_hex_token_test.cpp
    │   ├── macho_format_tests.cpp
    │   ├── pe_format_tests.cpp
    │   └── raw_data_format_tests.cpp
    ├── llvmir-emul/
    │   ├── CMakeLists.txt
    │   ├── llvmir_emul_tests.cpp
    │   └── llvmir_tests.h
    ├── llvmir2hll/
    │   ├── CMakeLists.txt
    │   ├── analysis/
    │   │   ├── alias_analysis/
    │   │   │   ├── alias_analyses/
    │   │   │   │   └── simple_alias_analysis_tests.cpp
    │   │   │   └── alias_analysis_mock.h
    │   │   ├── break_in_if_analysis_tests.cpp
    │   │   ├── goto_target_analysis_tests.cpp
    │   │   ├── indirect_func_ref_analysis_tests.cpp
    │   │   ├── null_pointer_analysis_tests.cpp
    │   │   ├── tests_with_value_analysis.h
    │   │   ├── value_analysis_tests.cpp
    │   │   ├── var_uses_visitor_tests.cpp
    │   │   └── written_into_globals_visitor_tests.cpp
    │   ├── config/
    │   │   ├── config_mock.h
    │   │   ├── config_tests.cpp
    │   │   └── configs/
    │   │       └── json_config_tests.cpp
    │   ├── evaluator/
    │   │   └── arithm_expr_evaluators/
    │   │       ├── c_arithm_expr_evaluator_tests.cpp
    │   │       └── strict_arithm_expr_evaluator_tests.cpp
    │   ├── graphs/
    │   │   └── cfg/
    │   │       ├── cfg_builders/
    │   │       │   └── non_recursive_cfg_builder_tests.cpp
    │   │       └── cfg_traversals/
    │   │           └── lhs_rhs_uses_cfg_traversal_tests.cpp
    │   ├── hll/
    │   │   ├── bracket_managers/
    │   │   │   ├── c_bracket_manager_tests.cpp
    │   │   │   └── no_bracket_manager_tests.cpp
    │   │   ├── compound_op_managers/
    │   │   │   ├── c_compound_op_manager_tests.cpp
    │   │   │   ├── compound_op_manager_tests.cpp
    │   │   │   ├── compound_op_manager_tests.h
    │   │   │   └── no_compound_op_manager_tests.cpp
    │   │   ├── hll_writers/
    │   │   │   ├── c_hll_writer_tests.cpp
    │   │   │   ├── hll_writer_tests.cpp
    │   │   │   └── hll_writer_tests.h
    │   │   └── output_managers/
    │   │       ├── json_manager_tests.cpp
    │   │       ├── output_manager_tests.cpp
    │   │       ├── output_manager_tests.h
    │   │       └── plain_manager_tests.cpp
    │   ├── ir/
    │   │   ├── array_index_op_expr_tests.cpp
    │   │   ├── array_type_tests.cpp
    │   │   ├── assertions.h
    │   │   ├── assign_stmt_tests.cpp
    │   │   ├── call_expr_tests.cpp
    │   │   ├── call_stmt_tests.cpp
    │   │   ├── const_array_tests.cpp
    │   │   ├── const_bool_tests.cpp
    │   │   ├── const_float_tests.cpp
    │   │   ├── const_int_tests.cpp
    │   │   ├── const_string_tests.cpp
    │   │   ├── const_symbol_tests.cpp
    │   │   ├── expression_tests.cpp
    │   │   ├── function_builder_tests.cpp
    │   │   ├── function_tests.cpp
    │   │   ├── function_type_tests.cpp
    │   │   ├── global_var_def_tests.cpp
    │   │   ├── if_stmt_tests.cpp
    │   │   ├── int_type_tests.cpp
    │   │   ├── module_tests.cpp
    │   │   ├── return_stmt_tests.cpp
    │   │   ├── statement_tests.cpp
    │   │   ├── string_type_tests.cpp
    │   │   ├── struct_type_tests.cpp
    │   │   ├── switch_stmt_tests.cpp
    │   │   ├── tests_with_module.cpp
    │   │   ├── tests_with_module.h
    │   │   ├── ufor_loop_stmt.cpp
    │   │   ├── unknown_type_tests.cpp
    │   │   ├── variable_tests.cpp
    │   │   └── void_type_tests.cpp
    │   ├── llvm/
    │   │   ├── llvm_intrinsic_converter_tests.cpp
    │   │   ├── llvm_support_tests.cpp
    │   │   ├── llvmir2bir_converter/
    │   │   │   ├── basic_block_converter_tests.cpp
    │   │   │   ├── cfg_node_tests.cpp
    │   │   │   ├── labels_handler_tests.cpp
    │   │   │   ├── llvm_value_converter_tests/
    │   │   │   │   ├── llvm_constant_converter_tests.cpp
    │   │   │   │   ├── llvm_constant_converter_tests_by_llvmir.cpp
    │   │   │   │   ├── llvm_fcmp_converter_constants_tests.cpp
    │   │   │   │   ├── llvm_fcmp_converter_tests.cpp
    │   │   │   │   ├── llvm_instruction_converter_constants_tests.cpp
    │   │   │   │   ├── llvm_instruction_converter_tests.cpp
    │   │   │   │   ├── llvm_type_converter_tests.cpp
    │   │   │   │   ├── tests_with_llvm_value_converter.cpp
    │   │   │   │   └── tests_with_llvm_value_converter.h
    │   │   │   ├── structure_converter_tests.cpp
    │   │   │   └── variables_manager_tests.cpp
    │   │   ├── llvmir2bir_converter_tests/
    │   │   │   ├── base_tests.cpp
    │   │   │   ├── base_tests.h
    │   │   │   ├── functions_tests.cpp
    │   │   │   └── glob_vars_tests.cpp
    │   │   └── string_conversions_tests.cpp
    │   ├── obtainer/
    │   │   └── call_info_obtainer_mock.h
    │   ├── optimizer/
    │   │   └── optimizers/
    │   │       ├── bit_op_to_log_op_optimizer_tests.cpp
    │   │       ├── bit_shift_optimizer_tests.cpp
    │   │       ├── break_continue_return_optimizer_tests.cpp
    │   │       ├── c_array_arg_optimizer_tests.cpp
    │   │       ├── copy_propagation_optimizer_tests.cpp
    │   │       ├── dead_code_optimizer_tests.cpp
    │   │       ├── dead_local_assign_optimizer_tests.cpp
    │   │       ├── deref_address_optimizer_tests.cpp
    │   │       ├── deref_to_array_index_optimizer_tests.cpp
    │   │       ├── empty_array_to_string_optimizer_tests.cpp
    │   │       ├── empty_stmt_optimizer_tests.cpp
    │   │       ├── goto_stmt_optimizer_tests.cpp
    │   │       ├── if_before_loop_optimizer_tests.cpp
    │   │       ├── if_structure_optimizer_tests.cpp
    │   │       ├── if_to_switch_optimizer_tests.cpp
    │   │       ├── llvm_intrinsics_optimizer_tests.cpp
    │   │       ├── loop_last_continue_optimizer_tests.cpp
    │   │       ├── no_init_var_def_optimizer_tests.cpp
    │   │       ├── pre_while_true_loop_conv_optimizer_tests.cpp
    │   │       ├── remove_all_casts_optimizer_tests.cpp
    │   │       ├── remove_useless_casts_optimizer_tests.cpp
    │   │       ├── self_assign_optimizer_tests.cpp
    │   │       ├── simple_copy_propagation_optimizer_tests.cpp
    │   │       ├── simplify_arithm_expr/
    │   │       │   ├── bool_comparison_optimizer_tests.cpp
    │   │       │   ├── change_order_of_operands_sub_optimizer_tests.cpp
    │   │       │   ├── const_operator_const_sub_optimizer_tests.cpp
    │   │       │   ├── equal_operands_sub_optimizer_tests.cpp
    │   │       │   ├── negation_operator_sub_optimizer_tests.cpp
    │   │       │   ├── negative_operand_sub_optimizer_tests.cpp
    │   │       │   ├── one_sub_optimizer_tests.cpp
    │   │       │   ├── ternary_operator_sub_optimizer_tests.cpp
    │   │       │   ├── three_operands_sub_optimizer_tests.cpp
    │   │       │   └── zero_sub_optimizer_tests.cpp
    │   │       ├── simplify_arithm_expr_optimizer_tests.cpp
    │   │       ├── unused_global_var_optimizer_tests.cpp
    │   │       ├── var_def_for_loop_optimizer_tests.cpp
    │   │       ├── var_def_stmt_optimizer_tests.cpp
    │   │       ├── void_return_optimizer_tests.cpp
    │   │       ├── while_true_to_for_loop_optimizer_tests.cpp
    │   │       ├── while_true_to_ufor_loop_optimizer_tests.cpp
    │   │       └── while_true_to_while_cond_optimizer_tests.cpp
    │   ├── pattern/
    │   │   ├── pattern_finder_mock.h
    │   │   ├── pattern_finder_runner_mock.h
    │   │   ├── pattern_finder_runner_tests.cpp
    │   │   ├── pattern_finder_runners/
    │   │   │   ├── cli_pattern_finder_runner_tests.cpp
    │   │   │   └── no_action_pattern_finder_runner_tests.cpp
    │   │   ├── pattern_finder_tests.cpp
    │   │   ├── pattern_finders/
    │   │   │   ├── api_call/
    │   │   │   │   ├── api_call_info_seq_parser_tests.cpp
    │   │   │   │   ├── api_call_info_seq_tests.cpp
    │   │   │   │   ├── api_call_info_tests.cpp
    │   │   │   │   └── api_call_seq_finder_mock.h
    │   │   │   ├── api_call_pattern_finder_tests.cpp
    │   │   │   └── api_call_seq_pattern_finder_tests.cpp
    │   │   ├── pattern_mock.h
    │   │   └── patterns/
    │   │       └── stmts_pattern_tests.cpp
    │   ├── semantics/
    │   │   ├── semantics/
    │   │   │   ├── compound_semantics_tests.cpp
    │   │   │   ├── default_semantics_tests.cpp
    │   │   │   ├── gcc_general_semantics_tests.cpp
    │   │   │   ├── libc_semantics_tests.cpp
    │   │   │   └── win_api_semantics_tests.cpp
    │   │   └── semantics_mock.h
    │   ├── support/
    │   │   ├── const_symbol_converter_tests.cpp
    │   │   ├── global_vars_sorter_tests.cpp
    │   │   ├── headers_for_declared_funcs_tests.cpp
    │   │   ├── library_funcs_remover_tests.cpp
    │   │   ├── observer_mock.h
    │   │   ├── struct_types_sorter_tests.cpp
    │   │   └── unreachable_code_in_cfg_remover_tests.cpp
    │   ├── utils/
    │   │   ├── ir_tests.cpp
    │   │   └── string_tests.cpp
    │   ├── validator/
    │   │   └── validators/
    │   │       ├── break_outside_loop_validator_tests.cpp
    │   │       ├── no_global_var_def_validator_tests.cpp
    │   │       └── return_validator_tests.cpp
    │   ├── var_name_gen/
    │   │   └── var_name_gen_mock.h
    │   └── var_renamer/
    │       ├── tests_with_var_name_gen_and_var_renamer.h
    │       ├── var_renamer_tests.cpp
    │       └── var_renamers/
    │           ├── address_var_renamer_tests.cpp
    │           ├── hungarian_var_renamer_tests.cpp
    │           ├── readable_var_renamer_tests.cpp
    │           ├── simple_var_renamer_tests.cpp
    │           └── unified_var_renamer_tests.cpp
    ├── loader/
    │   ├── CMakeLists.txt
    │   ├── name_generator_tests.cpp
    │   ├── overlap_resolver_tests.cpp
    │   ├── segment_data_source_tests.cpp
    │   └── segment_tests.cpp
    ├── serdes/
    │   ├── CMakeLists.txt
    │   ├── calling_convention_tests.cpp
    │   ├── class_tests.cpp
    │   └── pattern_tests.cpp
    ├── unpacker/
    │   ├── CMakeLists.txt
    │   ├── dynamic_buffer_tests.cpp
    │   └── signature_tests.cpp
    └── utils/
        ├── CMakeLists.txt
        ├── alignment_tests.cpp
        ├── array_tests.cpp
        ├── binary_path_tests.cpp
        ├── byte_value_storage_tests.cpp
        ├── container_tests.cpp
        ├── conversion_tests.cpp
        ├── doxygen.h
        ├── filter_iterator_tests.cpp
        ├── math_tests.cpp
        ├── memory_tests.cpp
        ├── scope_exit_tests.cpp
        ├── string_tests.cpp
        ├── time_tests.cpp
        └── version_tests.cpp
Download .txt
Showing preview only (1,258K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (14478 symbols across 2161 files)

FILE: deps/authenticode-parser/include/authenticode-parser/authenticode.h
  type ByteArray (line 76) | typedef struct {
  type Attributes (line 81) | typedef struct { /* Various X509 attributes parsed out in raw bytes*/
  type Certificate (line 99) | typedef struct {
  type CertificateArray (line 116) | typedef struct {
  type Countersignature (line 121) | typedef struct {
  type CountersignatureArray (line 131) | typedef struct {
  type Signer (line 136) | typedef struct {             /* Represents SignerInfo structure */
  type Authenticode (line 143) | typedef struct {
  type AuthenticodeArray (line 155) | typedef struct {

FILE: deps/authenticode-parser/src/authenticode.c
  function authenticode_array_move (line 47) | static int authenticode_array_move(AuthenticodeArray* dst, AuthenticodeA...
  function SpcIndirectDataContent (line 69) | static SpcIndirectDataContent* get_content(PKCS7* content)
  function parse_nested_authenticode (line 117) | static void parse_nested_authenticode(PKCS7_SIGNER_INFO* si, Authenticod...
  function parse_pkcs9_countersig (line 145) | static void parse_pkcs9_countersig(PKCS7* p7, Authenticode* auth)
  function parse_ms_countersig (line 176) | static void parse_ms_countersig(PKCS7* p7, Authenticode* auth)
  function authenticode_verify (line 210) | static bool authenticode_verify(PKCS7* p7, PKCS7_SIGNER_INFO* si, X509* ...
  function initialize_authenticode_parser (line 243) | void initialize_authenticode_parser()
  function AuthenticodeArray (line 253) | AuthenticodeArray* authenticode_new(const uint8_t* data, int32_t len)
  function authenticode_digest (line 394) | static int authenticode_digest(
  function AuthenticodeArray (line 491) | AuthenticodeArray* parse_authenticode(const uint8_t* pe_data, uint64_t p...
  function signer_free (line 581) | static void signer_free(Signer* si)
  function authenticode_free (line 592) | static void authenticode_free(Authenticode* auth)
  function authenticode_array_free (line 605) | void authenticode_array_free(AuthenticodeArray* arr)

FILE: deps/authenticode-parser/src/certificate.c
  function parse_oneline_string (line 37) | static void parse_oneline_string(char* string)
  function parse_name_attributes (line 55) | static void parse_name_attributes(X509_NAME* raw, Attributes* attr)
  function CertificateArray (line 107) | CertificateArray* parse_signer_chain(X509* signCert, STACK_OF(X509) * ce...
  function Certificate (line 267) | Certificate* certificate_new(X509* x509)
  function attributes_copy (line 333) | void attributes_copy(Attributes* dst, Attributes* src)
  function parse_x509_certificates (line 356) | void parse_x509_certificates(const STACK_OF(X509) * certs, CertificateAr...
  function Certificate (line 372) | Certificate* certificate_copy(Certificate* cert)
  function certificate_array_move (line 401) | int certificate_array_move(CertificateArray* dst, CertificateArray* src)
  function certificate_array_append (line 431) | int certificate_array_append(CertificateArray* dst, CertificateArray* src)
  function CertificateArray (line 456) | CertificateArray* certificate_array_new(int certCount)
  function certificate_attributes_free (line 473) | static void certificate_attributes_free(Attributes attrs)
  function certificate_free (line 492) | void certificate_free(Certificate* cert)
  function certificate_array_free (line 510) | void certificate_array_free(CertificateArray* arr)

FILE: deps/authenticode-parser/src/countersignature.c
  type CountersignatureImplStruct (line 42) | struct CountersignatureImplStruct
  type TS_TST_INFO (line 44) | typedef TS_TST_INFO* get_ts_tst_info_func(struct CountersignatureImplStr...
  type CountersignatureImplStruct (line 45) | struct CountersignatureImplStruct
  type CountersignatureImplStruct (line 46) | struct CountersignatureImplStruct
  type CountersignatureImplStruct (line 48) | struct CountersignatureImplStruct
  type BIO (line 49) | typedef BIO* verify_signature_init_func(struct CountersignatureImplStruc...
  type CountersignatureImplStruct (line 51) | struct CountersignatureImplStruct
  function DECLARE_FUNCS (line 63) | DECLARE_FUNCS(pkcs7)
  function FUNC_ARRAY_FOR_IMPL (line 86) | FUNC_ARRAY_FOR_IMPL(pkcs7)

FILE: deps/authenticode-parser/src/helper.c
  function bswap16 (line 31) | uint16_t bswap16(uint16_t d)
  function bswap32 (line 36) | uint32_t bswap32(uint32_t d)
  function calculate_digest (line 42) | int calculate_digest(const EVP_MD* md, const uint8_t* data, size_t len, ...
  function byte_array_init (line 59) | int byte_array_init(ByteArray* arr, const uint8_t* data, int len)
  function ASN1_TIME_to_int64_t (line 76) | int64_t ASN1_TIME_to_int64_t(const ASN1_TIME* time)

FILE: deps/authenticode-parser/src/structs.h
  type SpcString (line 39) | typedef struct {
  type SpcSerializedObject (line 47) | typedef struct {
  type SpcLink (line 52) | typedef struct {
  type SpcAttributeTypeAndOptionalValue (line 61) | typedef struct {
  type SpcPeImageData (line 66) | typedef struct {
  type AlgorithmIdentifier (line 71) | typedef struct {
  type DigestInfo (line 76) | typedef struct {
  type SpcIndirectDataContent (line 81) | typedef struct {
  type SpcContentInfo (line 86) | typedef struct {
  type SpcSpOpusInfo (line 91) | typedef struct {

FILE: deps/eigen/Eigen/src/Cholesky/LDLT.h
  function namespace (line 16) | namespace Eigen {
  function namespace (line 287) | namespace internal {
  function Upper (line 454) | struct ldlt_inplace<Upper>
  type TriangularView (line 474) | typedef const TriangularView<const typename
  function MatrixL (line 475) | static inline MatrixL getL(const MatrixType& m) { return MatrixL(m); }
  function MatrixU (line 476) | static inline MatrixU getU(const MatrixType& m) { return MatrixU(m.adjoi...
  type TriangularView (line 482) | typedef const TriangularView<const MatrixType, UnitUpper> MatrixU;
  function MatrixL (line 483) | static inline MatrixL getL(const MatrixType& m) { return MatrixL(m.adjoi...
  function MatrixU (line 484) | static inline MatrixU getU(const MatrixType& m) { return MatrixU(m); }
  type typename (line 535) | typedef typename TranspositionType::StorageIndex IndexType;

FILE: deps/eigen/Eigen/src/Cholesky/LLT.h
  function namespace (line 13) | namespace Eigen {
  function namespace (line 228) | namespace internal {
  type typename (line 372) | typedef typename NumTraits<Scalar>::Real RealScalar;
  type TriangularView (line 397) | typedef const TriangularView<const typename
  function MatrixL (line 398) | static inline MatrixL getL(const MatrixType& m) { return MatrixL(m); }
  function MatrixU (line 399) | static inline MatrixU getU(const MatrixType& m) { return MatrixU(m.adjoi...
  function inplace_decomposition (line 400) | static bool inplace_decomposition(MatrixType& m)
  type TriangularView (line 407) | typedef const TriangularView<const MatrixType, Upper> MatrixU;
  function MatrixL (line 408) | static inline MatrixL getL(const MatrixType& m) { return MatrixL(m.adjoi...
  function MatrixU (line 409) | static inline MatrixU getU(const MatrixType& m) { return MatrixU(m); }
  function inplace_decomposition (line 410) | static bool inplace_decomposition(MatrixType& m)

FILE: deps/eigen/Eigen/src/Cholesky/LLT_LAPACKE.h
  function namespace (line 36) | namespace Eigen {

FILE: deps/eigen/Eigen/src/Core/Array.h
  function namespace (line 13) | namespace Eigen {
  function enum (line 51) | EIGEN_DENSE_PUBLIC_INTERFACE(Array)
  function EIGEN_DEVICE_FUNC (line 141) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 151) | EIGEN_DEVICE_FUNC
  function EIGEN_STRONG_INLINE (line 168) | EIGEN_STRONG_INLINE explicit Array(const T& x)
  function EIGEN_STRONG_INLINE (line 176) | EIGEN_STRONG_INLINE Array(const T0& val0, const T1& val1)
  function Base (line 228) | Array(const Array& other)
  type PrivateType (line 233) | struct PrivateType {}
  function EIGEN_STRONG_INLINE (line 239) | EIGEN_STRONG_INLINE Array(const EigenBase<OtherDerived> &other,
  type internal (line 255) | struct internal

FILE: deps/eigen/Eigen/src/Core/ArrayBase.h
  function namespace (line 13) | namespace Eigen {

FILE: deps/eigen/Eigen/src/Core/ArrayWrapper.h
  function namespace (line 13) | namespace Eigen {

FILE: deps/eigen/Eigen/src/Core/Assign.h
  function namespace (line 15) | namespace Eigen {

FILE: deps/eigen/Eigen/src/Core/AssignEvaluator.h
  function namespace (line 15) | namespace Eigen {
  type typename (line 347) | typedef typename Kernel::DstEvaluatorType::XprType DstXprType;
  type unaligned_dense_assignment_loop (line 372) | struct unaligned_dense_assignment_loop
  type typename (line 400) | typedef typename Kernel::Scalar Scalar;
  type typename (line 401) | typedef typename Kernel::PacketType PacketType;
  type typename (line 427) | typedef typename Kernel::DstEvaluatorType::XprType DstXprType;
  type typename (line 428) | typedef typename Kernel::PacketType PacketType;
  function run (line 451) | void run(Kernel &kernel)
  type typename (line 467) | typedef typename Kernel::DstEvaluatorType::XprType DstXprType;
  type typename (line 477) | typedef typename Kernel::DstEvaluatorType::XprType DstXprType;
  type typename (line 478) | typedef typename Kernel::AssignmentTraits Traits;
  type typename (line 506) | typedef typename Kernel::DstEvaluatorType::XprType DstXprType;
  type typename (line 520) | typedef typename Kernel::Scalar Scalar;
  type typename (line 521) | typedef typename Kernel::PacketType PacketType;
  type typename (line 568) | typedef typename Kernel::DstEvaluatorType::XprType DstXprType;
  type typename (line 569) | typedef typename Kernel::PacketType PacketType;
  type typename (line 600) | typedef typename SrcEvaluatorTypeT::XprType SrcXprType;
  type SrcEvaluatorTypeT (line 604) | typedef SrcEvaluatorTypeT SrcEvaluatorType;
  type typename (line 605) | typedef typename DstEvaluatorType::Scalar Scalar;
  type copy_using_evaluator_traits (line 606) | typedef copy_using_evaluator_traits<DstEvaluatorTypeT, SrcEvaluatorTypeT...
  type typename (line 607) | typedef typename AssignmentTraits::PacketType PacketType;
  function EIGEN_DEVICE_FUNC (line 625) | EIGEN_DEVICE_FUNC DstEvaluatorType& dstEvaluator() { return m_dst; }
  function assignCoeff (line 629) | void assignCoeff(Index row, Index col)
  function assignCoeff (line 635) | void assignCoeff(Index index)
  function assignCoeffByOuterInner (line 641) | void assignCoeffByOuterInner(Index outer, Index inner)
  function assignPacket (line 650) | void assignPacket(Index row, Index col)
  function assignPacket (line 656) | void assignPacket(Index index)
  function assignPacketByOuterInner (line 662) | void assignPacketByOuterInner(Index outer, Index inner)
  function Index (line 669) | Index rowIndexByOuterInner(Index outer, Index inner)
  function Index (line 678) | Index colIndexByOuterInner(Index outer, Index inner)
  function EIGEN_DEVICE_FUNC (line 687) | EIGEN_DEVICE_FUNC const Scalar* dstDataPtr() const
  function resize_if_allowed (line 706) | void resize_if_allowed(DstXprType &dst, const SrcXprType& src, const Fun...
  type evaluator (line 728) | typedef evaluator<SrcXprType> SrcEvaluatorType;
  type generic_dense_assignment_kernel (line 738) | typedef generic_dense_assignment_kernel<DstEvaluatorType,SrcEvaluatorTyp...
  function call_dense_assignment_loop (line 745) | void call_dense_assignment_loop(DstXprType& dst, const SrcXprType& src)
  type Dense2Dense (line 760) | struct Dense2Dense {}
  type EigenBase2EigenBase (line 761) | struct EigenBase2EigenBase {}
  type EigenBase2EigenBase (line 763) | typedef EigenBase2EigenBase Kind;
  type AssignmentKind (line 764) | struct AssignmentKind
  type Dense2Dense (line 764) | typedef Dense2Dense Kind;
  function call_assignment (line 780) | void call_assignment(Dst& dst, const Src& src)
  function call_assignment (line 786) | void call_assignment(const Dst& dst, const Src& src)
  function call_assignment_no_alias (line 819) | void call_assignment_no_alias(Dst& dst, const Src& src, const Func& func)
  function call_assignment_no_alias (line 840) | void call_assignment_no_alias(Dst& dst, const Src& src)
  function call_assignment_no_alias_no_transpose (line 847) | void call_assignment_no_alias_no_transpose(Dst& dst, const Src& src, con...
  function call_assignment_no_alias_no_transpose (line 858) | void call_assignment_no_alias_no_transpose(Dst& dst, const Src& src)
  type Assignment (line 888) | struct Assignment

FILE: deps/eigen/Eigen/src/Core/Assign_MKL.h
  function namespace (line 37) | namespace Eigen {

FILE: deps/eigen/Eigen/src/Core/BandMatrix.h
  function namespace (line 13) | namespace Eigen {
  type typename (line 103) | typedef typename internal::conditional<Conjugate,
  function typename (line 115) | const typename DiagonalIntReturnType<N>::Type diagonal() const
  function DenseMatrixType (line 145) | DenseMatrixType toDenseMatrix() const
  type Dense (line 181) | typedef Dense StorageKind;
  type Eigen (line 182) | typedef Eigen::Index StorageIndex;
  type Matrix (line 195) | typedef Matrix<Scalar,DataRowsAtCompileTime,ColsAtCompileTime,Options
  type typename (line 203) | typedef typename internal::traits<BandMatrix>::Scalar Scalar;
  type typename (line 204) | typedef typename internal::traits<BandMatrix>::StorageIndex StorageIndex;
  type typename (line 205) | typedef typename internal::traits<BandMatrix>::CoefficientsType Coeffici...
  function CoefficientsType (line 226) | inline CoefficientsType& coeffs() { return m_coeffs; }
  type typename (line 243) | typedef typename _CoefficientsType::StorageKind StorageKind;
  type typename (line 244) | typedef typename _CoefficientsType::StorageIndex StorageIndex;
  type _CoefficientsType (line 257) | typedef _CoefficientsType CoefficientsType;
  type typename (line 266) | typedef typename internal::traits<BandMatrixWrapper>::CoefficientsType C...
  type typename (line 267) | typedef typename internal::traits<BandMatrixWrapper>::StorageIndex Stora...
  type typename (line 315) | typedef typename Base::StorageIndex StorageIndex;
  type BandShape (line 331) | struct BandShape {}
  type AssignmentKind (line 347) | struct AssignmentKind
  type EigenBase2EigenBase (line 347) | typedef EigenBase2EigenBase Kind;

FILE: deps/eigen/Eigen/src/Core/Block.h
  function namespace (line 14) | namespace Eigen {
  function EIGEN_DEVICE_FUNC (line 117) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 127) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 138) | EIGEN_DEVICE_FUNC
  type typename (line 158) | typedef typename XprType::StorageIndex StorageIndex;
  function Impl (line 162) | inline BlockImpl(XprType& xpr, Index i) : Impl(xpr,i) {}
  function EIGEN_DEVICE_FUNC (line 163) | EIGEN_DEVICE_FUNC inline BlockImpl(XprType& xpr, Index startRow, Index s...
  function EIGEN_DEVICE_FUNC (line 164) | EIGEN_DEVICE_FUNC
  function namespace (line 169) | namespace internal {

FILE: deps/eigen/Eigen/src/Core/BooleanRedux.h
  function namespace (line 13) | namespace Eigen {

FILE: deps/eigen/Eigen/src/Core/CommaInitializer.h
  function namespace (line 14) | namespace Eigen {
  function EIGEN_DEVICE_FUNC (line 116) | EIGEN_DEVICE_FUNC

FILE: deps/eigen/Eigen/src/Core/ConditionEstimator.h
  function namespace (line 13) | namespace Eigen {

FILE: deps/eigen/Eigen/src/Core/CoreEvaluators.h
  function namespace (line 16) | namespace Eigen {
  function EIGEN_DEVICE_FUNC (line 241) | EIGEN_DEVICE_FUNC evaluator() {}
  function EIGEN_DEVICE_FUNC (line 243) | EIGEN_DEVICE_FUNC explicit evaluator(const XprType& m)
  function EIGEN_DEVICE_FUNC (line 254) | EIGEN_DEVICE_FUNC evaluator() {}
  function EIGEN_DEVICE_FUNC (line 256) | EIGEN_DEVICE_FUNC explicit evaluator(const XprType& m)
  function EIGEN_DEVICE_FUNC (line 275) | EIGEN_DEVICE_FUNC explicit unary_evaluator(const XprType& t) : m_argImpl...
  type typename (line 277) | typedef typename XprType::Scalar Scalar;
  type typename (line 278) | typedef typename XprType::CoeffReturnType CoeffReturnType;
  function CoeffReturnType (line 281) | CoeffReturnType coeff(Index row, Index col) const
  function CoeffReturnType (line 287) | CoeffReturnType coeff(Index index) const
  function typename (line 299) | typename XprType::Scalar& coeffRef(Index index)
  function PacketType (line 306) | PacketType packet(Index row, Index col) const
  function PacketType (line 313) | PacketType packet(Index index) const
  function writePacket (line 320) | void writePacket(Index row, Index col, const PacketType& x)
  function writePacket (line 327) | void writePacket(Index index, const PacketType& x)
  function EIGEN_STRONG_INLINE (line 349) | EIGEN_STRONG_INLINE Scalar operator()(const NullaryOp& op, IndexType i) ...
  function EIGEN_STRONG_INLINE (line 351) | EIGEN_STRONG_INLINE T packetOp(const NullaryOp& op, IndexType i, IndexTy...
  function EIGEN_STRONG_INLINE (line 352) | EIGEN_STRONG_INLINE T packetOp(const NullaryOp& op, IndexType i) const {...
  function EIGEN_STRONG_INLINE (line 382) | EIGEN_STRONG_INLINE T packetOp(const NullaryOp& op, IndexType i, IndexTy...
  function EIGEN_STRONG_INLINE (line 388) | EIGEN_STRONG_INLINE Scalar operator()(const NullaryOp& op, IndexType i) ...
  function EIGEN_STRONG_INLINE (line 390) | EIGEN_STRONG_INLINE T packetOp(const NullaryOp& op, IndexType i) const {...
  function EIGEN_STRONG_INLINE (line 430) | EIGEN_STRONG_INLINE Scalar operator()(const NullaryOp& op, IndexType i) ...
  function EIGEN_STRONG_INLINE (line 438) | EIGEN_STRONG_INLINE T packetOp(const NullaryOp& op, IndexType i, IndexTy...
  function EIGEN_STRONG_INLINE (line 445) | EIGEN_STRONG_INLINE T packetOp(const NullaryOp& op, IndexType i) const {
  type typename (line 459) | typedef typename internal::remove_all<PlainObjectType>::type PlainObject...
  function EIGEN_DEVICE_FUNC (line 472) | EIGEN_DEVICE_FUNC explicit evaluator(const XprType& n)
  type typename (line 478) | typedef typename XprType::CoeffReturnType CoeffReturnType;
  function EIGEN_STRONG_INLINE (line 481) | EIGEN_STRONG_INLINE
  function EIGEN_STRONG_INLINE (line 488) | EIGEN_STRONG_INLINE
  function PacketType (line 496) | PacketType packet(IndexType row, IndexType col) const
  function PacketType (line 503) | PacketType packet(IndexType index) const
  function explicit (line 530) | explicit unary_evaluator(const XprType& op)
  type typename (line 538) | typedef typename XprType::CoeffReturnType CoeffReturnType;
  function CoeffReturnType (line 541) | CoeffReturnType coeff(Index row, Index col) const
  function CoeffReturnType (line 547) | CoeffReturnType coeff(Index index) const
  function PacketType (line 554) | PacketType packet(Index row, Index col) const
  function PacketType (line 561) | PacketType packet(Index index) const
  type ternary_evaluator (line 579) | typedef ternary_evaluator<CwiseTernaryOp<TernaryOp, Arg1, Arg2, Arg3> > ...
  function EIGEN_DEVICE_FUNC (line 581) | EIGEN_DEVICE_FUNC explicit evaluator(const XprType& xpr) : Base(xpr) {}
  type typename (line 622) | typedef typename XprType::CoeffReturnType CoeffReturnType;
  function CoeffReturnType (line 625) | CoeffReturnType coeff(Index row, Index col) const
  function CoeffReturnType (line 631) | CoeffReturnType coeff(Index index) const
  function PacketType (line 638) | PacketType packet(Index row, Index col) const
  function PacketType (line 647) | PacketType packet(Index index) const
  type binary_evaluator (line 669) | typedef binary_evaluator<CwiseBinaryOp<BinaryOp, Lhs, Rhs> > Base;
  function EIGEN_DEVICE_FUNC (line 671) | EIGEN_DEVICE_FUNC explicit evaluator(const XprType& xpr) : Base(xpr) {}
  type typename (line 708) | typedef typename XprType::CoeffReturnType CoeffReturnType;
  function CoeffReturnType (line 711) | CoeffReturnType coeff(Index row, Index col) const
  function CoeffReturnType (line 717) | CoeffReturnType coeff(Index index) const
  function PacketType (line 724) | PacketType packet(Index row, Index col) const
  function PacketType (line 732) | PacketType packet(Index index) const
  function EIGEN_DEVICE_FUNC (line 760) | EIGEN_DEVICE_FUNC explicit unary_evaluator(const XprType& op)
  type typename (line 768) | typedef typename XprType::Scalar Scalar;
  type typename (line 769) | typedef typename XprType::CoeffReturnType CoeffReturnType;
  function CoeffReturnType (line 772) | CoeffReturnType coeff(Index row, Index col) const
  function CoeffReturnType (line 778) | CoeffReturnType coeff(Index index) const
  type Derived (line 810) | typedef Derived  XprType;
  type typename (line 811) | typedef typename XprType::PointerType PointerType;
  type typename (line 812) | typedef typename XprType::Scalar Scalar;
  type typename (line 813) | typedef typename XprType::CoeffReturnType CoeffReturnType;
  function CoeffReturnType (line 832) | CoeffReturnType coeff(Index row, Index col) const
  function CoeffReturnType (line 838) | CoeffReturnType coeff(Index index) const
  function PacketType (line 857) | PacketType packet(Index row, Index col) const
  function PacketType (line 865) | PacketType packet(Index index) const
  function writePacket (line 872) | void writePacket(Index row, Index col, const PacketType& x)
  function writePacket (line 880) | void writePacket(Index index, const PacketType& x)
  type typename (line 900) | typedef typename XprType::Scalar Scalar;
  type typename (line 902) | typedef typename packet_traits<Scalar>::type PacketScalar;
  function EIGEN_DEVICE_FUNC (line 923) | EIGEN_DEVICE_FUNC explicit evaluator(const XprType& map)
  function EIGEN_DEVICE_FUNC (line 941) | EIGEN_DEVICE_FUNC explicit evaluator(const XprType& ref)
  type typename (line 956) | typedef typename XprType::Scalar Scalar;
  type typename (line 958) | typedef typename packet_traits<Scalar>::type PacketScalar;
  type block_evaluator (line 995) | typedef block_evaluator<ArgType, BlockRows, BlockCols, InnerPanel> block...
  function EIGEN_DEVICE_FUNC (line 996) | EIGEN_DEVICE_FUNC explicit evaluator(const XprType& block) : block_evalu...
  function EIGEN_DEVICE_FUNC (line 1009) | EIGEN_DEVICE_FUNC explicit block_evaluator(const XprType& block)
  function CoeffReturnType (line 1036) | CoeffReturnType coeff(Index row, Index col) const
  function CoeffReturnType (line 1042) | CoeffReturnType coeff(Index index) const
  function PacketType (line 1067) | PacketType packet(Index row, Index col) const
  function PacketType (line 1074) | PacketType packet(Index index) const
  function writePacket (line 1085) | void writePacket(Index row, Index col, const PacketType& x)
  function writePacket (line 1092) | void writePacket(Index index, const PacketType& x)
  type typename (line 1118) | typedef typename XprType::Scalar Scalar;
  type typename (line 1156) | typedef typename XprType::CoeffReturnType CoeffReturnType;
  function CoeffReturnType (line 1159) | CoeffReturnType coeff(Index row, Index col) const
  function CoeffReturnType (line 1168) | CoeffReturnType coeff(Index index) const
  type typename (line 1190) | typedef typename XprType::CoeffReturnType CoeffReturnType;
  type typename (line 1194) | typedef typename internal::nested_eval<ArgType,Factor>::type ArgTypeNested;
  type typename (line 1195) | typedef typename internal::remove_all<ArgTypeNested>::type ArgTypeNested...
  function CoeffReturnType (line 1227) | CoeffReturnType coeff(Index index) const
  function PacketType (line 1239) | PacketType packet(Index row, Index col) const
  function PacketType (line 1253) | PacketType packet(Index index) const
  type typename (line 1277) | typedef typename internal::nested_eval<ArgType,1>::type ArgTypeNested;
  type typename (line 1278) | typedef typename internal::remove_all<ArgTypeNested>::type ArgTypeNested...
  type typename (line 1279) | typedef typename ArgType::Scalar InputScalar;
  type typename (line 1280) | typedef typename XprType::Scalar Scalar;
  type typename (line 1284) | typedef typename MemberOp::template Cost<InputScalar,int(TraversalSize)>...
  function EIGEN_DEVICE_FUNC (line 1294) | EIGEN_DEVICE_FUNC explicit evaluator(const XprType xpr)
  type typename (line 1301) | typedef typename XprType::CoeffReturnType CoeffReturnType;
  function Scalar (line 1304) | const Scalar coeff(Index i, Index j) const
  function Scalar (line 1313) | const Scalar coeff(Index index) const
  type typename (line 1336) | typedef typename remove_all<typename XprType::NestedExpressionType>::typ...
  function EIGEN_DEVICE_FUNC (line 1343) | EIGEN_DEVICE_FUNC explicit evaluator_wrapper_base(const ArgType& arg) : ...
  type typename (line 1345) | typedef typename ArgType::Scalar Scalar;
  type typename (line 1346) | typedef typename ArgType::CoeffReturnType CoeffReturnType;
  function CoeffReturnType (line 1349) | CoeffReturnType coeff(Index row, Index col) const
  function CoeffReturnType (line 1355) | CoeffReturnType coeff(Index index) const
  function PacketType (line 1374) | PacketType packet(Index row, Index col) const
  function PacketType (line 1381) | PacketType packet(Index index) const
  function writePacket (line 1388) | void writePacket(Index row, Index col, const PacketType& x)
  function writePacket (line 1395) | void writePacket(Index index, const PacketType& x)
  function EIGEN_DEVICE_FUNC (line 1410) | EIGEN_DEVICE_FUNC explicit unary_evaluator(const XprType& wrapper)
  function EIGEN_DEVICE_FUNC (line 1421) | EIGEN_DEVICE_FUNC explicit unary_evaluator(const XprType& wrapper)
  type typename (line 1437) | typedef typename XprType::Scalar Scalar;
  type typename (line 1438) | typedef typename XprType::CoeffReturnType CoeffReturnType;
  function CoeffReturnType (line 1477) | CoeffReturnType coeff(Index index) const
  function PacketType (line 1497) | PacketType packet(Index row, Index col) const
  function PacketType (line 1512) | PacketType packet(Index index) const
  function writePacket (line 1520) | void writePacket(Index row, Index col, const PacketType& x)
  function writePacket (line 1537) | void writePacket(Index index, const PacketType& x)
  function EIGEN_DEVICE_FUNC (line 1570) | EIGEN_DEVICE_FUNC explicit evaluator(const XprType& diagonal)
  type typename (line 1575) | typedef typename XprType::Scalar Scalar;
  type typename (line 1576) | typedef typename XprType::CoeffReturnType CoeffReturnType;
  function CoeffReturnType (line 1579) | CoeffReturnType coeff(Index row, Index) const
  function CoeffReturnType (line 1585) | CoeffReturnType coeff(Index index) const
  function EvalToTemp (line 1634) | EIGEN_GENERIC_PUBLIC_INTERFACE(EvalToTemp)
  type typename (line 1664) | typedef typename ArgType::PlainObject         PlainObject;
  type evaluator (line 1665) | typedef evaluator<PlainObject> Base;
  function EIGEN_DEVICE_FUNC (line 1667) | EIGEN_DEVICE_FUNC explicit evaluator(const XprType& xpr)
  function EIGEN_DEVICE_FUNC (line 1674) | EIGEN_DEVICE_FUNC evaluator(const ArgType& arg)

FILE: deps/eigen/Eigen/src/Core/CoreIterators.h
  function namespace (line 13) | namespace Eigen {

FILE: deps/eigen/Eigen/src/Core/CwiseBinaryOp.h
  function namespace (line 14) | namespace Eigen {
  type typename (line 88) | typedef typename internal::remove_all<LhsType>::type Lhs;
  type typename (line 89) | typedef typename internal::remove_all<RhsType>::type Rhs;
  type typename (line 91) | typedef typename CwiseBinaryOpImpl<
  type typename (line 99) | typedef typename internal::ref_selector<RhsType>::type RhsNested;
  type typename (line 100) | typedef typename internal::remove_reference<LhsNested>::type _LhsNested;
  type typename (line 101) | typedef typename internal::remove_reference<RhsNested>::type _RhsNested;

FILE: deps/eigen/Eigen/src/Core/CwiseNullaryOp.h
  function namespace (line 13) | namespace Eigen {
  function if (line 137) | EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
  function namespace (line 739) | namespace internal {

FILE: deps/eigen/Eigen/src/Core/CwiseTernaryOp.h
  function namespace (line 15) | namespace Eigen {
  type typename (line 91) | typedef typename internal::remove_all<Arg2Type>::type Arg2;
  type typename (line 92) | typedef typename internal::remove_all<Arg3Type>::type Arg3;
  type typename (line 94) | typedef typename CwiseTernaryOpImpl<
  type typename (line 100) | typedef typename internal::ref_selector<Arg2Type>::type Arg2Nested;
  type typename (line 101) | typedef typename internal::ref_selector<Arg3Type>::type Arg3Nested;
  type typename (line 102) | typedef typename internal::remove_reference<Arg1Nested>::type _Arg1Nested;
  type typename (line 103) | typedef typename internal::remove_reference<Arg2Nested>::type _Arg2Nested;
  type typename (line 104) | typedef typename internal::remove_reference<Arg3Nested>::type _Arg3Nested;

FILE: deps/eigen/Eigen/src/Core/CwiseUnaryOp.h
  function namespace (line 14) | namespace Eigen {
  type typename (line 62) | typedef typename internal::remove_all<XprType>::type NestedExpression;
  function typename (line 84) | typename internal::remove_all<XprTypeNested>::type&

FILE: deps/eigen/Eigen/src/Core/CwiseUnaryView.h
  function namespace (line 13) | namespace Eigen {
  type typename (line 65) | typedef typename internal::remove_all<MatrixType>::type NestedExpression;
  function explicit (line 67) | explicit inline CwiseUnaryView(MatrixType& mat, const ViewOp& func = Vie...
  function typename (line 83) | typename internal::remove_reference<MatrixTypeNested>::type&
  type typename (line 107) | typedef typename internal::dense_xpr_base< CwiseUnaryView<ViewOp, Matrix...
  function EIGEN_INHERIT_ASSIGNMENT_OPERATORS (line 109) | EIGEN_DENSE_PUBLIC_INTERFACE(Derived)

FILE: deps/eigen/Eigen/src/Core/DenseBase.h
  function namespace (line 16) | namespace internal {
  type typename (line 55) | typedef typename internal::traits<Derived>::StorageKind StorageKind;
  type typename (line 63) | typedef typename internal::traits<Derived>::StorageIndex StorageIndex;
  type typename (line 66) | typedef typename internal::traits<Derived>::Scalar Scalar;
  type Scalar (line 71) | typedef Scalar value_type;
  type typename (line 73) | typedef typename NumTraits<Scalar>::Real RealScalar;
  type DenseCoeffsBase (line 74) | typedef DenseCoeffsBase<Derived, internal::accessors_level<Derived>::val...
  type typename (line 96) | typedef typename Base::CoeffReturnType CoeffReturnType;
  type typename (line 174) | typedef typename internal::find_best_packet<Scalar,SizeAtCompileTime>::t...
  type Matrix (line 180) | typedef Matrix<typename
  type Array (line 190) | typedef Array<typename
  type typename (line 204) | typedef typename internal::conditional<internal::is_same<typename
  function EIGEN_DEVICE_FUNC (line 240) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 251) | EIGEN_DEVICE_FUNC
  type CwiseNullaryOp (line 262) | typedef CwiseNullaryOp<internal::scalar_constant_op<Scalar>,PlainObject>...
  type CwiseNullaryOp (line 264) | typedef CwiseNullaryOp<internal::linspaced_op<Scalar,PacketScalar>,Plain...
  type CwiseNullaryOp (line 266) | typedef CwiseNullaryOp<internal::linspaced_op<Scalar,PacketScalar>,Plain...
  type Matrix (line 268) | typedef Matrix<typename
  type Transpose (line 319) | typedef Transpose<Derived> TransposeReturnType;
  type typename (line 322) | typedef typename internal::add_const<Transpose<const Derived> >::type Co...

FILE: deps/eigen/Eigen/src/Core/DenseCoeffsBase.h
  function namespace (line 13) | namespace Eigen {
  type typename (line 483) | typedef typename internal::traits<Derived>::Scalar Scalar;
  type typename (line 484) | typedef typename NumTraits<Scalar>::Real RealScalar;
  function Index (line 513) | inline Index stride() const
  type typename (line 557) | typedef typename internal::traits<Derived>::Scalar Scalar;
  type typename (line 558) | typedef typename NumTraits<Scalar>::Real RealScalar;
  function Index (line 587) | inline Index stride() const
  function EIGEN_DEVICE_FUNC (line 606) | EIGEN_DEVICE_FUNC
  function Index (line 639) | inline Index first_aligned(const DenseBase<Derived>& m)
  function Index (line 646) | inline Index first_default_aligned(const DenseBase<Derived>& m)

FILE: deps/eigen/Eigen/src/Core/DenseStorage.h
  function namespace (line 21) | namespace Eigen {
  function EIGEN_DEVICE_FUNC (line 125) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 132) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 144) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 151) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 162) | EIGEN_DEVICE_FUNC plain_array() {}
  function EIGEN_DEVICE_FUNC (line 163) | EIGEN_DEVICE_FUNC plain_array(constructor_without_unaligned_array_assert...
  function EIGEN_DEVICE_FUNC (line 193) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 203) | EIGEN_DEVICE_FUNC DenseStorage(Index size, Index rows, Index cols) {
  function EIGEN_DEVICE_FUNC (line 211) | EIGEN_DEVICE_FUNC static Index rows(void) {return _Rows;}
  function EIGEN_DEVICE_FUNC (line 212) | EIGEN_DEVICE_FUNC static Index cols(void) {return _Cols;}
  function EIGEN_DEVICE_FUNC (line 213) | EIGEN_DEVICE_FUNC void conservativeResize(Index,Index,Index) {}
  function EIGEN_DEVICE_FUNC (line 214) | EIGEN_DEVICE_FUNC void resize(Index,Index,Index) {}
  function EIGEN_DEVICE_FUNC (line 215) | EIGEN_DEVICE_FUNC const T *data() const { return m_data.array; }
  function EIGEN_DEVICE_FUNC (line 216) | EIGEN_DEVICE_FUNC T *data() { return m_data.array; }
  function EIGEN_DEVICE_FUNC (line 223) | EIGEN_DEVICE_FUNC DenseStorage() {}
  function EIGEN_DEVICE_FUNC (line 224) | EIGEN_DEVICE_FUNC explicit DenseStorage(internal::constructor_without_un...
  function EIGEN_DEVICE_FUNC (line 225) | EIGEN_DEVICE_FUNC DenseStorage(const DenseStorage&) {}
  function EIGEN_DEVICE_FUNC (line 227) | EIGEN_DEVICE_FUNC DenseStorage(Index,Index,Index) {}
  function EIGEN_DEVICE_FUNC (line 268) | EIGEN_DEVICE_FUNC DenseStorage(Index, Index rows, Index cols) : m_rows(r...
  function EIGEN_DEVICE_FUNC (line 273) | EIGEN_DEVICE_FUNC void conservativeResize(Index, Index rows, Index cols)...
  function EIGEN_DEVICE_FUNC (line 274) | EIGEN_DEVICE_FUNC void resize(Index, Index rows, Index cols) { m_rows = ...
  function EIGEN_DEVICE_FUNC (line 275) | EIGEN_DEVICE_FUNC const T *data() const { return m_data.array; }
  function EIGEN_DEVICE_FUNC (line 276) | EIGEN_DEVICE_FUNC T *data() { return m_data.array; }
  function EIGEN_DEVICE_FUNC (line 286) | EIGEN_DEVICE_FUNC explicit DenseStorage(internal::constructor_without_un...
  function EIGEN_DEVICE_FUNC (line 288) | EIGEN_DEVICE_FUNC DenseStorage(const DenseStorage& other) : m_data(other...
  function EIGEN_DEVICE_FUNC (line 298) | EIGEN_DEVICE_FUNC DenseStorage(Index, Index rows, Index) : m_rows(rows) {}
  function EIGEN_DEVICE_FUNC (line 300) | EIGEN_DEVICE_FUNC Index rows(void) const {return m_rows;}
  function EIGEN_DEVICE_FUNC (line 301) | EIGEN_DEVICE_FUNC Index cols(void) const {return _Cols;}
  function EIGEN_DEVICE_FUNC (line 302) | EIGEN_DEVICE_FUNC void conservativeResize(Index, Index rows, Index) { m_...
  function EIGEN_DEVICE_FUNC (line 303) | EIGEN_DEVICE_FUNC void resize(Index, Index rows, Index) { m_rows = rows; }
  function EIGEN_DEVICE_FUNC (line 304) | EIGEN_DEVICE_FUNC const T *data() const { return m_data.array; }
  function EIGEN_DEVICE_FUNC (line 305) | EIGEN_DEVICE_FUNC T *data() { return m_data.array; }
  function EIGEN_DEVICE_FUNC (line 315) | EIGEN_DEVICE_FUNC explicit DenseStorage(internal::constructor_without_un...
  function EIGEN_DEVICE_FUNC (line 317) | EIGEN_DEVICE_FUNC DenseStorage(const DenseStorage& other) : m_data(other...
  function EIGEN_DEVICE_FUNC (line 327) | EIGEN_DEVICE_FUNC DenseStorage(Index, Index, Index cols) : m_cols(cols) {}
  function EIGEN_DEVICE_FUNC (line 329) | EIGEN_DEVICE_FUNC Index rows(void) const {return _Rows;}
  function EIGEN_DEVICE_FUNC (line 330) | EIGEN_DEVICE_FUNC Index cols(void) const {return m_cols;}
  function conservativeResize (line 331) | void conservativeResize(Index, Index, Index cols) { m_cols = cols; }
  function resize (line 332) | void resize(Index, Index, Index cols) { m_cols = cols; }
  function EIGEN_DEVICE_FUNC (line 333) | EIGEN_DEVICE_FUNC const T *data() const { return m_data.array; }
  function EIGEN_DEVICE_FUNC (line 334) | EIGEN_DEVICE_FUNC T *data() { return m_data.array; }
  function EIGEN_DEVICE_FUNC (line 391) | EIGEN_DEVICE_FUNC ~DenseStorage() { internal::conditional_aligned_delete...
  function EIGEN_DEVICE_FUNC (line 394) | EIGEN_DEVICE_FUNC Index rows(void) const {return m_rows;}
  function EIGEN_DEVICE_FUNC (line 395) | EIGEN_DEVICE_FUNC Index cols(void) const {return m_cols;}
  function conservativeResize (line 396) | void conservativeResize(Index size, Index rows, Index cols)
  function EIGEN_DEVICE_FUNC (line 402) | EIGEN_DEVICE_FUNC void resize(Index size, Index rows, Index cols)
  function EIGEN_DEVICE_FUNC (line 416) | EIGEN_DEVICE_FUNC const T *data() const { return m_data; }
  function EIGEN_DEVICE_FUNC (line 417) | EIGEN_DEVICE_FUNC T *data() { return m_data; }
  function explicit (line 427) | explicit DenseStorage(internal::constructor_without_unaligned_array_asse...
  function EIGEN_DEVICE_FUNC (line 428) | EIGEN_DEVICE_FUNC DenseStorage(Index size, Index rows, Index cols) : m_d...
  function EIGEN_DEVICE_FUNC (line 434) | EIGEN_DEVICE_FUNC DenseStorage(const DenseStorage& other)
  function EIGEN_DEVICE_FUNC (line 451) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 468) | EIGEN_DEVICE_FUNC ~DenseStorage() { internal::conditional_aligned_delete...
  function EIGEN_DEVICE_FUNC (line 470) | EIGEN_DEVICE_FUNC static Index rows(void) {return _Rows;}
  function EIGEN_DEVICE_FUNC (line 471) | EIGEN_DEVICE_FUNC Index cols(void) const {return m_cols;}
  function EIGEN_DEVICE_FUNC (line 472) | EIGEN_DEVICE_FUNC void conservativeResize(Index size, Index, Index cols)
  function resize (line 477) | void resize(Index size, Index, Index cols)
  function EIGEN_DEVICE_FUNC (line 490) | EIGEN_DEVICE_FUNC const T *data() const { return m_data; }
  function EIGEN_DEVICE_FUNC (line 491) | EIGEN_DEVICE_FUNC T *data() { return m_data; }
  function explicit (line 501) | explicit DenseStorage(internal::constructor_without_unaligned_array_asse...
  function EIGEN_DEVICE_FUNC (line 502) | EIGEN_DEVICE_FUNC DenseStorage(Index size, Index rows, Index cols) : m_d...
  function EIGEN_DEVICE_FUNC (line 508) | EIGEN_DEVICE_FUNC DenseStorage(const DenseStorage& other)
  function EIGEN_DEVICE_FUNC (line 525) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 542) | EIGEN_DEVICE_FUNC ~DenseStorage() { internal::conditional_aligned_delete...
  function EIGEN_DEVICE_FUNC (line 544) | EIGEN_DEVICE_FUNC Index rows(void) const {return m_rows;}
  function EIGEN_DEVICE_FUNC (line 545) | EIGEN_DEVICE_FUNC static Index cols(void) {return _Cols;}
  function conservativeResize (line 546) | void conservativeResize(Index size, Index rows, Index)
  function resize (line 551) | void resize(Index size, Index rows, Index)
  function EIGEN_DEVICE_FUNC (line 564) | EIGEN_DEVICE_FUNC const T *data() const { return m_data; }
  function EIGEN_DEVICE_FUNC (line 565) | EIGEN_DEVICE_FUNC T *data() { return m_data; }

FILE: deps/eigen/Eigen/src/Core/Diagonal.h
  function namespace (line 14) | namespace Eigen {
  type typename (line 69) | typedef typename internal::dense_xpr_base<Diagonal>::type Base;
  function explicit (line 73) | explicit inline Diagonal(MatrixType& matrix, Index a_index = DiagIndex) ...
  type typename (line 102) | typedef typename internal::conditional<
  function EIGEN_DEVICE_FUNC (line 108) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 110) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 113) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 120) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 126) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 132) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 139) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 145) | EIGEN_DEVICE_FUNC

FILE: deps/eigen/Eigen/src/Core/DiagonalMatrix.h
  function namespace (line 14) | namespace Eigen {
  function EIGEN_DEVICE_FUNC (line 138) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 142) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 146) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 150) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 154) | EIGEN_DEVICE_FUNC
  function m_diagonal (line 160) | inline DiagonalMatrix(const DiagonalBase<OtherDerived>& other) : m_diago...
  function m_diagonal (line 164) | inline DiagonalMatrix(const DiagonalMatrix& other) : m_diagonal(other.di...
  function explicit (line 170) | explicit inline DiagonalMatrix(const MatrixBase<OtherDerived>& other) : ...
  function EIGEN_DEVICE_FUNC (line 195) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 198) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 201) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 204) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 207) | EIGEN_DEVICE_FUNC
  function namespace (line 225) | namespace internal {
  type _DiagonalVectorType (line 250) | typedef _DiagonalVectorType DiagonalVectorType;
  type DiagonalWrapper (line 251) | typedef DiagonalWrapper Nested;
  function m_diagonal (line 256) | inline DiagonalWrapper(DiagonalVectorType& a_diagonal) : m_diagonal(a_di...
  function namespace (line 309) | namespace internal {
  function run (line 335) | static void run(DstXprType &dst, const SrcXprType &src, const internal::...

FILE: deps/eigen/Eigen/src/Core/DiagonalProduct.h
  function namespace (line 14) | namespace Eigen {

FILE: deps/eigen/Eigen/src/Core/Dot.h
  function namespace (line 13) | namespace Eigen {
  type internal (line 78) | typedef internal::scalar_conj_product_op<Scalar,typename
  type typename (line 126) | typedef typename internal::nested_eval<Derived,2>::type _Nested;
  type typename (line 169) | typedef typename internal::nested_eval<Derived,3>::type _Nested;
  function namespace (line 201) | namespace internal {

FILE: deps/eigen/Eigen/src/Core/EigenBase.h
  function namespace (line 14) | namespace Eigen {
  function evalTo (line 71) | inline void evalTo(Dest& dst) const
  function addTo (line 77) | inline void addTo(Dest& dst) const
  function subTo (line 89) | inline void subTo(Dest& dst) const
  function applyThisOnTheRight (line 100) | inline void applyThisOnTheRight(Dest& dst) const
  function applyThisOnTheLeft (line 109) | inline void applyThisOnTheLeft(Dest& dst) const

FILE: deps/eigen/Eigen/src/Core/ForceAlignedAccess.h
  function namespace (line 13) | namespace Eigen {

FILE: deps/eigen/Eigen/src/Core/Fuzzy.h
  function namespace (line 14) | namespace Eigen {
  function typename (line 65) | typename Derived::RealScalar& prec)
  function EIGEN_DEVICE_FUNC (line 74) | EIGEN_DEVICE_FUNC

FILE: deps/eigen/Eigen/src/Core/GeneralProduct.h
  function namespace (line 14) | namespace Eigen {
  type product_type_selector (line 93) | struct product_type_selector
  type product_type_selector (line 94) | struct product_type_selector
  type product_type_selector (line 95) | struct product_type_selector
  type product_type_selector (line 96) | struct product_type_selector
  type product_type_selector (line 97) | struct product_type_selector
  type product_type_selector (line 98) | struct product_type_selector
  type product_type_selector (line 99) | struct product_type_selector
  type product_type_selector (line 100) | struct product_type_selector
  type product_type_selector (line 101) | struct product_type_selector
  type product_type_selector (line 102) | struct product_type_selector
  type product_type_selector (line 103) | struct product_type_selector
  type product_type_selector (line 104) | struct product_type_selector
  type product_type_selector (line 105) | struct product_type_selector
  type product_type_selector (line 106) | struct product_type_selector
  type product_type_selector (line 107) | struct product_type_selector
  type product_type_selector (line 108) | struct product_type_selector
  type product_type_selector (line 109) | struct product_type_selector
  type product_type_selector (line 110) | struct product_type_selector
  type product_type_selector (line 111) | struct product_type_selector
  type product_type_selector (line 112) | struct product_type_selector
  function namespace (line 142) | namespace internal {
  function namespace (line 149) | namespace internal {
  function EIGEN_STRONG_INLINE (line 174) | EIGEN_STRONG_INLINE Scalar* data() { return m_data.array; }
  function EIGEN_STRONG_INLINE (line 179) | EIGEN_STRONG_INLINE Scalar* data() {
  type gemv_dense_selector (line 201) | struct gemv_dense_selector
  function run (line 204) | inline void run(const Lhs &lhs, const Rhs &rhs, Dest& dest, const typena...
  type gemv_dense_selector (line 295) | struct gemv_dense_selector
  function run (line 298) | void run(const Lhs &lhs, const Rhs &rhs, Dest& dest, const typename Dest...
  type gemv_dense_selector (line 348) | struct gemv_dense_selector
  function run (line 351) | void run(const Lhs &lhs, const Rhs &rhs, Dest& dest, const typename Dest...
  type gemv_dense_selector (line 362) | struct gemv_dense_selector
  function run (line 365) | void run(const Lhs &lhs, const Rhs &rhs, Dest& dest, const typename Dest...

FILE: deps/eigen/Eigen/src/Core/GenericPacketMath.h
  function namespace (line 14) | namespace Eigen {
  function ptranspose (line 540) | inline void
  function Packet (line 553) | inline Packet
  function Packet (line 559) | inline Packet
  function Packet (line 573) | inline Packet

FILE: deps/eigen/Eigen/src/Core/GlobalFunctions.h
  function namespace (line 54) | namespace Eigen

FILE: deps/eigen/Eigen/src/Core/Inverse.h
  function namespace (line 13) | namespace Eigen {
  type typename (line 74) | typedef typename XprType::Scalar Scalar;
  function namespace (line 81) | namespace internal {

FILE: deps/eigen/Eigen/src/Core/Map.h
  function namespace (line 14) | namespace Eigen {
  type PointerType (line 103) | typedef PointerType PointerArgType;
  function EIGEN_DEVICE_FUNC (line 104) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 107) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 128) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 141) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 155) | EIGEN_DEVICE_FUNC

FILE: deps/eigen/Eigen/src/Core/MapBase.h
  function namespace (line 18) | namespace Eigen {
  type typename (line 229) | typedef typename Base::Scalar Scalar;
  type typename (line 230) | typedef typename Base::PacketScalar PacketScalar;
  type typename (line 231) | typedef typename Base::StorageIndex StorageIndex;
  type typename (line 232) | typedef typename Base::PointerType PointerType;
  type typename (line 246) | typedef typename internal::conditional<
  function EIGEN_DEVICE_FUNC (line 252) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 254) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 257) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 263) | EIGEN_DEVICE_FUNC
  function writePacket (line 271) | void writePacket(Index row, Index col, const PacketScalar& val)
  function writePacket (line 278) | void writePacket(Index index, const PacketScalar& val)
  function EIGEN_DEVICE_FUNC (line 285) | EIGEN_DEVICE_FUNC explicit inline MapBase(PointerType dataPtr) : Base(da...
  function EIGEN_DEVICE_FUNC (line 286) | EIGEN_DEVICE_FUNC inline MapBase(PointerType dataPtr, Index vecSize) : B...
  function EIGEN_DEVICE_FUNC (line 287) | EIGEN_DEVICE_FUNC inline MapBase(PointerType dataPtr, Index rows, Index ...

FILE: deps/eigen/Eigen/src/Core/MathFunctions.h
  function namespace (line 18) | namespace Eigen {
  type Scalar (line 552) | typedef Scalar type;
  function Scalar (line 565) | static inline Scalar run()
  type typename (line 626) | typedef typename make_unsigned<Scalar>::type ScalarU;
  type typename (line 630) | typedef typename conditional<(ScalarU(-1) > unsigned(-1)), ScalarU, unsi...
  function Scalar (line 648) | static inline Scalar run()
  function Scalar (line 671) | static inline Scalar run()
  function isinf_impl (line 731) | bool>::type
  function isinf_msvc_helper (line 763) | bool isinf_msvc_helper(T x)
  function EIGEN_DEVICE_FUNC (line 769) | EIGEN_DEVICE_FUNC inline bool isnan_impl(const long double& x) { return ...
  function EIGEN_DEVICE_FUNC (line 770) | EIGEN_DEVICE_FUNC inline bool isnan_impl(const double& x)      { return ...
  function EIGEN_DEVICE_FUNC (line 771) | EIGEN_DEVICE_FUNC inline bool isnan_impl(const float& x)       { return ...
  function EIGEN_DEVICE_FUNC (line 773) | EIGEN_DEVICE_FUNC inline bool isinf_impl(const long double& x) { return ...
  function EIGEN_DEVICE_FUNC (line 774) | EIGEN_DEVICE_FUNC inline bool isinf_impl(const double& x)      { return ...
  function EIGEN_DEVICE_FUNC (line 775) | EIGEN_DEVICE_FUNC inline bool isinf_impl(const float& x)       { return ...
  function isnan_impl (line 787) | bool isnan_impl(const long double& x) { return __builtin_isnan(x); }
  function isnan_impl (line 788) | bool isnan_impl(const double& x)      { return __builtin_isnan(x); }
  function isnan_impl (line 789) | bool isnan_impl(const float& x)       { return __builtin_isnan(x); }
  function isinf_impl (line 790) | bool isinf_impl(const double& x)      { return __builtin_isinf(x); }
  function isinf_impl (line 791) | bool isinf_impl(const float& x)       { return __builtin_isinf(x); }
  function isinf_impl (line 792) | bool isinf_impl(const long double& x) { return __builtin_isinf(x); }
  function namespace (line 813) | namespace numext {
  function floor (line 982) | float floor(const float &x) { return ::floorf(x); }
  function floor (line 985) | double floor(const double &x) { return ::floor(x); }
  function ceil (line 998) | float ceil(const float &x) { return ::ceilf(x); }
  function ceil (line 1001) | double ceil(const double &x) { return ::ceil(x); }
  function log2 (line 1007) | inline int log2(int x)
  function log (line 1046) | float log(const float &x) { return ::logf(x); }
  function log (line 1049) | double log(const double &x) { return ::log(x); }
  function typename (line 1062) | typename NumTraits<T>::Real>::type
  function EIGEN_ALWAYS_INLINE (line 1068) | EIGEN_ALWAYS_INLINE float   abs(float x) { return cl::sycl::fabs(x); }
  function EIGEN_ALWAYS_INLINE (line 1069) | EIGEN_ALWAYS_INLINE double  abs(double x) { return cl::sycl::fabs(x); }
  function abs (line 1074) | float abs(const float &x) { return ::fabsf(x); }
  function abs (line 1077) | double abs(const double &x) { return ::fabs(x); }
  function exp (line 1099) | float exp(const float &x) { return ::expf(x); }
  function exp (line 1102) | double exp(const double &x) { return ::exp(x); }
  function cos (line 1114) | float cos(const float &x) { return ::cosf(x); }
  function cos (line 1117) | double cos(const double &x) { return ::cos(x); }
  function sin (line 1129) | float sin(const float &x) { return ::sinf(x); }
  function sin (line 1132) | double sin(const double &x) { return ::sin(x); }
  function tan (line 1144) | float tan(const float &x) { return ::tanf(x); }
  function tan (line 1147) | double tan(const double &x) { return ::tan(x); }
  function acos (line 1159) | float acos(const float &x) { return ::acosf(x); }
  function acos (line 1162) | double acos(const double &x) { return ::acos(x); }
  function asin (line 1174) | float asin(const float &x) { return ::asinf(x); }
  function asin (line 1177) | double asin(const double &x) { return ::asin(x); }
  function atan (line 1189) | float atan(const float &x) { return ::atanf(x); }
  function atan (line 1192) | double atan(const double &x) { return ::atan(x); }
  function cosh (line 1205) | float cosh(const float &x) { return ::coshf(x); }
  function cosh (line 1208) | double cosh(const double &x) { return ::cosh(x); }
  function sinh (line 1220) | float sinh(const float &x) { return ::sinhf(x); }
  function sinh (line 1223) | double sinh(const double &x) { return ::sinh(x); }
  function tanh (line 1235) | float tanh(float x) { return internal::generic_fast_tanh_float(x); }
  function tanh (line 1240) | float tanh(const float &x) { return ::tanhf(x); }
  function tanh (line 1243) | double tanh(const double &x) { return ::tanh(x); }
  function fmod (line 1256) | float fmod(const float& a, const float& b) {
  function fmod (line 1262) | double fmod(const double& a, const double& b) {
  function namespace (line 1269) | namespace internal {
  type typename (line 1322) | typedef typename NumTraits<Scalar>::Real RealScalar;
  function isMuchSmallerThan (line 1324) | static inline bool isMuchSmallerThan(const Scalar& x, const Scalar&, con...
  function EIGEN_DEVICE_FUNC (line 1328) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 1333) | EIGEN_DEVICE_FUNC
  type typename (line 1343) | typedef typename NumTraits<Scalar>::Real RealScalar;
  function isMuchSmallerThan (line 1345) | static inline bool isMuchSmallerThan(const Scalar& x, const OtherScalar&...
  function EIGEN_DEVICE_FUNC (line 1349) | EIGEN_DEVICE_FUNC
  function isMuchSmallerThan (line 1360) | bool isMuchSmallerThan(const Scalar& x, const OtherScalar& y,
  function isApprox (line 1367) | bool isApprox(const Scalar& x, const Scalar& y,
  function isApproxOrLessThan (line 1374) | bool isApproxOrLessThan(const Scalar& x, const Scalar& y,
  function bool (line 1384) | struct random_impl<bool>
  function bool (line 1392) | struct scalar_fuzzy_impl<bool>

FILE: deps/eigen/Eigen/src/Core/MathFunctionsImpl.h
  function namespace (line 14) | namespace Eigen {

FILE: deps/eigen/Eigen/src/Core/Matrix.h
  function namespace (line 14) | namespace Eigen {
  type PlainObjectBase (line 186) | typedef PlainObjectBase<Matrix> Base;
  function explicit (line 267) | explicit Matrix(internal::constructor_without_unaligned_array_assert)
  function EIGEN_DEVICE_FUNC (line 272) | EIGEN_DEVICE_FUNC
  function EIGEN_STRONG_INLINE (line 291) | EIGEN_STRONG_INLINE explicit Matrix(const T& x)
  function EIGEN_STRONG_INLINE (line 299) | EIGEN_STRONG_INLINE Matrix(const T0& x, const T1& y)
  function Base (line 368) | Matrix(const Matrix& other) : Base(other)
  function EIGEN_STRONG_INLINE (line 376) | EIGEN_STRONG_INLINE Matrix(const EigenBase<OtherDerived> &other)
  type internal (line 399) | struct internal

FILE: deps/eigen/Eigen/src/Core/MatrixBase.h
  function namespace (line 14) | namespace Eigen {

FILE: deps/eigen/Eigen/src/Core/NestByValue.h
  function namespace (line 14) | namespace Eigen {

FILE: deps/eigen/Eigen/src/Core/NoAlias.h
  function namespace (line 13) | namespace Eigen {

FILE: deps/eigen/Eigen/src/Core/NumTraits.h
  function namespace (line 13) | namespace Eigen {
  type T (line 100) | typedef T Real;
  type typename (line 101) | typedef typename internal::conditional<
  type T (line 106) | typedef T Nested;
  type T (line 107) | typedef T Literal;
  function EIGEN_DEVICE_FUNC (line 109) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 115) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 121) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 129) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 134) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 139) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 144) | EIGEN_DEVICE_FUNC
  type NumTraits (line 153) | struct NumTraits
  function EIGEN_DEVICE_FUNC (line 156) | EIGEN_DEVICE_FUNC
  type NumTraits (line 160) | struct NumTraits
  function EIGEN_DEVICE_FUNC (line 162) | EIGEN_DEVICE_FUNC
  type NumTraits (line 166) | struct NumTraits
  function dummy_precision (line 169) | static inline long double dummy_precision() { return 1e-15l; }
  type _Real (line 175) | typedef _Real Real;
  type typename (line 176) | typedef typename NumTraits<_Real>::Literal Literal;
  function EIGEN_DEVICE_FUNC (line 185) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 187) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 189) | EIGEN_DEVICE_FUNC
  type typename (line 197) | typedef typename NumTraits<Scalar>::Real RealScalar;
  type Array (line 198) | typedef Array<RealScalar, Rows, Cols, Options, MaxRows, MaxCols> Real;
  type typename (line 199) | typedef typename NumTraits<Scalar>::NonInteger NonIntegerScalar;
  type Array (line 200) | typedef Array<NonIntegerScalar, Rows, Cols, Options, MaxRows, MaxCols> N...
  type ArrayType (line 201) | typedef ArrayType & Nested;
  type typename (line 202) | typedef typename NumTraits<Scalar>::Literal Literal;
  function EIGEN_DEVICE_FUNC (line 214) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 216) | EIGEN_DEVICE_FUNC
  function digits10 (line 219) | static inline int digits10() { return NumTraits<Scalar>::digits10(); }
  function string (line 222) | struct NumTraits<std::string>
  function void (line 244) | struct NumTraits<void> {}

FILE: deps/eigen/Eigen/src/Core/PermutationMatrix.h
  function namespace (line 14) | namespace Eigen {
  function namespace (line 282) | namespace internal {
  type internal (line 311) | typedef internal::traits<PermutationMatrix> Traits;
  type typename (line 317) | typedef typename Traits::IndicesType IndicesType;
  type typename (line 318) | typedef typename Traits::StorageIndex StorageIndex;
  function explicit (line 326) | explicit inline PermutationMatrix(Index size) : m_indices(size)
  function m_indices (line 339) | inline PermutationMatrix(const PermutationMatrix& other) : m_indices(oth...
  function m_indices (line 350) | inline PermutationMatrix(const MatrixBase<Other>& indices) : m_indices(i...
  function namespace (line 419) | namespace internal {
  type internal (line 436) | typedef internal::traits<Map> Traits;
  type typename (line 440) | typedef typename Traits::IndicesType IndicesType;
  type typename (line 441) | typedef typename IndicesType::Scalar StorageIndex;
  function m_indices (line 444) | inline Map(const StorageIndex* indicesPtr)
  function namespace (line 484) | namespace internal {
  type internal (line 517) | typedef internal::traits<PermutationWrapper> Traits;
  type typename (line 521) | typedef typename Traits::IndicesType IndicesType;
  function m_indices (line 524) | inline PermutationWrapper(const IndicesType& indices)
  type internal (line 568) | typedef internal::traits<PermutationType> PermTraits;
  type typename (line 576) | typedef typename PermutationType::DenseMatrixType DenseMatrixType;
  function namespace (line 625) | namespace internal {

FILE: deps/eigen/Eigen/src/Core/PlainObjectBase.h
  function namespace (line 25) | namespace Eigen {
  function Scalar (line 160) | const Scalar& coeff(Index rowId, Index colId) const
  function Scalar (line 173) | const Scalar& coeff(Index index) const
  function Scalar (line 204) | const Scalar& coeffRef(Index rowId, Index colId) const
  function Scalar (line 215) | const Scalar& coeffRef(Index index) const
  function PacketScalar (line 222) | PacketScalar packet(Index rowId, Index colId) const
  function PacketScalar (line 232) | PacketScalar packet(Index index) const
  function writePacket (line 239) | void writePacket(Index rowId, Index colId, const PacketScalar& val)
  function writePacket (line 249) | void writePacket(Index index, const PacketScalar& val)
  function Scalar (line 255) | const Scalar *data() const
  function Scalar (line 259) | Scalar *data()
  function resize (line 279) | void resize(Index rows, Index cols)
  function EIGEN_DEVICE_FUNC (line 308) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 333) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 347) | EIGEN_DEVICE_FUNC
  function conservativeResize (line 390) | void conservativeResize(Index rows, Index cols)
  function conservativeResize (line 403) | void conservativeResize(Index rows, NoChange_t)
  function conservativeResize (line 417) | void conservativeResize(NoChange_t, Index cols)
  function conservativeResize (line 432) | void conservativeResize(Index size)
  function EIGEN_DEVICE_FUNC (line 493) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 502) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 521) | EIGEN_DEVICE_FUNC
  function EIGEN_STRONG_INLINE (line 532) | EIGEN_STRONG_INLINE PlainObjectBase(const DenseBase<OtherDerived> &other)
  function EIGEN_STRONG_INLINE (line 543) | EIGEN_STRONG_INLINE PlainObjectBase(const EigenBase<OtherDerived> &other)
  function EIGEN_STRONG_INLINE (line 553) | EIGEN_STRONG_INLINE PlainObjectBase(const ReturnByValue<OtherDerived>& o...
  function ConstMapType (line 587) | static inline ConstMapType Map(const Scalar* data)
  function MapType (line 589) | static inline MapType Map(Scalar* data)
  function ConstMapType (line 591) | static inline ConstMapType Map(const Scalar* data, Index size)
  function MapType (line 593) | static inline MapType Map(Scalar* data, Index size)
  function ConstMapType (line 595) | static inline ConstMapType Map(const Scalar* data, Index rows, Index cols)
  function MapType (line 597) | static inline MapType Map(Scalar* data, Index rows, Index cols)
  function ConstAlignedMapType (line 600) | static inline ConstAlignedMapType MapAligned(const Scalar* data)
  function AlignedMapType (line 602) | static inline AlignedMapType MapAligned(Scalar* data)
  function ConstAlignedMapType (line 604) | static inline ConstAlignedMapType MapAligned(const Scalar* data, Index s...
  function AlignedMapType (line 606) | static inline AlignedMapType MapAligned(Scalar* data, Index size)
  function ConstAlignedMapType (line 608) | static inline ConstAlignedMapType MapAligned(const Scalar* data, Index r...
  function AlignedMapType (line 610) | static inline AlignedMapType MapAligned(Scalar* data, Index rows, Index ...
  function _init2 (line 759) | void _init2(const Index& val0, const Index& val1,
  function _init1 (line 797) | void _init1(const Index& val0,
  function _init1 (line 810) | void _init1(const Scalar* data){
  function _init1 (line 824) | void _init1(const Derived& other){
  function EIGEN_STRONG_INLINE (line 845) | EIGEN_STRONG_INLINE void _init1(const RotationBase<OtherDerived,ColsAtCo...

FILE: deps/eigen/Eigen/src/Core/Product.h
  function namespace (line 13) | namespace Eigen {
  type _Rhs (line 79) | typedef _Rhs Rhs;
  type typename (line 81) | typedef typename ProductImpl<
  type typename (line 89) | typedef typename internal::ref_selector<Rhs>::type RhsNested;
  type typename (line 90) | typedef typename internal::remove_all<LhsNested>::type LhsNestedCleaned;
  type typename (line 91) | typedef typename internal::remove_all<RhsNested>::type RhsNestedCleaned;
  function EIGEN_DEVICE_FUNC (line 93) | EIGEN_DEVICE_FUNC Product(const Lhs& lhs, const Rhs& rhs) : m_lhs(lhs), ...
  function namespace (line 112) | namespace internal {

FILE: deps/eigen/Eigen/src/Core/ProductEvaluators.h
  function namespace (line 16) | namespace Eigen {
  type evaluator (line 56) | typedef evaluator<Product<EIGEN_SCALAR_BINARYOP_EXPR_RETURN_TYPE(Scalar1...
  function explicit (line 58) | explicit evaluator(const XprType& xpr)
  type evaluator (line 69) | typedef evaluator<Diagonal<const Product<Lhs, Rhs, LazyProduct>, DiagInd...
  function explicit (line 71) | explicit evaluator(const XprType& xpr)
  type typename (line 100) | typedef typename XprType::PlainObject PlainObject;
  type evaluator (line 101) | typedef evaluator<PlainObject> Base;
  function explicit (line 107) | explicit product_evaluator(const XprType& xpr)
  type Product (line 157) | typedef Product<Lhs,Rhs,Options> SrcXprType;
  type Product (line 172) | typedef Product<Lhs,Rhs,Options> SrcXprType;
  type CwiseBinaryOp (line 190) | typedef CwiseBinaryOp<internal::scalar_product_op<ScalarBis,Scalar>,
  function addTo (line 255) | void addTo(Dst& dst, const Lhs& lhs, const Rhs& rhs)
  function subTo (line 261) | void subTo(Dst& dst, const Lhs& lhs, const Rhs& rhs)
  type typename (line 515) | typedef typename find_best_packet<Scalar,RowsAtCompileTime>::type LhsVec...
  type typename (line 516) | typedef typename find_best_packet<Scalar,ColsAtCompileTime>::type RhsVec...
  function CoeffReturnType (line 576) | const CoeffReturnType coeff(Index row, Index col) const
  function EIGEN_DEVICE_FUNC (line 585) | EIGEN_DEVICE_FUNC const CoeffReturnType coeff(Index index) const
  function PacketType (line 593) | PacketType packet(Index row, Index col) const
  function PacketType (line 604) | PacketType packet(Index index) const
  type Product (line 626) | typedef Product<Lhs, Rhs, DefaultProduct> XprType;
  type Product (line 627) | typedef Product<Lhs, Rhs, LazyProduct> BaseProduct;
  type product_evaluator (line 628) | typedef product_evaluator<BaseProduct, CoeffBasedProductMode, DenseShape...
  function EIGEN_DEVICE_FUNC (line 632) | EIGEN_DEVICE_FUNC explicit product_evaluator(const XprType& xpr)
  function EIGEN_STRONG_INLINE (line 644) | static EIGEN_STRONG_INLINE void run(Index row, Index col, const Lhs& lhs...
  function EIGEN_STRONG_INLINE (line 654) | static EIGEN_STRONG_INLINE void run(Index row, Index col, const Lhs& lhs...
  function EIGEN_STRONG_INLINE (line 664) | static EIGEN_STRONG_INLINE void run(Index row, Index col, const Lhs& lhs...
  function EIGEN_STRONG_INLINE (line 673) | static EIGEN_STRONG_INLINE void run(Index row, Index col, const Lhs& lhs...
  function EIGEN_STRONG_INLINE (line 682) | static EIGEN_STRONG_INLINE void run(Index /*row*/, Index /*col*/, const ...
  function EIGEN_STRONG_INLINE (line 691) | static EIGEN_STRONG_INLINE void run(Index /*row*/, Index /*col*/, const ...
  function EIGEN_STRONG_INLINE (line 700) | static EIGEN_STRONG_INLINE void run(Index row, Index col, const Lhs& lhs...
  function EIGEN_STRONG_INLINE (line 711) | static EIGEN_STRONG_INLINE void run(Index row, Index col, const Lhs& lhs...
  type typename (line 732) | typedef typename Product<Lhs,Rhs>::Scalar Scalar;
  type typename (line 746) | typedef typename Product<Lhs,Rhs>::Scalar Scalar;
  type typename (line 767) | typedef typename Product<Lhs,Rhs>::Scalar Scalar;
  type typename (line 780) | typedef typename Product<Lhs,Rhs>::Scalar Scalar;
  type typename (line 798) | typedef typename ScalarBinaryOpTraits<typename MatrixType::Scalar, typename
  function PacketType (line 838) | PacketType packet_impl(Index row, Index col, Index id, internal::true_ty...
  function PacketType (line 845) | PacketType packet_impl(Index row, Index col, Index id, internal::false_t...
  type typename (line 868) | typedef typename Base::Scalar Scalar;
  type Product (line 870) | typedef Product<Lhs, Rhs, ProductKind> XprType;
  type typename (line 871) | typedef typename XprType::PlainObject PlainObject;
  function EIGEN_DEVICE_FUNC (line 877) | EIGEN_DEVICE_FUNC explicit product_evaluator(const XprType& xpr)
  function Scalar (line 882) | const Scalar coeff(Index row, Index col) const
  function PacketType (line 889) | PacketType packet(Index row, Index col) const
  function PacketType (line 898) | PacketType packet(Index idx) const
  type typename (line 914) | typedef typename Base::Scalar Scalar;
  type Product (line 916) | typedef Product<Lhs, Rhs, ProductKind> XprType;
  type typename (line 917) | typedef typename XprType::PlainObject PlainObject;
  function EIGEN_DEVICE_FUNC (line 921) | EIGEN_DEVICE_FUNC explicit product_evaluator(const XprType& xpr)
  function Scalar (line 926) | const Scalar coeff(Index row, Index col) const
  function PacketType (line 933) | PacketType packet(Index row, Index col) const
  function PacketType (line 940) | PacketType packet(Index idx) const
  type typename (line 963) | typedef typename remove_all<MatrixType>::type MatrixTypeCleaned;
  function run (line 966) | inline void run(Dest& dst, const PermutationType& perm, const Expression...
  type typename (line 1070) | typedef typename nested_eval<ExpressionType, 1>::type MatrixType;
  type typename (line 1071) | typedef typename remove_all<MatrixType>::type MatrixTypeCleaned;
  function run (line 1074) | inline void run(Dest& dst, const TranspositionType& tr, const Expression...

FILE: deps/eigen/Eigen/src/Core/Random.h
  function namespace (line 15) | namespace internal {

FILE: deps/eigen/Eigen/src/Core/Redux.h
  function namespace (line 14) | namespace Eigen {
  type typename (line 145) | typedef typename Derived::Scalar Scalar;
  type typename (line 146) | typedef typename redux_traits<Func, Derived>::PacketType PacketScalar;
  type typename (line 166) | typedef typename Derived::Scalar Scalar;
  type typename (line 167) | typedef typename redux_traits<Func, Derived>::PacketType PacketScalar;
  function Scalar (line 190) | Scalar run(const Derived &mat, const Func& func)
  type typename (line 213) | typedef typename redux_traits<Func, Derived>::PacketType PacketScalar;
  function Scalar (line 215) | static Scalar run(const Derived &mat, const Func& func)
  type typename (line 272) | typedef typename redux_traits<Func, Derived>::PacketType PacketType;
  function EIGEN_DEVICE_FUNC (line 274) | EIGEN_DEVICE_FUNC static Scalar run(const Derived &mat, const Func& func)
  type typename (line 311) | typedef typename redux_traits<Func, Derived>::PacketType PacketScalar;
  function Scalar (line 317) | Scalar run(const Derived &mat, const Func& func)
  function EIGEN_DEVICE_FUNC (line 338) | EIGEN_DEVICE_FUNC explicit redux_evaluator(const XprType &xpr) : m_evalu...
  type typename (line 340) | typedef typename XprType::Scalar Scalar;
  type typename (line 341) | typedef typename XprType::CoeffReturnType CoeffReturnType;
  type typename (line 342) | typedef typename XprType::PacketScalar PacketScalar;
  type typename (line 343) | typedef typename XprType::PacketReturnType PacketReturnType;
  function EIGEN_DEVICE_FUNC (line 363) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 367) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 379) | EIGEN_DEVICE_FUNC
  function typename (line 410) | typename internal::traits<Derived>::Scalar

FILE: deps/eigen/Eigen/src/Core/Ref.h
  function namespace (line 13) | namespace Eigen {
  type typename (line 62) | typedef typename internal::traits<Derived>::PlainObjectType PlainObjectT...
  type typename (line 63) | typedef typename internal::traits<Derived>::StrideType StrideType;
  function Index (line 70) | inline Index innerStride() const
  function EIGEN_DEVICE_FUNC (line 254) | EIGEN_DEVICE_FUNC inline Ref(const Ref& other) : Base(other) {
  function construct (line 266) | void construct(const Expression& expr,internal::true_type)
  function construct (line 272) | void construct(const Expression& expr, internal::false_type)

FILE: deps/eigen/Eigen/src/Core/Replicate.h
  function namespace (line 13) | namespace Eigen {
  type typename (line 64) | typedef typename internal::traits<Replicate>::MatrixTypeNested MatrixTyp...
  type typename (line 65) | typedef typename internal::traits<Replicate>::_MatrixTypeNested _MatrixT...

FILE: deps/eigen/Eigen/src/Core/ReturnByValue.h
  function namespace (line 14) | namespace Eigen {
  type typename (line 56) | typedef typename internal::dense_xpr_base<ReturnByValue>::type Base;
  function evalTo (line 61) | inline void evalTo(Dest& dst) const
  function class (line 68) | class Unusable{
  function namespace (line 88) | namespace internal {

FILE: deps/eigen/Eigen/src/Core/Reverse.h
  function namespace (line 15) | namespace Eigen {
  type internal (line 85) | typedef internal::reverse_packet_cond<PacketScalar,ReversePacket> revers...
  function m_matrix (line 88) | inline Reverse(const MatrixType& matrix) : m_matrix(matrix) { }
  function namespace (line 163) | namespace internal {

FILE: deps/eigen/Eigen/src/Core/Select.h
  function namespace (line 13) | namespace Eigen {
  function EIGEN_DEVICE_FUNC (line 73) | inline EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 82) | inline EIGEN_DEVICE_FUNC
  function typename (line 139) | typename ThenDerived::Scalar& elseScalar) const

FILE: deps/eigen/Eigen/src/Core/SelfAdjointView.h
  function namespace (line 13) | namespace Eigen {
  type _MatrixType (line 54) | typedef _MatrixType MatrixType;
  type TriangularBase (line 55) | typedef TriangularBase<SelfAdjointView> Base;
  type typename (line 56) | typedef typename internal::traits<SelfAdjointView>::MatrixTypeNested Mat...
  type typename (line 57) | typedef typename internal::traits<SelfAdjointView>::MatrixTypeNestedClea...
  type MatrixTypeNestedCleaned (line 58) | typedef MatrixTypeNestedCleaned NestedExpression;
  type typename (line 61) | typedef typename internal::traits<SelfAdjointView>::Scalar Scalar;
  type typename (line 62) | typedef typename MatrixType::StorageIndex StorageIndex;
  type typename (line 63) | typedef typename internal::remove_all<typename
  type typename (line 70) | typedef typename MatrixType::PlainObject PlainObject;
  function m_matrix (line 73) | inline SelfAdjointView(MatrixType& matrix) : m_matrix(matrix)
  function EIGEN_DEVICE_FUNC (line 90) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 100) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 114) | EIGEN_DEVICE_FUNC
  type SelfAdjointView (line 194) | typedef SelfAdjointView<const MatrixConjugateReturnType,UpLo> ConjugateR...
  function EIGEN_DEVICE_FUNC (line 196) | EIGEN_DEVICE_FUNC
  type typename (line 284) | typedef typename Base::DstXprType DstXprType;
  type typename (line 285) | typedef typename Base::SrcXprType SrcXprType;
  type typename (line 292) | typedef typename Base::SrcEvaluatorType SrcEvaluatorType;
  type typename (line 293) | typedef typename Base::Scalar Scalar;
  type typename (line 294) | typedef typename Base::AssignmentTraits AssignmentTraits;
  function EIGEN_DEVICE_FUNC (line 297) | EIGEN_DEVICE_FUNC triangular_dense_assignment_kernel(DstEvaluatorType &d...
  function EIGEN_DEVICE_FUNC (line 301) | EIGEN_DEVICE_FUNC void assignCoeff(Index row, Index col)
  function EIGEN_DEVICE_FUNC (line 309) | EIGEN_DEVICE_FUNC void assignDiagonalCoeff(Index id)
  function EIGEN_DEVICE_FUNC (line 314) | EIGEN_DEVICE_FUNC void assignOppositeCoeff(Index, Index)

FILE: deps/eigen/Eigen/src/Core/SelfCwiseBinaryOp.h
  function namespace (line 13) | namespace Eigen {

FILE: deps/eigen/Eigen/src/Core/Solve.h
  function namespace (line 13) | namespace Eigen {
  type typename (line 66) | typedef typename internal::traits<Solve>::StorageIndex StorageIndex;
  function namespace (line 110) | namespace internal {
  type Solve (line 139) | typedef Solve<DecType,RhsType> SrcXprType;
  function run (line 140) | static void run(DstXprType &dst, const SrcXprType &src, const internal::...
  type Solve (line 155) | typedef Solve<Transpose<const DecType>,RhsType> SrcXprType;
  function run (line 156) | static void run(DstXprType &dst, const SrcXprType &src, const internal::...
  function run (line 173) | static void run(DstXprType &dst, const SrcXprType &src, const internal::...

FILE: deps/eigen/Eigen/src/Core/SolveTriangular.h
  function namespace (line 13) | namespace Eigen {
  function run (line 121) | static void run(const Lhs& lhs, Rhs& rhs)
  function run (line 141) | static void run(const Lhs& lhs, Rhs& rhs)
  type typename (line 177) | typedef typename internal::conditional<copy,
  function namespace (line 197) | namespace internal {
  type ReturnByValue (line 210) | typedef ReturnByValue<triangular_solve_retval> Base;

FILE: deps/eigen/Eigen/src/Core/SolverBase.h
  function namespace (line 13) | namespace Eigen {

FILE: deps/eigen/Eigen/src/Core/StableNorm.h
  function namespace (line 13) | namespace Eigen {

FILE: deps/eigen/Eigen/src/Core/Stride.h
  function namespace (line 13) | namespace Eigen {

FILE: deps/eigen/Eigen/src/Core/Swap.h
  function namespace (line 13) | namespace Eigen {

FILE: deps/eigen/Eigen/src/Core/Transpose.h
  function namespace (line 14) | namespace Eigen {
  function namespace (line 90) | namespace internal {
  type typename (line 128) | typedef typename internal::conditional<
  function EIGEN_DEVICE_FUNC (line 134) | EIGEN_DEVICE_FUNC inline ScalarWithConstIfNotLvalue* data() { return der...
  function EIGEN_DEVICE_FUNC (line 135) | EIGEN_DEVICE_FUNC inline const Scalar* data() const { return derived().n...
  function EIGEN_DEVICE_FUNC (line 138) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 144) | EIGEN_DEVICE_FUNC
  function namespace (line 221) | namespace internal {
  type typename (line 241) | typedef typename MatrixType::Scalar Scalar;
  type typename (line 242) | typedef typename internal::packet_traits<typename
  function namespace (line 326) | namespace internal {
  function run (line 345) | static bool run(const Scalar* dest, const OtherDerived& src)
  function run (line 374) | static void run(const Derived& dst, const OtherDerived& other)

FILE: deps/eigen/Eigen/src/Core/Transpositions.h
  function namespace (line 13) | namespace Eigen {
  type typename (line 164) | typedef typename Traits::IndicesType IndicesType;
  type typename (line 165) | typedef typename IndicesType::Scalar StorageIndex;
  function m_indices (line 177) | inline Transpositions(const Transpositions& other) : m_indices(other.ind...
  function m_indices (line 182) | inline Transpositions(const MatrixBase<Other>& indices) : m_indices(indi...
  function m_indices (line 205) | inline Transpositions(Index size) : m_indices(size)
  function namespace (line 219) | namespace internal {
  type typename (line 238) | typedef typename Traits::IndicesType IndicesType;
  type typename (line 239) | typedef typename IndicesType::Scalar StorageIndex;
  function explicit (line 241) | explicit inline Map(const StorageIndex* indicesPtr)
  function namespace (line 278) | namespace internal {
  type typename (line 295) | typedef typename Traits::IndicesType IndicesType;
  type typename (line 296) | typedef typename IndicesType::Scalar StorageIndex;
  function explicit (line 298) | explicit inline TranspositionsWrapper(IndicesType& indices)
  function namespace (line 359) | namespace internal {
  type TranspositionsDerived (line 371) | typedef TranspositionsDerived TranspositionType;
  type typename (line 372) | typedef typename TranspositionType::IndicesType IndicesType;

FILE: deps/eigen/Eigen/src/Core/TriangularMatrix.h
  function namespace (line 14) | namespace Eigen {
  type typename (line 192) | typedef typename internal::traits<TriangularView>::Scalar Scalar;
  type _MatrixType (line 193) | typedef _MatrixType MatrixType;
  type typename (line 197) | typedef typename internal::traits<TriangularView>::MatrixTypeNestedNonRe...
  type typename (line 199) | typedef typename internal::remove_all<typename
  type typename (line 204) | typedef typename internal::traits<TriangularView>::MatrixTypeNestedClean...
  function m_matrix (line 217) | inline TriangularView(MatrixType& matrix) : m_matrix(matrix)
  function EIGEN_DEVICE_FUNC (line 234) | EIGEN_DEVICE_FUNC
  type TriangularView (line 237) | typedef TriangularView<const MatrixConjugateReturnType,Mode> ConjugateRe...
  function EIGEN_DEVICE_FUNC (line 239) | EIGEN_DEVICE_FUNC
  type TriangularBase (line 337) | typedef TriangularBase<TriangularViewType> Base;
  type typename (line 338) | typedef typename internal::traits<TriangularViewType>::Scalar Scalar;
  type _MatrixType (line 340) | typedef _MatrixType MatrixType;
  type typename (line 341) | typedef typename MatrixType::PlainObject DenseMatrixType;
  type DenseMatrixType (line 342) | typedef DenseMatrixType PlainObject;
  type typename (line 348) | typedef typename internal::traits<TriangularViewType>::StorageKind Stora...
  function EIGEN_DEVICE_FUNC (line 387) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 390) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 394) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 397) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 403) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 413) | EIGEN_DEVICE_FUNC
  function solveInPlace (line 508) | void solveInPlace(const MatrixBase<OtherDerived>& other) const
  function swap (line 517) | void swap(TriangularBase<OtherDerived> const & other)
  function namespace (line 701) | namespace internal {
  type evaluator (line 719) | typedef evaluator<typename
  function Base (line 720) | unary_evaluator(const XprType &xpr) : Base(xpr.nestedExpression()) {}
  type Triangular2Triangular (line 724) | struct Triangular2Triangular    {}
  type Triangular2Dense (line 725) | struct Triangular2Dense         {}
  type Dense2Triangular (line 726) | struct Dense2Triangular         {}
  type typename (line 742) | typedef typename Base::DstXprType DstXprType;
  type typename (line 743) | typedef typename Base::SrcXprType SrcXprType;
  type typename (line 750) | typedef typename Base::SrcEvaluatorType SrcEvaluatorType;
  type typename (line 751) | typedef typename Base::Scalar Scalar;
  type typename (line 752) | typedef typename Base::AssignmentTraits AssignmentTraits;
  function EIGEN_DEVICE_FUNC (line 755) | EIGEN_DEVICE_FUNC triangular_dense_assignment_kernel(DstEvaluatorType &d...
  function EIGEN_DEVICE_FUNC (line 760) | EIGEN_DEVICE_FUNC void assignCoeff(Index row, Index col)
  function EIGEN_DEVICE_FUNC (line 769) | EIGEN_DEVICE_FUNC void assignDiagonalCoeff(Index id)
  function EIGEN_DEVICE_FUNC (line 776) | EIGEN_DEVICE_FUNC void assignOppositeCoeff(Index row, Index col)
  type evaluator (line 788) | typedef evaluator<DstXprType> DstEvaluatorType;
  type evaluator (line 789) | typedef evaluator<SrcXprType> SrcEvaluatorType;
  type triangular_dense_assignment_kernel (line 799) | typedef triangular_dense_assignment_kernel< Mode
  function Kernel (line 801) | Kernel kernel(dstEvaluator, srcEvaluator, func, dst.const_cast_derived());
  type AssignmentKind (line 820) | struct AssignmentKind
  type Triangular2Dense (line 820) | typedef Triangular2Dense      Kind;
  type AssignmentKind (line 821) | struct AssignmentKind
  type Dense2Triangular (line 821) | typedef Dense2Triangular      Kind;
  type typename (line 859) | typedef typename DstEvaluatorType::XprType DstXprType;
  type typename (line 866) | typedef typename Kernel::Scalar Scalar;
  function namespace (line 941) | namespace internal {
  function run (line 964) | static void run(DstXprType &dst, const SrcXprType &src, const internal::...
  function run (line 975) | static void run(DstXprType &dst, const SrcXprType &src, const internal::...

FILE: deps/eigen/Eigen/src/Core/VectorBlock.h
  function namespace (line 14) | namespace Eigen {

FILE: deps/eigen/Eigen/src/Core/VectorwiseOp.h
  function namespace (line 14) | namespace Eigen {
  function namespace (line 97) | namespace internal {
  type typename (line 161) | typedef typename ExpressionType::RealScalar RealScalar;
  type Eigen (line 162) | typedef Eigen::Index Index;
  type typename (line 163) | typedef typename internal::ref_selector<ExpressionType>::non_const_type ...
  type typename (line 164) | typedef typename internal::remove_all<ExpressionTypeNested>::type Expres...
  type PartialReduxExpr (line 169) | typedef PartialReduxExpr<ExpressionType,
  type PartialReduxExpr (line 177) | typedef PartialReduxExpr<ExpressionType,
  function EIGEN_DEVICE_FUNC (line 195) | EIGEN_DEVICE_FUNC
  type Replicate (line 208) | typedef Replicate<OtherDerived,
  type Replicate (line 231) | typedef Replicate<OtherDerived,
  function m_matrix (line 255) | inline VectorwiseOp(ExpressionType& matrix) : m_matrix(matrix) {}
  function EIGEN_DEVICE_FUNC (line 258) | EIGEN_DEVICE_FUNC

FILE: deps/eigen/Eigen/src/Core/Visitor.h
  function namespace (line 13) | namespace Eigen {
  type typename (line 66) | typedef typename XprType::Scalar Scalar;
  type typename (line 67) | typedef typename XprType::CoeffReturnType CoeffReturnType;
  function EIGEN_DEVICE_FUNC (line 78) | EIGEN_DEVICE_FUNC CoeffReturnType coeff(Index row, Index col) const
  type typename (line 109) | typedef typename internal::visitor_evaluator<Derived> ThisEvaluator;
  function namespace (line 119) | namespace internal {
  function typename (line 206) | typename internal::traits<Derived>::Scalar
  function typename (line 224) | typename internal::traits<Derived>::Scalar
  function typename (line 243) | typename internal::traits<Derived>::Scalar
  function typename (line 261) | typename internal::traits<Derived>::Scalar

FILE: deps/eigen/Eigen/src/Core/arch/AVX/Complex.h
  function namespace (line 13) | namespace Eigen {
  function Packet4cf (line 124) | Packet4cf preverse(const Packet4cf& a) {
  type conj_helper (line 174) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 176) | EIGEN_STRONG_INLINE Packet4cf pmadd(const Packet4cf& x, const Packet4cf&...
  function EIGEN_STRONG_INLINE (line 179) | EIGEN_STRONG_INLINE Packet4cf pmul(const Packet4cf& a, const Packet4cf& ...
  type conj_helper (line 185) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 187) | EIGEN_STRONG_INLINE Packet4cf pmadd(const Packet4cf& x, const Packet4cf&...
  function EIGEN_STRONG_INLINE (line 190) | EIGEN_STRONG_INLINE Packet4cf pmul(const Packet4cf& a, const Packet4cf& ...
  type conj_helper (line 196) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 198) | EIGEN_STRONG_INLINE Packet4cf pmadd(const Packet4cf& x, const Packet4cf&...
  function EIGEN_STRONG_INLINE (line 201) | EIGEN_STRONG_INLINE Packet4cf pmul(const Packet4cf& a, const Packet4cf& ...
  type Packet2cd (line 224) | struct Packet2cd
  type packet_traits (line 231) | struct packet_traits
  function default_packet_traits (line 231) | double> >  : default_packet_traits
  function Packet2cd (line 254) | struct unpacket_traits<Packet2cd> { typedef std::complex<double> type; e...
  function Packet2cd (line 258) | Packet2cd pnegate(const Packet2cd& a) { return Packet2cd(pnegate(a.v)); }
  function Packet2cd (line 259) | Packet2cd pconj(const Packet2cd& a)
  function Packet2cd (line 319) | Packet2cd preverse(const Packet2cd& a) {
  type conj_helper (line 354) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 356) | EIGEN_STRONG_INLINE Packet2cd pmadd(const Packet2cd& x, const Packet2cd&...
  function EIGEN_STRONG_INLINE (line 359) | EIGEN_STRONG_INLINE Packet2cd pmul(const Packet2cd& a, const Packet2cd& ...
  type conj_helper (line 365) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 367) | EIGEN_STRONG_INLINE Packet2cd pmadd(const Packet2cd& x, const Packet2cd&...
  function EIGEN_STRONG_INLINE (line 370) | EIGEN_STRONG_INLINE Packet2cd pmul(const Packet2cd& a, const Packet2cd& ...
  type conj_helper (line 376) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 378) | EIGEN_STRONG_INLINE Packet2cd pmadd(const Packet2cd& x, const Packet2cd&...
  function EIGEN_STRONG_INLINE (line 381) | EIGEN_STRONG_INLINE Packet2cd pmul(const Packet2cd& a, const Packet2cd& ...
  function Packet4cf (line 427) | Packet4cf pinsertfirst(const Packet4cf& a, std::complex<float> b)
  function Packet2cd (line 432) | Packet2cd pinsertfirst(const Packet2cd& a, std::complex<double> b)
  function Packet4cf (line 437) | Packet4cf pinsertlast(const Packet4cf& a, std::complex<float> b)
  function Packet2cd (line 442) | Packet2cd pinsertlast(const Packet2cd& a, std::complex<double> b)

FILE: deps/eigen/Eigen/src/Core/arch/AVX/MathFunctions.h
  function namespace (line 17) | namespace Eigen {

FILE: deps/eigen/Eigen/src/Core/arch/AVX/PacketMath.h
  function namespace (line 13) | namespace Eigen {
  function Packet8f (line 136) | Packet8f pnegate(const Packet8f& a)
  function Packet4d (line 140) | Packet4d pnegate(const Packet4d& a)
  function Packet8f (line 145) | Packet8f pconj(const Packet8f& a) { return a; }
  function Packet4d (line 146) | Packet4d pconj(const Packet4d& a) { return a; }
  function Packet8i (line 147) | Packet8i pconj(const Packet8i& a) { return a; }
  function Index (line 285) | Index stride)

FILE: deps/eigen/Eigen/src/Core/arch/AVX/TypeCasting.h
  function namespace (line 13) | namespace Eigen {

FILE: deps/eigen/Eigen/src/Core/arch/AVX512/MathFunctions.h
  function namespace (line 13) | namespace Eigen {

FILE: deps/eigen/Eigen/src/Core/arch/AVX512/PacketMath.h
  function namespace (line 13) | namespace Eigen {
  function Packet16f (line 174) | Packet16f pnegate(const Packet16f& a) {
  function Packet8d (line 178) | Packet8d pnegate(const Packet8d& a) {
  function Packet16f (line 183) | Packet16f pconj(const Packet16f& a) {
  function Packet8d (line 187) | Packet8d pconj(const Packet8d& a) {
  function Packet16i (line 191) | Packet16i pconj(const Packet16i& a) {
  function Packet16f (line 219) | Packet16f pmadd(const Packet16f& a, const Packet16f& b,
  function Packet8d (line 224) | Packet8d pmadd(const Packet8d& a, const Packet8d& b,
  function Packet16f (line 638) | Packet16f preverse(const Packet16f& a)
  function Packet8d (line 643) | Packet8d preverse(const Packet8d& a)
  function Packet16f (line 648) | Packet16f pabs(const Packet16f& a)
  function Packet8d (line 654) | Packet8d pabs(const Packet8d& a) {
  function Packet16f (line 1298) | Packet16f pblend(const Selector<16>& /*ifPacket*/,
  function Packet8d (line 1305) | Packet8d pblend(const Selector<8>& /*ifPacket*/,

FILE: deps/eigen/Eigen/src/Core/arch/AltiVec/Complex.h
  function namespace (line 14) | namespace Eigen {
  function Packet2cf (line 100) | Packet2cf pnegate(const Packet2cf& a) { return Packet2cf(pnegate(a.v)); }
  function Packet2cf (line 101) | Packet2cf pconj(const Packet2cf& a) { return Packet2cf(pxor<Packet4f>(a....
  function Packet2cf (line 137) | Packet2cf preverse(const Packet2cf& a)
  type conj_helper (line 194) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 196) | EIGEN_STRONG_INLINE Packet2cf pmadd(const Packet2cf& x, const Packet2cf&...
  function EIGEN_STRONG_INLINE (line 199) | EIGEN_STRONG_INLINE Packet2cf pmul(const Packet2cf& a, const Packet2cf& ...
  type conj_helper (line 205) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 207) | EIGEN_STRONG_INLINE Packet2cf pmadd(const Packet2cf& x, const Packet2cf&...
  function EIGEN_STRONG_INLINE (line 210) | EIGEN_STRONG_INLINE Packet2cf pmul(const Packet2cf& a, const Packet2cf& ...
  type conj_helper (line 216) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 218) | EIGEN_STRONG_INLINE Packet2cf pmadd(const Packet2cf& x, const Packet2cf&...
  function EIGEN_STRONG_INLINE (line 221) | EIGEN_STRONG_INLINE Packet2cf pmul(const Packet2cf& a, const Packet2cf& ...
  function Packet2cf (line 250) | Packet2cf pblend(const Selector<2>& ifPacket, const Packet2cf& thenPacke...
  type Packet1cd (line 259) | struct Packet1cd
  type packet_traits (line 266) | struct packet_traits
  function default_packet_traits (line 266) | double> >  : default_packet_traits
  function Packet1cd (line 289) | struct unpacket_traits<Packet1cd> { typedef std::complex<double> type; e...
  function Packet1cd (line 316) | Packet1cd pnegate(const Packet1cd& a) { return Packet1cd(pnegate(Packet2...
  function Packet1cd (line 317) | Packet1cd pconj(const Packet1cd& a) { return Packet1cd(pxor(a.v, reinter...
  function Packet1cd (line 354) | Packet1cd preverse(const Packet1cd& a) { return a; }
  function EIGEN_STRONG_INLINE (line 373) | EIGEN_STRONG_INLINE Packet1cd pmadd(const Packet1cd& x, const Packet1cd&...
  function EIGEN_STRONG_INLINE (line 376) | EIGEN_STRONG_INLINE Packet1cd pmul(const Packet1cd& a, const Packet1cd& ...
  type conj_helper (line 382) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 384) | EIGEN_STRONG_INLINE Packet1cd pmadd(const Packet1cd& x, const Packet1cd&...
  function EIGEN_STRONG_INLINE (line 387) | EIGEN_STRONG_INLINE Packet1cd pmul(const Packet1cd& a, const Packet1cd& ...
  type conj_helper (line 393) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 395) | EIGEN_STRONG_INLINE Packet1cd pmadd(const Packet1cd& x, const Packet1cd&...
  function EIGEN_STRONG_INLINE (line 398) | EIGEN_STRONG_INLINE Packet1cd pmul(const Packet1cd& a, const Packet1cd& ...
  function EIGEN_STRONG_INLINE (line 414) | EIGEN_STRONG_INLINE Packet1cd pcplxflip/*<Packet1cd>*/(const Packet1cd& x)

FILE: deps/eigen/Eigen/src/Core/arch/AltiVec/MathFunctions.h
  function namespace (line 19) | namespace Eigen {

FILE: deps/eigen/Eigen/src/Core/arch/AltiVec/PacketMath.h
  function namespace (line 13) | namespace Eigen {
  function Packet4f (line 355) | Packet4f pnegate(const Packet4f& a) { return p4f_ZERO - a; }
  function Packet4i (line 356) | Packet4i pnegate(const Packet4i& a) { return p4i_ZERO - a; }
  function Packet4f (line 358) | Packet4f pconj(const Packet4f& a) { return a; }
  function Packet4i (line 359) | Packet4i pconj(const Packet4i& a) { return a; }
  type __vector (line 774) | typedef __vector double              Packet2d;
  type Packet2ul (line 775) | typedef __vector unsigned long long  Packet2ul;
  type Packet2l (line 776) | typedef __vector long long           Packet2l;
  type Packet2ul (line 778) | typedef Packet2ul                    Packet2bl;
  type __vector (line 780) | typedef __vector __bool
  function default_packet_traits (line 807) | struct packet_traits<double> : default_packet_traits
  function Packet2d (line 838) | struct unpacket_traits<Packet2d> { typedef double type; enum {size=2, al...

FILE: deps/eigen/Eigen/src/Core/arch/CUDA/Complex.h
  function namespace (line 15) | namespace Eigen {

FILE: deps/eigen/Eigen/src/Core/arch/CUDA/Half.h
  function namespace (line 46) | namespace Eigen {
  function namespace (line 150) | namespace std {
  function namespace (line 200) | namespace Eigen {
  function namespace (line 649) | namespace Eigen {

FILE: deps/eigen/Eigen/src/Core/arch/CUDA/MathFunctions.h
  function namespace (line 13) | namespace Eigen {

FILE: deps/eigen/Eigen/src/Core/arch/CUDA/PacketMath.h
  function namespace (line 13) | namespace Eigen {

FILE: deps/eigen/Eigen/src/Core/arch/CUDA/PacketMathHalf.h
  function namespace (line 14) | namespace Eigen {
  function ptranspose (line 108) | void
  type Packet16h (line 339) | typedef struct {
  function Packet16h (line 344) | struct is_arithmetic<Packet16h> { enum { value = true }; }
  function default_packet_traits (line 347) | struct packet_traits<half> : default_packet_traits {
  function Packet16h (line 376) | struct unpacket_traits<Packet16h> { typedef Eigen::half type; enum {size...
  function Packet16h (line 408) | Packet16h
  function EIGEN_STRONG_INLINE (line 419) | EIGEN_STRONG_INLINE Packet16f half2float(const Packet16h& a) {
  function EIGEN_STRONG_INLINE (line 447) | EIGEN_STRONG_INLINE Packet16h float2half(const Packet16f& a) {
  type Packet8h (line 707) | typedef struct {
  function Packet8h (line 712) | struct is_arithmetic<Packet8h> { enum { value = true }; }
  function default_packet_traits (line 715) | struct packet_traits<Eigen::half> : default_packet_traits {
  function Packet8h (line 744) | struct unpacket_traits<Packet8h> { typedef Eigen::half type; enum {size=...
  function EIGEN_STRONG_INLINE (line 785) | EIGEN_STRONG_INLINE Packet8f half2float(const Packet8h& a) {
  function EIGEN_STRONG_INLINE (line 804) | EIGEN_STRONG_INLINE Packet8h float2half(const Packet8f& a) {
  function Packet8h (line 827) | Packet8h pconj(const Packet8h& a) { return a; }
  type Packet4h (line 966) | typedef struct {
  function Packet4h (line 971) | struct is_arithmetic<Packet4h> { enum { value = true }; }
  function default_packet_traits (line 974) | struct packet_traits<Eigen::half> : default_packet_traits {
  function Packet4h (line 1003) | struct unpacket_traits<Packet4h> { typedef Eigen::half type; enum {size=...
  function Packet4h (line 1015) | Packet4h pconj(const Packet4h& a) { return a; }

FILE: deps/eigen/Eigen/src/Core/arch/CUDA/TypeCasting.h
  function namespace (line 13) | namespace Eigen {

FILE: deps/eigen/Eigen/src/Core/arch/NEON/Complex.h
  function namespace (line 14) | namespace Eigen {
  function Packet2cf (line 154) | Packet2cf preverse(const Packet2cf& a)
  type conj_helper (line 235) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 237) | EIGEN_STRONG_INLINE Packet2cf pmadd(const Packet2cf& x, const Packet2cf&...
  function EIGEN_STRONG_INLINE (line 240) | EIGEN_STRONG_INLINE Packet2cf pmul(const Packet2cf& a, const Packet2cf& ...
  type conj_helper (line 246) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 248) | EIGEN_STRONG_INLINE Packet2cf pmadd(const Packet2cf& x, const Packet2cf&...
  function EIGEN_STRONG_INLINE (line 251) | EIGEN_STRONG_INLINE Packet2cf pmul(const Packet2cf& a, const Packet2cf& ...
  type conj_helper (line 257) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 259) | EIGEN_STRONG_INLINE Packet2cf pmadd(const Packet2cf& x, const Packet2cf&...
  function EIGEN_STRONG_INLINE (line 262) | EIGEN_STRONG_INLINE Packet2cf pmul(const Packet2cf& a, const Packet2cf& ...
  type Packet1cd (line 301) | struct Packet1cd
  type packet_traits (line 308) | struct packet_traits
  function default_packet_traits (line 308) | double> >  : default_packet_traits
  function Packet1cd (line 331) | struct unpacket_traits<Packet1cd> { typedef std::complex<double> type; e...
  function Packet1cd (line 341) | Packet1cd pnegate(const Packet1cd& a) { return Packet1cd(pnegate<Packet2...
  function Packet1cd (line 342) | Packet1cd pconj(const Packet1cd& a) { return Packet1cd(vreinterpretq_f64...
  function Packet1cd (line 410) | Packet1cd preverse(const Packet1cd& a) { return a; }
  function EIGEN_STRONG_INLINE (line 430) | EIGEN_STRONG_INLINE Packet1cd pmadd(const Packet1cd& x, const Packet1cd&...
  function EIGEN_STRONG_INLINE (line 433) | EIGEN_STRONG_INLINE Packet1cd pmul(const Packet1cd& a, const Packet1cd& ...
  type conj_helper (line 439) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 441) | EIGEN_STRONG_INLINE Packet1cd pmadd(const Packet1cd& x, const Packet1cd&...
  function EIGEN_STRONG_INLINE (line 444) | EIGEN_STRONG_INLINE Packet1cd pmul(const Packet1cd& a, const Packet1cd& ...
  type conj_helper (line 450) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 452) | EIGEN_STRONG_INLINE Packet1cd pmadd(const Packet1cd& x, const Packet1cd&...
  function EIGEN_STRONG_INLINE (line 455) | EIGEN_STRONG_INLINE Packet1cd pmul(const Packet1cd& a, const Packet1cd& ...
  function EIGEN_STRONG_INLINE (line 473) | EIGEN_STRONG_INLINE Packet1cd pcplxflip/*<Packet1cd>*/(const Packet1cd& x)

FILE: deps/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h
  function namespace (line 15) | namespace Eigen {

FILE: deps/eigen/Eigen/src/Core/arch/NEON/PacketMath.h
  function namespace (line 15) | namespace Eigen {

FILE: deps/eigen/Eigen/src/Core/arch/SSE/Complex.h
  function namespace (line 13) | namespace Eigen {
  function Packet2cf (line 148) | Packet2cf preverse(const Packet2cf& a) { return Packet2cf(_mm_castpd_ps(...
  type conj_helper (line 178) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 180) | EIGEN_STRONG_INLINE Packet2cf pmadd(const Packet2cf& x, const Packet2cf&...
  function EIGEN_STRONG_INLINE (line 183) | EIGEN_STRONG_INLINE Packet2cf pmul(const Packet2cf& a, const Packet2cf& ...
  type conj_helper (line 196) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 198) | EIGEN_STRONG_INLINE Packet2cf pmadd(const Packet2cf& x, const Packet2cf&...
  function EIGEN_STRONG_INLINE (line 201) | EIGEN_STRONG_INLINE Packet2cf pmul(const Packet2cf& a, const Packet2cf& ...
  type conj_helper (line 214) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 216) | EIGEN_STRONG_INLINE Packet2cf pmadd(const Packet2cf& x, const Packet2cf&...
  function EIGEN_STRONG_INLINE (line 219) | EIGEN_STRONG_INLINE Packet2cf pmul(const Packet2cf& a, const Packet2cf& ...
  function EIGEN_STRONG_INLINE (line 242) | EIGEN_STRONG_INLINE Packet2cf pcplxflip/* <Packet2cf> */(const Packet2cf...
  type Packet1cd (line 249) | struct Packet1cd
  type packet_traits (line 259) | struct packet_traits
  function default_packet_traits (line 259) | double> >  : default_packet_traits
  function Packet1cd (line 283) | struct unpacket_traits<Packet1cd> { typedef std::complex<double> type; e...
  function Packet1cd (line 287) | Packet1cd pnegate(const Packet1cd& a) { return Packet1cd(pnegate(Packet2...
  function Packet1cd (line 288) | Packet1cd pconj(const Packet1cd& a)
  function Packet1cd (line 336) | Packet1cd preverse(const Packet1cd& a) { return a; }
  function EIGEN_STRONG_INLINE (line 365) | EIGEN_STRONG_INLINE Packet1cd pmadd(const Packet1cd& x, const Packet1cd&...
  function EIGEN_STRONG_INLINE (line 368) | EIGEN_STRONG_INLINE Packet1cd pmul(const Packet1cd& a, const Packet1cd& ...
  type conj_helper (line 381) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 383) | EIGEN_STRONG_INLINE Packet1cd pmadd(const Packet1cd& x, const Packet1cd&...
  function EIGEN_STRONG_INLINE (line 386) | EIGEN_STRONG_INLINE Packet1cd pmul(const Packet1cd& a, const Packet1cd& ...
  type conj_helper (line 399) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 401) | EIGEN_STRONG_INLINE Packet1cd pmadd(const Packet1cd& x, const Packet1cd&...
  function EIGEN_STRONG_INLINE (line 404) | EIGEN_STRONG_INLINE Packet1cd pmul(const Packet1cd& a, const Packet1cd& ...
  function EIGEN_STRONG_INLINE (line 427) | EIGEN_STRONG_INLINE Packet1cd pcplxflip/* <Packet1cd> */(const Packet1cd...
  function Packet2cf (line 442) | Packet2cf pblend(const Selector<2>& ifPacket, const Packet2cf& thenPacke...
  function Packet2cf (line 447) | Packet2cf pinsertfirst(const Packet2cf& a, std::complex<float> b)
  function Packet1cd (line 452) | Packet1cd pinsertfirst(const Packet1cd&, std::complex<double> b)
  function Packet2cf (line 457) | Packet2cf pinsertlast(const Packet2cf& a, std::complex<float> b)
  function Packet1cd (line 462) | Packet1cd pinsertlast(const Packet1cd&, std::complex<double> b)

FILE: deps/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h
  function namespace (line 18) | namespace Eigen {

FILE: deps/eigen/Eigen/src/Core/arch/SSE/PacketMath.h
  function namespace (line 13) | namespace Eigen {
  function Packet4f (line 441) | Packet4f preverse(const Packet4f& a)
  function Packet2d (line 443) | Packet2d preverse(const Packet2d& a)
  function Packet4i (line 445) | Packet4i preverse(const Packet4i& a)
  function Packet4f (line 448) | Packet4f pabs(const Packet4f& a)
  function Packet2d (line 453) | Packet2d pabs(const Packet2d& a)
  function Packet4i (line 458) | Packet4i pabs(const Packet4i& a)
  function EIGEN_STRONG_INLINE (line 500) | EIGEN_STRONG_INLINE void punpackp(Packet4f* vecs)
  function Packet4i (line 802) | Packet4i pblend(const Selector<4>& ifPacket, const Packet4i& thenPacket,...
  function Packet4f (line 812) | Packet4f pblend(const Selector<4>& ifPacket, const Packet4f& thenPacket,...
  function Packet2d (line 822) | Packet2d pblend(const Selector<2>& ifPacket, const Packet2d& thenPacket,...
  function Packet4f (line 833) | Packet4f pinsertfirst(const Packet4f& a, float b)
  function Packet2d (line 842) | Packet2d pinsertfirst(const Packet2d& a, double b)
  function Packet4f (line 851) | Packet4f pinsertlast(const Packet4f& a, float b)
  function Packet2d (line 861) | Packet2d pinsertlast(const Packet2d& a, double b)
  function pmadd (line 873) | float pmadd(const float& a, const float& b, const float& c) {
  function pmadd (line 876) | double pmadd(const double& a, const double& b, const double& c) {
  function __m128 (line 887) | static inline __m128  _mm_castpd_ps   (__m128d x) { return reinterpret_c...
  function __m128i (line 888) | static inline __m128i _mm_castpd_si128(__m128d x) { return reinterpret_c...
  function __m128d (line 889) | static inline __m128d _mm_castps_pd   (__m128  x) { return reinterpret_c...
  function __m128i (line 890) | static inline __m128i _mm_castps_si128(__m128  x) { return reinterpret_c...
  function __m128 (line 891) | static inline __m128  _mm_castsi128_ps(__m128i x) { return reinterpret_c...
  function __m128d (line 892) | static inline __m128d _mm_castsi128_pd(__m128i x) { return reinterpret_c...

FILE: deps/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h
  function namespace (line 13) | namespace Eigen {

FILE: deps/eigen/Eigen/src/Core/arch/ZVector/Complex.h
  function namespace (line 14) | namespace Eigen {
  function Packet1cd (line 138) | Packet1cd pnegate(const Packet1cd& a) { return Packet1cd(pnegate(Packet2...
  function Packet2cf (line 139) | Packet2cf pnegate(const Packet2cf& a) { return Packet2cf(pnegate(Packet4...
  function Packet1cd (line 140) | Packet1cd pconj(const Packet1cd& a) { return Packet1cd((Packet2d)vec_xor...
  function Packet2cf (line 141) | Packet2cf pconj(const Packet2cf& a)
  function Packet1cd (line 204) | Packet1cd preverse(const Packet1cd& a) { return a; }
  function Packet2cf (line 205) | Packet2cf preverse(const Packet2cf& a)
  type conj_helper (line 273) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 275) | EIGEN_STRONG_INLINE Packet1cd pmadd(const Packet1cd& x, const Packet1cd&...
  function EIGEN_STRONG_INLINE (line 278) | EIGEN_STRONG_INLINE Packet1cd pmul(const Packet1cd& a, const Packet1cd& ...
  type conj_helper (line 284) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 286) | EIGEN_STRONG_INLINE Packet1cd pmadd(const Packet1cd& x, const Packet1cd&...
  function EIGEN_STRONG_INLINE (line 289) | EIGEN_STRONG_INLINE Packet1cd pmul(const Packet1cd& a, const Packet1cd& ...
  type conj_helper (line 295) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 297) | EIGEN_STRONG_INLINE Packet1cd pmadd(const Packet1cd& x, const Packet1cd&...
  function EIGEN_STRONG_INLINE (line 300) | EIGEN_STRONG_INLINE Packet1cd pmul(const Packet1cd& a, const Packet1cd& ...
  type conj_helper (line 306) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 308) | EIGEN_STRONG_INLINE Packet2cf pmadd(const Packet2cf& x, const Packet2cf&...
  function EIGEN_STRONG_INLINE (line 311) | EIGEN_STRONG_INLINE Packet2cf pmul(const Packet2cf& a, const Packet2cf& ...
  type conj_helper (line 317) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 319) | EIGEN_STRONG_INLINE Packet2cf pmadd(const Packet2cf& x, const Packet2cf&...
  function EIGEN_STRONG_INLINE (line 322) | EIGEN_STRONG_INLINE Packet2cf pmul(const Packet2cf& a, const Packet2cf& ...
  type conj_helper (line 328) | struct conj_helper
  function EIGEN_STRONG_INLINE (line 330) | EIGEN_STRONG_INLINE Packet2cf pmadd(const Packet2cf& x, const Packet2cf&...
  function EIGEN_STRONG_INLINE (line 333) | EIGEN_STRONG_INLINE Packet2cf pmul(const Packet2cf& a, const Packet2cf& ...
  function EIGEN_STRONG_INLINE (line 359) | EIGEN_STRONG_INLINE Packet1cd pcplxflip/*<Packet1cd>*/(const Packet1cd& x)
  function EIGEN_STRONG_INLINE (line 364) | EIGEN_STRONG_INLINE Packet2cf pcplxflip/*<Packet2cf>*/(const Packet2cf& x)
  function Packet2cf (line 386) | Packet2cf pblend(const Selector<2>& ifPacket, const Packet2cf& thenPacke...

FILE: deps/eigen/Eigen/src/Core/arch/ZVector/MathFunctions.h
  function namespace (line 19) | namespace Eigen {

FILE: deps/eigen/Eigen/src/Core/arch/ZVector/PacketMath.h
  function namespace (line 15) | namespace Eigen {
  function Packet4i (line 538) | Packet4i pnegate(const Packet4i& a) { return (-a); }
  function Packet4f (line 539) | Packet4f pnegate(const Packet4f& a)
  function Packet2d (line 546) | Packet2d pnegate(const Packet2d& a) { return (-a); }
  function Packet4i (line 548) | Packet4i pconj(const Packet4i& a) { return a; }
  function Packet4f (line 549) | Packet4f pconj(const Packet4f& a) { return a; }
  function Packet2d (line 550) | Packet2d pconj(const Packet2d& a) { return a; }
  function Packet4i (line 552) | Packet4i pmadd(const Packet4i& a, const Packet4i& b, const Packet4i& c) ...
  function Packet4f (line 553) | Packet4f pmadd(const Packet4f& a, const Packet4f& b, const Packet4f& c)
  function Packet2d (line 560) | Packet2d pmadd(const Packet2d& a, const Packet2d& b, const Packet2d& c) ...
  function Packet4i (line 688) | Packet4i preverse(const Packet4i& a)
  function Packet2d (line 693) | Packet2d preverse(const Packet2d& a)
  function Packet4f (line 698) | Packet4f preverse(const Packet4f& a)
  function Packet4i (line 918) | Packet4i pblend(const Selector<4>& ifPacket, const Packet4i& thenPacket,...
  function Packet4f (line 924) | Packet4f pblend(const Selector<4>& ifPacket, const Packet4f& thenPacket,...
  function Packet2d (line 935) | Packet2d pblend(const Selector<2>& ifPacket, const Packet2d& thenPacket,...

FILE: deps/eigen/Eigen/src/Core/functors/AssignmentFunctors.h
  function namespace (line 13) | namespace Eigen {
  function assignCoeff (line 70) | void assignCoeff(DstScalar& a, const SrcScalar& b) const { a -= b; }
  function assignPacket (line 73) | void assignPacket(DstScalar* a, const Packet& b) const
  function assignCoeff (line 92) | void assignCoeff(DstScalar& a, const SrcScalar& b) const { a *= b; }
  function assignPacket (line 95) | void assignPacket(DstScalar* a, const Packet& b) const
  function assignCoeff (line 113) | void assignCoeff(DstScalar& a, const SrcScalar& b) const { a /= b; }
  function assignPacket (line 116) | void assignPacket(DstScalar* a, const Packet& b) const
  function assignCoeff (line 145) | void assignCoeff(Scalar& a, const Scalar& b) const

FILE: deps/eigen/Eigen/src/Core/functors/BinaryFunctors.h
  function namespace (line 13) | namespace Eigen {
  type typename (line 116) | typedef typename ScalarBinaryOpTraits<LhsScalar,RhsScalar,scalar_conj_pr...
  function EIGEN_STRONG_INLINE (line 119) | EIGEN_STRONG_INLINE const result_type operator() (const LhsScalar& a, co...
  function Packet (line 123) | const Packet packetOp(const Packet& a, const Packet& b) const
  type typename (line 142) | typedef typename ScalarBinaryOpTraits<LhsScalar,RhsScalar,scalar_min_op>...
  function EIGEN_STRONG_INLINE (line 144) | EIGEN_STRONG_INLINE const result_type operator() (const LhsScalar& a, co...
  function Packet (line 146) | const Packet packetOp(const Packet& a, const Packet& b) const
  function result_type (line 149) | const result_type predux(const Packet& a) const
  type typename (line 168) | typedef typename ScalarBinaryOpTraits<LhsScalar,RhsScalar,scalar_max_op>...
  function EIGEN_STRONG_INLINE (line 170) | EIGEN_STRONG_INLINE const result_type operator() (const LhsScalar& a, co...
  function Packet (line 172) | const Packet packetOp(const Packet& a, const Packet& b) const
  function result_type (line 175) | const result_type predux(const Packet& a) const
  function const (line 211) | bool operator()(const LhsScalar& a, const RhsScalar& b) const {return a=...
  function const (line 218) | bool operator()(const LhsScalar& a, const RhsScalar& b) const {return a<b;}
  function const (line 225) | bool operator()(const LhsScalar& a, const RhsScalar& b) const {return a<...
  function const (line 232) | bool operator()(const LhsScalar& a, const RhsScalar& b) const {return a>b;}
  function const (line 239) | bool operator()(const LhsScalar& a, const RhsScalar& b) const {return a>...
  function const (line 246) | bool operator()(const LhsScalar& a, const RhsScalar& b) const {return !(...
  function const (line 253) | bool operator()(const LhsScalar& a, const RhsScalar& b) const {return a!...
  function Scalar (line 267) | const Scalar operator() (const Scalar &x, const Scalar &y) const
  type typename (line 294) | typedef typename ScalarBinaryOpTraits<Scalar,Exponent,scalar_pow_op>::Re...
  type Scalar (line 299) | typedef Scalar LhsScalar;
  type Exponent (line 300) | typedef Exponent RhsScalar;
  function EIGEN_DEVICE_FUNC (line 304) | EIGEN_DEVICE_FUNC
  type typename (line 324) | typedef typename ScalarBinaryOpTraits<LhsScalar,RhsScalar,scalar_differe...
  function result_type (line 332) | const result_type operator() (const LhsScalar& a, const RhsScalar& b) co...
  function Packet (line 334) | const Packet packetOp(const Packet& a, const Packet& b) const
  type typename (line 353) | typedef typename ScalarBinaryOpTraits<LhsScalar,RhsScalar,scalar_quotien...
  function result_type (line 361) | const result_type operator() (const LhsScalar& a, const RhsScalar& b) co...
  function Packet (line 363) | const Packet packetOp(const Packet& a, const Packet& b) const
  type scalar_boolean_and_op (line 382) | struct scalar_boolean_and_op {
  function scalar_boolean_and_op (line 386) | struct functor_traits<scalar_boolean_and_op> {
  type scalar_boolean_or_op (line 398) | struct scalar_boolean_or_op {
  function scalar_boolean_or_op (line 402) | struct functor_traits<scalar_boolean_or_op> {
  type scalar_boolean_xor_op (line 414) | struct scalar_boolean_xor_op {
  function scalar_boolean_xor_op (line 418) | struct functor_traits<scalar_boolean_xor_op> {
  type typename (line 435) | typedef typename BinaryOp::first_argument_type  first_argument_type;
  type typename (line 436) | typedef typename BinaryOp::second_argument_type second_argument_type;
  type typename (line 437) | typedef typename BinaryOp::result_type          result_type;
  function m_value (line 439) | bind1st_op(const first_argument_type &val) : m_value(val) {}
  function result_type (line 441) | const result_type operator() (const second_argument_type& b) const { ret...
  function Packet (line 444) | const Packet packetOp(const Packet& b) const
  type typename (line 454) | typedef typename BinaryOp::first_argument_type  first_argument_type;
  type typename (line 455) | typedef typename BinaryOp::second_argument_type second_argument_type;
  type typename (line 456) | typedef typename BinaryOp::result_type          result_type;
  function m_value (line 458) | bind2nd_op(const second_argument_type &val) : m_value(val) {}
  function result_type (line 460) | const result_type operator() (const first_argument_type& a) const { retu...
  function Packet (line 463) | const Packet packetOp(const Packet& a) const

FILE: deps/eigen/Eigen/src/Core/functors/NullaryFunctors.h
  function namespace (line 13) | namespace Eigen {
  function Scalar (line 136) | const Scalar operator() (IndexType i) const { return impl(i); }
  function EIGEN_STRONG_INLINE (line 139) | EIGEN_STRONG_INLINE const Packet packetOp(IndexType i) const { return im...

FILE: deps/eigen/Eigen/src/Core/functors/StlFunctors.h
  function namespace (line 13) | namespace Eigen {

FILE: deps/eigen/Eigen/src/Core/functors/TernaryFunctors.h
  function namespace (line 13) | namespace Eigen {

FILE: deps/eigen/Eigen/src/Core/functors/UnaryFunctors.h
  function namespace (line 13) | namespace Eigen {
  function result_type (line 171) | result_type operator() (const Scalar& a) const { return numext::real(a); }
  function result_type (line 187) | result_type operator() (const Scalar& a) const { return numext::imag(a); }
  function Scalar (line 233) | inline const Scalar operator() (const Scalar& a) const { return numext::...
  function Packet (line 235) | inline Packet packetOp(const Packet& a) const { return internal::pexp(a); }
  function Scalar (line 273) | inline const Scalar operator() (const Scalar& a) const { return numext::...
  function Packet (line 275) | inline Packet packetOp(const Packet& a) const { return internal::plog(a); }
  function Scalar (line 304) | inline const Scalar operator() (const Scalar& a) const { return numext::...
  function Packet (line 306) | inline Packet packetOp(const Packet& a) const { return internal::plog1p(...
  function Scalar (line 324) | inline const Scalar operator() (const Scalar& a) const { EIGEN_USING_STD...
  function Packet (line 326) | inline Packet packetOp(const Packet& a) const { return internal::plog10(...
  function Scalar (line 338) | inline const Scalar operator() (const Scalar& a) const { return numext::...
  function Packet (line 340) | inline Packet packetOp(const Packet& a) const { return internal::psqrt(a...
  function Scalar (line 365) | inline const Scalar operator() (const Scalar& a) const { return Scalar(1...
  function Packet (line 367) | inline Packet packetOp(const Packet& a) const { return internal::prsqrt(...
  function Scalar (line 384) | inline Scalar operator() (const Scalar& a) const { return numext::cos(a); }
  function Packet (line 386) | inline Packet packetOp(const Packet& a) const { return internal::pcos(a); }
  function Scalar (line 403) | inline const Scalar operator() (const Scalar& a) const { return numext::...
  function Packet (line 405) | inline Packet packetOp(const Packet& a) const { return internal::psin(a); }
  function Scalar (line 423) | inline const Scalar operator() (const Scalar& a) const { return numext::...
  function Packet (line 425) | inline Packet packetOp(const Packet& a) const { return internal::ptan(a); }
  function Scalar (line 442) | inline const Scalar operator() (const Scalar& a) const { return numext::...
  function Packet (line 444) | inline Packet packetOp(const Packet& a) const { return internal::pacos(a...
  function Scalar (line 461) | inline const Scalar operator() (const Scalar& a) const { return numext::...
  function Packet (line 463) | inline Packet packetOp(const Packet& a) const { return internal::pasin(a...
  function Scalar (line 481) | inline const Scalar operator() (const Scalar& a) const { return numext::...
  function Packet (line 483) | inline Packet packetOp(const Packet& a) const { return internal::patan(a...
  function Scalar (line 501) | inline const Scalar operator()(const Scalar& a) const { return numext::t...
  function Packet (line 503) | inline Packet packetOp(const Packet& x) const { return ptanh(x); }
  function Scalar (line 537) | inline const Scalar operator() (const Scalar& a) const { return numext::...
  function Packet (line 539) | inline Packet packetOp(const Packet& a) const { return internal::psinh(a...
  function Scalar (line 556) | inline const Scalar operator() (const Scalar& a) const { return numext::...
  function Packet (line 558) | inline Packet packetOp(const Packet& a) const { return internal::pcosh(a...
  function Scalar (line 576) | inline Scalar operator() (const Scalar& a) const { return Scalar(1)/a; }
  function Packet (line 578) | inline const Packet packetOp(const Packet& a) const
  function Scalar (line 592) | inline Scalar operator() (const Scalar& a) const { return a*a; }
  function Packet (line 594) | inline const Packet packetOp(const Packet& a) const
  function Scalar (line 608) | inline Scalar operator() (const Scalar& a) const { return a*a*a; }
  function Packet (line 610) | inline const Packet packetOp(const Packet& a) const
  function EIGEN_STRONG_INLINE (line 623) | EIGEN_STRONG_INLINE const Scalar operator() (const Scalar& a) const { re...
  function Packet (line 625) | inline Packet packetOp(const Packet& a) const { return internal::pround(...
  function EIGEN_STRONG_INLINE (line 642) | EIGEN_STRONG_INLINE const Scalar operator() (const Scalar& a) const { re...
  function Packet (line 644) | inline Packet packetOp(const Packet& a) const { return internal::pfloor(...
  function EIGEN_STRONG_INLINE (line 661) | EIGEN_STRONG_INLINE const Scalar operator() (const Scalar& a) const { re...
  function Packet (line 663) | inline Packet packetOp(const Packet& a) const { return internal::pceil(a...
  function result_type (line 681) | result_type operator() (const Scalar& a) const { return (numext::isnan)(...
  function result_type (line 699) | result_type operator() (const Scalar& a) const { return (numext::isinf)(...
  function result_type (line 717) | result_type operator() (const Scalar& a) const { return (numext::isfinit...
  function const (line 735) | bool operator() (const bool& a) const { return !a; }
  function EIGEN_DEVICE_FUNC (line 753) | EIGEN_DEVICE_FUNC inline const Scalar operator() (const Scalar& a) const
  function EIGEN_DEVICE_FUNC (line 764) | EIGEN_DEVICE_FUNC inline const Scalar operator() (const Scalar& a) const

FILE: deps/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h
  function namespace (line 14) | namespace Eigen {
  function EIGEN_ALWAYS_INLINE (line 317) | EIGEN_ALWAYS_INLINE static void run(const CJ& cj, A& a, B& b, C& c, T& /...
  function gebp_madd (line 331) | void gebp_madd(const CJ& cj, A& a, B& b, C& c, T& t)
  type _RhsScalar (line 355) | typedef _RhsScalar RhsScalar;
  type typename (line 356) | typedef typename ScalarBinaryOpTraits<LhsScalar, RhsScalar>::ReturnType ...
  type typename (line 386) | typedef typename packet_traits<LhsScalar>::type  _LhsPacket;
  type typename (line 387) | typedef typename packet_traits<RhsScalar>::type  _RhsPacket;
  type typename (line 388) | typedef typename packet_traits<ResScalar>::type  _ResPacket;
  type typename (line 390) | typedef typename conditional<Vectorizable,_LhsPacket,LhsScalar>::type Lh...
  type typename (line 391) | typedef typename conditional<Vectorizable,_RhsPacket,RhsScalar>::type Rh...
  type typename (line 392) | typedef typename conditional<Vectorizable,_ResPacket,ResScalar>::type Re...
  type ResPacket (line 394) | typedef ResPacket AccPacket;
  function EIGEN_STRONG_INLINE (line 401) | EIGEN_STRONG_INLINE void broadcastRhs(const RhsScalar* b, RhsPacket& b0,...
  function loadRhs (line 412) | void loadRhs(const RhsScalar* b, RhsPacketType& dest) const
  function EIGEN_STRONG_INLINE (line 417) | EIGEN_STRONG_INLINE void loadRhsQuad(const RhsScalar* b, RhsPacket& dest...
  function loadLhs (line 423) | void loadLhs(const LhsScalar* a, LhsPacketType& dest) const
  function loadLhsUnaligned (line 429) | void loadLhsUnaligned(const LhsScalar* a, LhsPacketType& dest) const
  function madd (line 435) | void madd(const LhsPacketType& a, const RhsPacketType& b, AccPacketType&...
  function EIGEN_STRONG_INLINE (line 450) | EIGEN_STRONG_INLINE void acc(const AccPacket& c, const ResPacket& alpha,...
  function acc (line 456) | void acc(const ResPacketHalf& c, const ResPacketHalf& alpha, ResPacketHa...
  type RealScalar (line 468) | typedef RealScalar RhsScalar;
  type typename (line 469) | typedef typename ScalarBinaryOpTraits<LhsScalar, RhsScalar>::ReturnType ...
  type typename (line 492) | typedef typename packet_traits<LhsScalar>::type  _LhsPacket;
  type typename (line 493) | typedef typename packet_traits<RhsScalar>::type  _RhsPacket;
  type typename (line 494) | typedef typename packet_traits<ResScalar>::type  _ResPacket;
  type typename (line 496) | typedef typename conditional<Vectorizable,_LhsPacket,LhsScalar>::type Lh...
  type typename (line 497) | typedef typename conditional<Vectorizable,_RhsPacket,RhsScalar>::type Rh...
  type typename (line 498) | typedef typename conditional<Vectorizable,_ResPacket,ResScalar>::type Re...
  type ResPacket (line 500) | typedef ResPacket AccPacket;
  function EIGEN_STRONG_INLINE (line 507) | EIGEN_STRONG_INLINE void loadRhs(const RhsScalar* b, RhsPacket& dest) const
  function EIGEN_STRONG_INLINE (line 512) | EIGEN_STRONG_INLINE void loadRhsQuad(const RhsScalar* b, RhsPacket& dest...
  function EIGEN_STRONG_INLINE (line 517) | EIGEN_STRONG_INLINE void loadLhs(const LhsScalar* a, LhsPacket& dest) const
  function EIGEN_STRONG_INLINE (line 522) | EIGEN_STRONG_INLINE void loadLhsUnaligned(const LhsScalar* a, LhsPacket&...
  function EIGEN_STRONG_INLINE (line 527) | EIGEN_STRONG_INLINE void broadcastRhs(const RhsScalar* b, RhsPacket& b0,...
  function EIGEN_STRONG_INLINE (line 537) | EIGEN_STRONG_INLINE void madd(const LhsPacket& a, const RhsPacket& b, Ac...
  function EIGEN_STRONG_INLINE (line 542) | EIGEN_STRONG_INLINE void madd_impl(const LhsPacket& a, const RhsPacket& ...
  function EIGEN_STRONG_INLINE (line 552) | EIGEN_STRONG_INLINE void madd_impl(const LhsScalar& a, const RhsScalar& ...
  function EIGEN_STRONG_INLINE (line 557) | EIGEN_STRONG_INLINE void acc(const AccPacket& c, const ResPacket& alpha,...
  type std (line 603) | typedef std::complex<RealScalar>  LhsScalar;
  type std (line 604) | typedef std::complex<RealScalar>  RhsScalar;
  type std (line 605) | typedef std::complex<RealScalar>  ResScalar;
  type typename (line 625) | typedef typename packet_traits<RealScalar>::type RealPacket;
  type typename (line 626) | typedef typename packet_traits<Scalar>::type     ScalarPacket;
  type DoublePacket (line 627) | typedef DoublePacket<RealPacket> DoublePacketType;
  type typename (line 629) | typedef typename conditional<Vectorizable,RealPacket,  Scalar>::type Lhs...
  type typename (line 630) | typedef typename conditional<Vectorizable,DoublePacketType,Scalar>::type...
  type typename (line 631) | typedef typename conditional<Vectorizable,ScalarPacket,Scalar>::type Res...
  type typename (line 632) | typedef typename conditional<Vectorizable,DoublePacketType,Scalar>::type...
  function EIGEN_STRONG_INLINE (line 643) | EIGEN_STRONG_INLINE void loadRhs(const RhsScalar* b, ResPacket& dest) const
  function EIGEN_STRONG_INLINE (line 649) | EIGEN_STRONG_INLINE void loadRhs(const RhsScalar* b, DoublePacketType& d...
  function EIGEN_STRONG_INLINE (line 655) | EIGEN_STRONG_INLINE void loadRhsQuad(const RhsScalar* b, ResPacket& dest...
  function EIGEN_STRONG_INLINE (line 659) | EIGEN_STRONG_INLINE void loadRhsQuad(const RhsScalar* b, DoublePacketTyp...
  function EIGEN_STRONG_INLINE (line 665) | EIGEN_STRONG_INLINE void broadcastRhs(const RhsScalar* b, RhsPacket& b0,...
  function EIGEN_STRONG_INLINE (line 675) | EIGEN_STRONG_INLINE void broadcastRhs(const RhsScalar* b, DoublePacketTy...
  function EIGEN_STRONG_INLINE (line 683) | EIGEN_STRONG_INLINE void broadcastRhs(const RhsScalar* b, RhsScalar& b0,...
  function EIGEN_STRONG_INLINE (line 691) | EIGEN_STRONG_INLINE void loadLhs(const LhsScalar* a, LhsPacket& dest) const
  function EIGEN_STRONG_INLINE (line 696) | EIGEN_STRONG_INLINE void loadLhsUnaligned(const LhsScalar* a, LhsPacket&...
  function EIGEN_STRONG_INLINE (line 701) | EIGEN_STRONG_INLINE void madd(const LhsPacket& a, const RhsPacket& b, Do...
  function EIGEN_STRONG_INLINE (line 707) | EIGEN_STRONG_INLINE void madd(const LhsPacket& a, const RhsPacket& b, Re...
  function EIGEN_STRONG_INLINE (line 712) | EIGEN_STRONG_INLINE void acc(const Scalar& c, const Scalar& alpha, Scala...
  function EIGEN_STRONG_INLINE (line 714) | EIGEN_STRONG_INLINE void acc(const DoublePacketType& c, const ResPacket&...
  type RealScalar (line 751) | typedef RealScalar  LhsScalar;
  type Scalar (line 752) | typedef Scalar      RhsScalar;
  type Scalar (line 753) | typedef Scalar      ResScalar;
  type typename (line 773) | typedef typename packet_traits<LhsScalar>::type  _LhsPacket;
  type typename (line 774) | typedef typename packet_traits<RhsScalar>::type  _RhsPacket;
  type typename (line 775) | typedef typename packet_traits<ResScalar>::type  _ResPacket;
  type typename (line 777) | typedef typename conditional<Vectorizable,_LhsPacket,LhsScalar>::type Lh...
  type typename (line 778) | typedef typename conditional<Vectorizable,_RhsPacket,RhsScalar>::type Rh...
  type typename (line 779) | typedef typename conditional<Vectorizable,_ResPacket,ResScalar>::type Re...
  type ResPacket (line 781) | typedef ResPacket AccPacket;
  function EIGEN_STRONG_INLINE (line 788) | EIGEN_STRONG_INLINE void loadRhs(const RhsScalar* b, RhsPacket& dest) const
  function broadcastRhs (line 793) | void broadcastRhs(const RhsScalar* b, RhsPacket& b0, RhsPacket& b1, RhsP...
  function EIGEN_STRONG_INLINE (line 805) | EIGEN_STRONG_INLINE void loadLhs(const LhsScalar* a, LhsPacket& dest) const
  function EIGEN_STRONG_INLINE (line 810) | EIGEN_STRONG_INLINE void loadRhsQuad(const RhsScalar* b, RhsPacket& dest...
  function EIGEN_STRONG_INLINE (line 816) | EIGEN_STRONG_INLINE void loadLhsUnaligned(const LhsScalar* a, LhsPacket&...
  function EIGEN_STRONG_INLINE (line 821) | EIGEN_STRONG_INLINE void madd(const LhsPacket& a, const RhsPacket& b, Ac...
  function EIGEN_STRONG_INLINE (line 826) | EIGEN_STRONG_INLINE void madd_impl(const LhsPacket& a, const RhsPacket& ...
  function EIGEN_STRONG_INLINE (line 837) | EIGEN_STRONG_INLINE void madd_impl(const LhsScalar& a, const RhsScalar& ...
  function EIGEN_STRONG_INLINE (line 842) | EIGEN_STRONG_INLINE void acc(const AccPacket& c, const ResPacket& alpha,...
  type gebp_traits (line 861) | typedef gebp_traits<LhsScalar,RhsScalar,ConjugateLhs,ConjugateRhs> Traits;
  type typename (line 862) | typedef typename Traits::ResScalar ResScalar;
  type typename (line 863) | typedef typename Traits::LhsPacket LhsPacket;
  type typename (line 864) | typedef typename Traits::RhsPacket RhsPacket;
  type typename (line 865) | typedef typename Traits::ResPacket ResPacket;
  type typename (line 866) | typedef typename Traits::AccPacket AccPacket;
  type gebp_traits (line 868) | typedef gebp_traits<RhsScalar,LhsScalar,ConjugateRhs,ConjugateLhs> Swapp...
  type typename (line 869) | typedef typename SwappedTraits::ResScalar SResScalar;
  type typename (line 870) | typedef typename SwappedTraits::LhsPacket SLhsPacket;
  type typename (line 871) | typedef typename SwappedTraits::RhsPacket SRhsPacket;
  type typename (line 872) | typedef typename SwappedTraits::ResPacket SResPacket;
  type typename (line 873) | typedef typename SwappedTraits::AccPacket SAccPacket;
  type typename (line 875) | typedef typename DataMapper::LinearMapper LinearMapper;
  type typename (line 1591) | typedef typename conditional<SwappedTraits::LhsProgress>=8,typename
  type typename (line 1592) | typedef typename conditional<SwappedTraits::LhsProgress>=8,typename
  type typename (line 1593) | typedef typename conditional<SwappedTraits::LhsProgress>=8,typename
  type typename (line 1594) | typedef typename conditional<SwappedTraits::LhsProgress>=8,typename
  type typename (line 1901) | typedef typename DataMapper::LinearMapper LinearMapper;
  type typename (line 2025) | typedef typename DataMapper::LinearMapper LinearMapper;
  function l1CacheSize (line 2118) | inline std::ptrdiff_t l1CacheSize()
  function l2CacheSize (line 2127) | inline std::ptrdiff_t l2CacheSize()
  function l3CacheSize (line 2137) | inline std::ptrdiff_t l3CacheSize()
  function setCpuCacheSizes (line 2149) | inline void setCpuCacheSizes(std::ptrdiff_t l1, std::ptrdiff_t l2, std::...

FILE: deps/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h
  function namespace (line 13) | namespace Eigen {
  type typename (line 60) | typedef typename ScalarBinaryOpTraits<LhsScalar, RhsScalar>::ReturnType ...
  type const_blas_data_mapper (line 70) | typedef const_blas_data_mapper<RhsScalar, Index, RhsStorageOrder> RhsMap...
  type blas_data_mapper (line 71) | typedef blas_data_mapper<typename
  function initParallelSession (line 217) | void initParallelSession(Index num_threads) const
  type typename (line 235) | typedef typename Gemm::Traits Traits;
  type _LhsScalar (line 251) | typedef _LhsScalar LhsScalar;
  type _RhsScalar (line 252) | typedef _RhsScalar RhsScalar;
  function LhsScalar (line 272) | inline LhsScalar* blockA() { return m_blockA; }
  function RhsScalar (line 273) | inline RhsScalar* blockB() { return m_blockB; }
  type typename (line 287) | typedef typename conditional<Transpose,_RhsScalar,_LhsScalar>::type LhsS...
  type typename (line 288) | typedef typename conditional<Transpose,_LhsScalar,_RhsScalar>::type RhsS...
  type gebp_traits (line 289) | typedef gebp_traits<LhsScalar,RhsScalar> Traits;
  function initParallel (line 319) | void initParallel(Index, Index, Index, Index)
  function allocateA (line 322) | inline void allocateA() {}
  function allocateB (line 323) | inline void allocateB() {}
  function allocateAll (line 324) | inline void allocateAll() {}
  type typename (line 336) | typedef typename conditional<Transpose,_RhsScalar,_LhsScalar>::type LhsS...
  type typename (line 337) | typedef typename conditional<Transpose,_LhsScalar,_RhsScalar>::type RhsS...
  type gebp_traits (line 338) | typedef gebp_traits<LhsScalar,RhsScalar> Traits;
  function initParallel (line 365) | void initParallel(Index rows, Index cols, Index depth, Index num_threads)
  function allocateA (line 378) | void allocateA()
  function allocateB (line 384) | void allocateB()
  function allocateAll (line 390) | void allocateAll()
  function namespace (line 405) | namespace internal {

FILE: deps/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h
  function namespace (line 13) | namespace Eigen {
  type gebp_traits (line 141) | typedef gebp_traits<LhsScalar,RhsScalar,ConjLhs,ConjRhs> Traits;
  type typename (line 142) | typedef typename Traits::ResScalar ResScalar;
  type blas_data_mapper (line 149) | typedef blas_data_mapper<ResScalar, Index, ColMajor, Unaligned, ResInner...
  type blas_data_mapper (line 150) | typedef blas_data_mapper<ResScalar, Index, ColMajor, Unaligned> BufferMa...
  type typename (line 211) | typedef typename internal::remove_all<typename
  type internal (line 212) | typedef internal::blas_traits<Lhs> LhsBlasTraits;
  type typename (line 213) | typedef typename LhsBlasTraits::DirectLinearAccessType ActualLhs;
  type typename (line 214) | typedef typename internal::remove_all<ActualLhs>::type _ActualLhs;
  type typename (line 217) | typedef typename internal::remove_all<typename
  type internal (line 218) | typedef internal::blas_traits<Rhs> RhsBlasTraits;
  type typename (line 219) | typedef typename RhsBlasTraits::DirectLinearAccessType ActualRhs;
  type typename (line 220) | typedef typename internal::remove_all<ActualRhs>::type _ActualRhs;
  type internal (line 258) | typedef internal::blas_traits<Lhs> LhsBlasTraits;
  type typename (line 259) | typedef typename LhsBlasTraits::DirectLinearAccessType ActualLhs;
  type typename (line 260) | typedef typename internal::remove_all<ActualLhs>::type _ActualLhs;
  type typename (line 263) | typedef typename internal::remove_all<typename
  type internal (line 264) | typedef internal::blas_traits<Rhs> RhsBlasTraits;
  type typename (line 265) | typedef typename RhsBlasTraits::DirectLinearAccessType ActualRhs;
  type typename (line 266) | typedef typename internal::remove_all<ActualRhs>::type _ActualRhs;
  type internal (line 286) | typedef internal::gemm_blocking_space<IsRowMajor ? RowMajor : ColMajor,t...

FILE: deps/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h
  function namespace (line 36) | namespace Eigen {

FILE: deps/eigen/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h
  function namespace (line 38) | namespace internal {

FILE: deps/eigen/Eigen/src/Core/products/GeneralMatrixVector.h
  function namespace (line 13) | namespace Eigen {
  type typename (line 347) | typedef typename packet_traits<LhsScalar>::type  _LhsPacket;
  type typename (line 348) | typedef typename packet_traits<RhsScalar>::type  _RhsPacket;
  type typename (line 349) | typedef typename packet_traits<ResScalar>::type  _ResPacket;
  type typename (line 351) | typedef typename conditional<Vectorizable,_LhsPacket,LhsScalar>::type Lh...
  type typename (line 352) | typedef typename conditional<Vectorizable,_RhsPacket,RhsScalar>::type Rh...
  type typename (line 353) | typedef typename conditional<Vectorizable,_ResPacket,ResScalar>::type Re...
  type typename (line 387) | typedef typename LhsMapper::VectorMapper LhsScalars;

FILE: deps/eigen/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h
  function namespace (line 36) | namespace Eigen {

FILE: deps/eigen/Eigen/src/Core/products/Parallelizer.h
  function namespace (line 13) | namespace Eigen {

FILE: deps/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h
  function namespace (line 13) | namespace Eigen {
  type gebp_traits (line 335) | typedef gebp_traits<Scalar,Scalar> Traits;
  type const_blas_data_mapper (line 337) | typedef const_blas_data_mapper<Scalar, Index, LhsStorageOrder> LhsMapper;
  type const_blas_data_mapper (line 338) | typedef const_blas_data_mapper<Scalar, Index, (LhsStorageOrder == RowMaj...
  type const_blas_data_mapper (line 339) | typedef const_blas_data_mapper<Scalar, Index, RhsStorageOrder> RhsMapper;
  type blas_data_mapper (line 340) | typedef blas_data_mapper<typename
  type gebp_traits (line 430) | typedef gebp_traits<Scalar,Scalar> Traits;
  type const_blas_data_mapper (line 432) | typedef const_blas_data_mapper<Scalar, Index, LhsStorageOrder> LhsMapper;
  type blas_data_mapper (line 433) | typedef blas_data_mapper<typename
  function namespace (line 471) | namespace internal {

FILE: deps/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h
  function namespace (line 13) | namespace Eigen {
  function namespace (line 160) | namespace internal {

FILE: deps/eigen/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h
  function namespace (line 36) | namespace Eigen {

FILE: deps/eigen/Eigen/src/Core/products/SelfadjointProduct.h
  function namespace (line 19) | namespace Eigen {
  type internal (line 56) | typedef internal::blas_traits<OtherType> OtherBlasTraits;
  type typename (line 57) | typedef typename OtherBlasTraits::DirectLinearAccessType ActualOtherType;
  type typename (line 58) | typedef typename internal::remove_all<ActualOtherType>::type _ActualOthe...
  type internal (line 88) | typedef internal::blas_traits<OtherType> OtherBlasTraits;
  type typename (line 89) | typedef typename OtherBlasTraits::DirectLinearAccessType ActualOtherType;
  type typename (line 90) | typedef typename internal::remove_all<ActualOtherType>::type _ActualOthe...
  type internal (line 103) | typedef internal::gemm_blocking_space<IsRowMajor ? RowMajor : ColMajor,S...

FILE: deps/eigen/Eigen/src/Core/products/SelfadjointRank2Update.h
  function namespace (line 13) | namespace Eigen {
  type typename (line 64) | typedef typename UBlasTraits::DirectLinearAccessType ActualUType;
  type typename (line 65) | typedef typename internal::remove_all<ActualUType>::type _ActualUType;
  type internal (line 68) | typedef internal::blas_traits<DerivedV> VBlasTraits;
  type typename (line 69) | typedef typename VBlasTraits::DirectLinearAccessType ActualVType;
  type typename (line 70) | typedef typename internal::remove_all<ActualVType>::type _ActualVType;
  type typename (line 82) | typedef typename internal::remove_all<typename
  type typename (line 83) | typedef typename internal::remove_all<typename

FILE: deps/eigen/Eigen/src/Core/products/TriangularMatrixMatrix.h
  function namespace (line 13) | namespace Eigen {
  type const_blas_data_mapper (line 124) | typedef const_blas_data_mapper<Scalar, Index, LhsStorageOrder> LhsMapper;
  type const_blas_data_mapper (line 125) | typedef const_blas_data_mapper<Scalar, Index, RhsStorageOrder> RhsMapper;
  type blas_data_mapper (line 126) | typedef blas_data_mapper<typename
  type const_blas_data_mapper (line 283) | typedef const_blas_data_mapper<Scalar, Index, LhsStorageOrder> LhsMapper;
  type const_blas_data_mapper (line 284) | typedef const_blas_data_mapper<Scalar, Index, RhsStorageOrder> RhsMapper;
  type blas_data_mapper (line 285) | typedef blas_data_mapper<typename
  function namespace (line 403) | namespace internal {

FILE: deps/eigen/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h
  function namespace (line 36) | namespace Eigen {

FILE: deps/eigen/Eigen/src/Core/products/TriangularMatrixVector.h
  function namespace (line 13) | namespace Eigen {
  type Map (line 114) | typedef Map<const Matrix<LhsScalar,Dynamic,Dynamic,RowMajor>, 0, OuterSt...
  function LhsMap (line 115) | const LhsMap lhs(_lhs,rows,cols,OuterStride<>(lhsStride));
  function namespace (line 171) | namespace internal {
  function namespace (line 200) | namespace internal {
  function run (line 290) | void run(const Lhs &lhs, const Rhs &rhs, Dest& dest, const typename Dest...

FILE: deps/eigen/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h
  type VectorX (line 96) | typedef VectorX##EIGPREFIX VectorRhs;
  type VectorX (line 185) | typedef VectorX##EIGPREFIX VectorRhs;

FILE: deps/eigen/Eigen/src/Core/products/TriangularSolverMatrix.h
  function namespace (line 13) | namespace Eigen {
  type const_blas_data_mapper (line 56) | typedef const_blas_data_mapper<Scalar, Index, TriStorageOrder> TriMapper;
  type blas_data_mapper (line 57) | typedef blas_data_mapper<Scalar, Index, ColMajor, Unaligned, OtherInnerS...
  type gebp_traits (line 61) | typedef gebp_traits<Scalar,Scalar> Traits;
  type typename (line 205) | typedef typename NumTraits<Scalar>::Real RealScalar;
  type blas_data_mapper (line 207) | typedef blas_data_mapper<Scalar, Index, ColMajor, Unaligned, OtherInnerS...
  type const_blas_data_mapper (line 208) | typedef const_blas_data_mapper<Scalar, Index, TriStorageOrder> RhsMapper;
  type gebp_traits (line 212) | typedef gebp_traits<Scalar,Scalar> Traits;

FILE: deps/eigen/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h
  function namespace (line 36) | namespace Eigen {

FILE: deps/eigen/Eigen/src/Core/products/TriangularSolverVector.h
  function namespace (line 13) | namespace Eigen {
  type Map (line 38) | typedef Map<const Matrix<LhsScalar,Dynamic,Dynamic,RowMajor>, 0, OuterSt...

FILE: deps/eigen/Eigen/src/Core/util/BlasUtil.h
  function namespace (line 16) | namespace Eigen {
  function EIGEN_STRONG_INLINE (line 81) | EIGEN_STRONG_INLINE Scalar pmadd(const Scalar& x, const Scalar& y, const...
  function EIGEN_STRONG_INLINE (line 84) | EIGEN_STRONG_INLINE Scalar pmul(const Scalar& x, const Scalar& y) const
  function EIGEN_STRONG_INLINE (line 91) | EIGEN_STRONG_INLINE Scalar pmadd(const Scalar& x, const Scalar& y, const...
  function EIGEN_STRONG_INLINE (line 94) | EIGEN_STRONG_INLINE Scalar pmul(const Scalar& x, const Scalar& y) const
  function EIGEN_STRONG_INLINE (line 101) | EIGEN_STRONG_INLINE Scalar pmadd(const Scalar& x, const Scalar& y, const...
  function EIGEN_STRONG_INLINE (line 104) | EIGEN_STRONG_INLINE Scalar pmul(const Scalar& x, const Scalar& y) const
  type std (line 110) | typedef std::complex<RealScalar> Scalar;
  function EIGEN_STRONG_INLINE (line 111) | EIGEN_STRONG_INLINE Scalar pmadd(const Scalar& x, const RealScalar& y, c...
  function EIGEN_STRONG_INLINE (line 113) | EIGEN_STRONG_INLINE Scalar pmul(const Scalar& x, const RealScalar& y) const
  type std (line 119) | typedef std::complex<RealScalar> Scalar;
  function EIGEN_STRONG_INLINE (line 120) | EIGEN_STRONG_INLINE Scalar pmadd(const RealScalar& x, const Scalar& y, c...
  function EIGEN_STRONG_INLINE (line 122) | EIGEN_STRONG_INLINE Scalar pmul(const RealScalar& x, const Scalar& y) const
  function To (line 127) | To run(const From& x) { return To(x); }
  function typename (line 132) | typename NumTraits<Scalar>::Real run(const Scalar& x) { return numext::r...
  function m_data (line 139) | m_data(data) {}
  function Scalar (line 141) | Scalar operator()(Index i) const {
  function EIGEN_ALWAYS_INLINE (line 145) | EIGEN_ALWAYS_INLINE Packet load(Index i) const {
  function aligned (line 150) | bool aligned(Index i) const {
  type typename (line 164) | typedef typename packet_traits<Scalar>::type Packet;
  type typename (line 165) | typedef typename packet_traits<Scalar>::half HalfPacket;
  function prefetch (line 174) | void prefetch(int i) const {
  function Packet (line 182) | Packet loadPacket(Index i) const {
  function HalfPacket (line 186) | HalfPacket loadHalfPacket(Index i) const {
  function storePacket (line 190) | void storePacket(Index i, const Packet &p) const {
  type typename (line 206) | typedef typename packet_traits<Scalar>::type Packet;
  type typename (line 207) | typedef typename packet_traits<Scalar>::half HalfPacket;
  type BlasLinearMapper (line 209) | typedef BlasLinearMapper<Scalar, Index, AlignmentType> LinearMapper;
  type BlasVectorMapper (line 210) | typedef BlasVectorMapper<Scalar, Index> VectorMapper;
  function LinearMapper (line 224) | LinearMapper getLinearMapper(Index i, Index j) const {
  function VectorMapper (line 228) | VectorMapper getVectorMapper(Index i, Index j) const {
  function Packet (line 238) | Packet loadPacket(Index i, Index j) const {
  function HalfPacket (line 242) | HalfPacket loadHalfPacket(Index i, Index j) const {
  function scatterPacket (line 247) | void scatterPacket(Index i, Index j, const SubPacket &p) const {
  function EIGEN_ALWAYS_INLINE (line 252) | EIGEN_ALWAYS_INLINE SubPacket gatherPacket(Index i, Index j) const {
  function EIGEN_DEVICE_FUNC (line 257) | EIGEN_DEVICE_FUNC const Scalar* data() const { return m_data; }
  function EIGEN_DEVICE_FUNC (line 259) | EIGEN_DEVICE_FUNC Index firstAligned(Index size) const {
  type typename (line 279) | typedef typename packet_traits<Scalar>::half HalfPacket;
  function EIGEN_DEVICE_FUNC (line 281) | EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE BlasLinearMapper(Scalar *data,Inde...
  function prefetch (line 283) | void prefetch(int i) const {
  function Packet (line 291) | Packet loadPacket(Index i) const {
  function storePacket (line 296) | void storePacket(Index i, const PacketType &p) const {
  type typename (line 310) | typedef typename packet_traits<Scalar>::half HalfPacket;
  type BlasLinearMapper (line 312) | typedef BlasLinearMapper<Scalar, Index, AlignmentType,Incr> LinearMapper;
  function blas_data_mapper (line 316) | blas_data_mapper
  function LinearMapper (line 321) | LinearMapper getLinearMapper(Index i, Index j) const {
  function Packet (line 330) | Packet loadPacket(Index i, Index j) const {
  function EIGEN_ALWAYS_INLINE (line 335) | EIGEN_ALWAYS_INLINE PacketT load(Index i, Index j) const {
  function scatterPacket (line 340) | void scatterPacket(Index i, Index j, const SubPacket &p) const {
  function EIGEN_ALWAYS_INLINE (line 345) | EIGEN_ALWAYS_INLINE SubPacket gatherPacket(Index i, Index j) const {
  type typename (line 372) | typedef typename traits<XprType>::Scalar Scalar;
  type XprType (line 373) | typedef const XprType& ExtractType;
  type XprType (line 374) | typedef XprType _ExtractType;
  type typename (line 384) | typedef typename conditional<bool(HasUsableDirectAccess),
  function ExtractType (line 388) | static inline ExtractType extract(const XprType& x) { return x; }
  function Scalar (line 389) | static inline const Scalar extractScalarFactor(const XprType&) { return ...
  type CwiseUnaryOp (line 398) | typedef CwiseUnaryOp<scalar_conjugate_op<Scalar>, NestedXpr> XprType;
  type typename (line 399) | typedef typename Base::ExtractType ExtractType;
  function ExtractType (line 405) | static inline ExtractType extract(const XprType& x) { return Base::extra...
  function Scalar (line 406) | static inline Scalar extractScalarFactor(const XprType& x) { return conj...
  type CwiseBinaryOp (line 415) | typedef CwiseBinaryOp<scalar_product_op<Scalar>, const
  type typename (line 416) | typedef typename Base::ExtractType ExtractType;
  function ExtractType (line 417) | static inline ExtractType extract(const XprType& x) { return Base::extra...
  function Scalar (line 418) | static inline Scalar extractScalarFactor(const XprType& x)
  type CwiseBinaryOp (line 426) | typedef CwiseBinaryOp<scalar_product_op<Scalar>, NestedXpr, const
  type typename (line 427) | typedef typename Base::ExtractType ExtractType;
  function ExtractType (line 428) | static inline ExtractType extract(const XprType& x) { return Base::extra...
  function Scalar (line 429) | static inline Scalar extractScalarFactor(const XprType& x)
  type CwiseUnaryOp (line 444) | typedef CwiseUnaryOp<scalar_opposite_op<Scalar>, NestedXpr> XprType;
  type typename (line 445) | typedef typename Base::ExtractType ExtractType;
  function ExtractType (line 446) | static inline ExtractType extract(const XprType& x) { return Base::extra...
  function Scalar (line 447) | static inline Scalar extractScalarFactor(const XprType& x)
  type typename (line 456) | typedef typename NestedXpr::Scalar Scalar;
  type blas_traits (line 457) | typedef blas_traits<NestedXpr> Base;
  type Transpose (line 458) | typedef Transpose<NestedXpr> XprType;
  type Transpose (line 459) | typedef Transpose<const typename
  type Transpose (line 460) | typedef Transpose<const typename
  type typename (line 461) | typedef typename conditional<bool(Base::HasUsableDirectAccess),
  function ExtractType (line 468) | static inline ExtractType extract(const XprType& x) { return ExtractType...
  function Scalar (line 469) | static inline Scalar extractScalarFactor(const XprType& x) { return Base...
  function typename (line 479) | static const typename T::Scalar* run(const T& m)
  function typename (line 487) | static typename T::Scalar* run(const T&) { return 0; }
  function typename (line 490) | typename T::Scalar* extract_data(const T& m)

FILE: deps/eigen/Eigen/src/Core/util/Constants.h
  type UpLoType (line 202) | enum UpLoType {
  type AlignmentType (line 227) | enum AlignmentType {
  type CornerType (line 257) | enum CornerType { TopLeft, TopRight, BottomLeft, BottomRight }
  type DirectionType (line 262) | enum DirectionType {
  type TraversalType (line 276) | enum TraversalType {
  type UnrollingType (line 298) | enum UnrollingType {
  type SpecializedType (line 310) | enum SpecializedType {
  type StorageOptions (line 318) | enum StorageOptions {
  type SideType (line 331) | enum SideType {
  type NoChange_t (line 350) | enum NoChange_t   { NoChange }
  type Sequential_t (line 351) | enum Sequential_t { Sequential }
  type Default_t (line 352) | enum Default_t    { Default }
  type AmbiVectorMode (line 356) | enum AmbiVectorMode {
  type AccessorLevels (line 364) | enum AccessorLevels {
  type DecompositionOptions (line 377) | enum DecompositionOptions {
  type QRPreconditioners (line 413) | enum QRPreconditioners {
  type ComputationInfo (line 430) | enum ComputationInfo {
  type TransformTraits (line 445) | enum TransformTraits {
  function namespace (line 459) | namespace Architecture
  type ProductImplType (line 483) | enum ProductImplType
  type Action (line 488) | enum Action {GetAction, SetAction}
  type Dense (line 491) | struct Dense {}
  type Sparse (line 494) | struct Sparse {}
  type SolverStorage (line 497) | struct SolverStorage {}
  type PermutationStorage (line 500) | struct PermutationStorage {}
  type TranspositionsStorage (line 503) | struct TranspositionsStorage {}
  type MatrixXpr (line 506) | struct MatrixXpr {}
  type ArrayXpr (line 509) | struct ArrayXpr {}
  type HomogeneousShape (line 514) | struct HomogeneousShape       { static std::string debugName() { return ...

FILE: deps/eigen/Eigen/src/Core/util/ForwardDeclarations.h
  function namespace (line 14) | namespace Eigen {

FILE: deps/eigen/Eigen/src/Core/util/MKL_support.h
  function namespace (line 116) | namespace Eigen {

FILE: deps/eigen/Eigen/src/Core/util/Macros.h
  function namespace (line 559) | namespace Eigen {
  function namespace (line 570) | namespace Eigen {
  function namespace (line 628) | namespace Eigen {

FILE: deps/eigen/Eigen/src/Core/util/Memory.h
  function namespace (line 62) | namespace Eigen {
  function conditional_aligned_free (line 228) | inline void conditional_aligned_free(void *ptr)
  function destruct_elements_of_array (line 255) | inline void destruct_elements_of_array(T *ptr, std::size_t size)
  function T (line 265) | inline T* construct_elements_of_array(T *ptr, std::size_t size)
  function check_size_for_overflow (line 286) | void check_size_for_overflow(std::size_t size)
  function T (line 296) | inline T* aligned_new(std::size_t size)
  function T (line 312) | inline T* conditional_aligned_new(std::size_t size)
  function aligned_delete (line 331) | inline void aligned_delete(T *ptr, std::size_t size)
  function conditional_aligned_delete (line 340) | inline void conditional_aligned_delete(T *ptr, std::size_t size)
  function T (line 346) | inline T* conditional_aligned_realloc_new(T* pts, std::size_t new_size, ...
  function T (line 369) | inline T* conditional_aligned_new_auto(std::size_t size)
  function conditional_aligned_delete_auto (line 412) | inline void conditional_aligned_delete_auto(T *ptr, std::size_t size)
  function Index (line 439) | inline Index first_aligned(const Scalar* array, Index size)
  function Index (line 467) | inline Index first_default_aligned(const Scalar* array, Index size)
  function Index (line 476) | Index first_multiple(Index size, Index base)
  function smart_copy (line 485) | void smart_copy(const T* start, const T* end, T* target)
  function EIGEN_DEVICE_FUNC (line 491) | EIGEN_DEVICE_FUNC static inline void run(const T* start, const T* end, T...
  function EIGEN_DEVICE_FUNC (line 501) | EIGEN_DEVICE_FUNC static inline void run(const T* start, const T* end, T...
  function run (line 514) | static inline void run(const T* start, const T* end, T* target)
  function run (line 524) | static inline void run(const T* start, const T* end, T* target)
  function T (line 596) | const T& operator[](std::ptrdiff_t i) const { return m_ptr[i]; }
  function T (line 598) | const T* ptr() const { return m_ptr; }
  function operator (line 599) | operator const T*() const { return m_ptr; }
  function operator (line 682) | operator delete(void *ptr, const std::nothrow_t&) EIGEN_NO_THROW { \
  type eigen_aligned_operator_new_marker_type (line 685) | typedef void eigen_aligned_operator_new_marker_type;
  type T (line 726) | typedef T*              pointer;
  type T (line 727) | typedef const T*        const_pointer;
  type T (line 728) | typedef T&              reference;
  type T (line 729) | typedef const T&        const_reference;
  type T (line 730) | typedef T               value_type;
  type aligned_allocator (line 735) | typedef aligned_allocator<U> other;
  function deallocate (line 761) | void deallocate(pointer p, size_type /*num*/)
  function namespace (line 792) | namespace internal {

FILE: deps/eigen/Eigen/src/Core/util/Meta.h
  function namespace (line 23) | namespace Eigen {
  type T (line 148) | typedef const T type;
  type T (line 149) | typedef T const& type;
  type T (line 150) | typedef T const* type;
  type T (line 151) | typedef T const* const type;
  type T (line 152) | typedef T const* const type;
  type any_conversion (line 159) | struct any_conversion
  type yes (line 164) | struct yes {int a[1];}
  type no (line 165) | struct no  {int a[2];}
  type T (line 195) | typedef T type;
  function namespace (line 203) | namespace device {
  function class (line 302) | class noncopyable
  type typename (line 320) | typedef typename std::result_of<T>::type type1;
  type typename (line 321) | typedef typename remove_all<type1>::type type;
  type has_none (line 326) | struct has_none {int a[1];}
  type has_std_result_type (line 327) | struct has_std_result_type {int a[2];}
  type has_tr1_result (line 328) | struct has_tr1_result {int a[3];}
  type typename (line 331) | typedef typename internal::remove_all<ArgType>::type type;
  type typename (line 349) | typedef typename unary_result_of_select<Func, ArgType, FunctorType>::typ...
  type typename (line 353) | typedef typename internal::remove_all<ArgType0>::type type;
  type typename (line 373) | typedef typename binary_result_of_select<Func, ArgType0, ArgType1, Funct...
  type typename (line 377) | typedef typename internal::remove_all<ArgType0>::type type;
  type typename (line 397) | typedef typename ternary_result_of_select<Func, ArgType0, ArgType1, ArgT...
  type meta_yes (line 401) | struct meta_yes { char a[1]; }
  type meta_no (line 402) | struct meta_no  { char a[2]; }
  function meta_yes (line 419) | meta_yes testFunctor(C const *,typename enable_if<(sizeof(return_ptr<C>(...
  function namespace (line 545) | namespace Eigen {
  function namespace (line 557) | namespace Eigen {

FILE: deps/eigen/Eigen/src/Core/util/StaticAssert.h
  function namespace (line 37) | namespace Eigen {

FILE: deps/eigen/Eigen/src/Core/util/XprHelper.h
  function namespace (line 25) | namespace Eigen {
  function class (line 103) | class no_assignment_operator
  type typename (line 205) | typedef typename find_best_packet_helper<Size,typename
  type typename (line 296) | typedef typename plain_matrix_type_dense<T,typename
  type typename (line 300) | typedef typename T::PlainObject type;
  type typename (line 333) | typedef typename plain_matrix_type<T>::type type;
  type typename (line 346) | typedef typename plain_matrix_type<T>::type type;
  type typename (line 369) | typedef typename plain_matrix_type_dense<T,typename
  type Matrix (line 382) | typedef Matrix<typename
  type Matrix (line 400) | typedef Matrix<typename
  type typename (line 415) | typedef typename conditional<
  type typename (line 421) | typedef typename conditional<
  type typename (line 432) | typedef typename conditional<
  type typename (line 469) | typedef typename conditional<Evaluate, PlainObject, typename
  function T (line 474) | inline T* const_cast_ptr(const T* ptr)
  type typename (line 508) | typedef typename XprType::Scalar CurrentScalarType;
  type typename (line 509) | typedef typename remove_all<CastType>::type _CastType;
  type typename (line 510) | typedef typename _CastType::Scalar NewScalarType;
  type typename (line 511) | typedef typename conditional<is_same<CurrentScalarType,NewScalarType>::v...
  type A (line 519) | typedef A ret;
  type A (line 523) | typedef A ret;
  type A (line 527) | typedef A ret;
  type Matrix (line 598) | typedef Matrix<Scalar, 1, ExpressionType::ColsAtCompileTime,
  type Array (line 600) | typedef Array<Scalar, 1, ExpressionType::ColsAtCompileTime,
  type typename (line 603) | typedef typename conditional<
  type Matrix (line 613) | typedef Matrix<Scalar, ExpressionType::RowsAtCompileTime, 1,
  type Array (line 615) | typedef Array<Scalar, ExpressionType::RowsAtCompileTime, 1,
  type typename (line 618) | typedef typename conditional<
  type Matrix (line 631) | typedef Matrix<Scalar, diag_size, 1, ExpressionType::PlainObject::Options
  type Array (line 632) | typedef Array<Scalar, diag_size, 1, ExpressionType::PlainObject::Options
  type typename (line 634) | typedef typename conditional<
  type Array (line 646) | typedef Array<Scalar,  traits<Expr>::RowsAtCompileTime,   traits<Expr>::...
  type Matrix (line 649) | typedef Matrix<Scalar,  traits<Expr>::RowsAtCompileTime,   traits<Expr>:...
  type CwiseNullaryOp (line 652) | typedef CwiseNullaryOp<scalar_constant_op<Scalar>, const
  type glue_shapes (line 675) | struct glue_shapes
  type TriangularShape (line 675) | typedef TriangularShape type;
  type ScalarBinaryOpTraits (line 783) | struct ScalarBinaryOpTraits
  type T (line 793) | typedef T ReturnType;
  type T (line 799) | typedef T ReturnType;
  type T (line 804) | typedef T ReturnType;
  type T (line 811) | typedef T ReturnType;
  type T (line 818) | typedef T ReturnType;
  type ReturnType (line 825) | typedef void ReturnType;

FILE: deps/eigen/Eigen/src/Householder/BlockHouseholder.h
  function namespace (line 16) | namespace Eigen {

FILE: deps/eigen/Eigen/src/Householder/Householder.h
  function namespace (line 14) | namespace Eigen {

FILE: deps/eigen/Eigen/src/Householder/HouseholderSequence.h
  function namespace (line 14) | namespace Eigen {
  type Block (line 88) | typedef Block<const VectorsType, Dynamic, 1> EssentialVectorType;
  type HouseholderSequence (line 89) | typedef HouseholderSequence<VectorsType, CoeffsType, OnTheLeft> Househol...
  function EssentialVectorType (line 90) | static inline const EssentialVectorType essentialVector(const Householde...
  type HouseholderSequence (line 101) | typedef HouseholderSequence<VectorsType, CoeffsType, OnTheRight> Househo...
  function EssentialVectorType (line 102) | static inline const EssentialVectorType essentialVector(const Householde...
  type typename (line 111) | typedef typename ScalarBinaryOpTraits<OtherScalarType, typename
  type Matrix (line 113) | typedef Matrix<ResultScalar, MatrixType::RowsAtCompileTime, MatrixType::...
  type typename (line 131) | typedef typename internal::traits<HouseholderSequence>::Scalar Scalar;
  type HouseholderSequence (line 133) | typedef HouseholderSequence<
  function EssentialVectorType (line 202) | const EssentialVectorType essentialVector(Index k) const
  type Block (line 326) | typedef Block<typename
  type internal (line 364) | struct internal

FILE: deps/eigen/Eigen/src/Jacobi/Jacobi.h
  function namespace (line 14) | namespace Eigen {
  function namespace (line 258) | namespace internal {
  function namespace (line 299) | namespace internal {
  type typename (line 434) | typedef typename VectorX::Scalar Scalar;

FILE: deps/eigen/Eigen/src/QR/ColPivHouseholderQR.h
  function namespace (line 14) | namespace Eigen {
  function HouseholderSequenceType (line 181) | HouseholderSequenceType householderQ() const;
  function isInjective (line 285) | inline bool isInjective() const
  function isInvertible (line 310) | inline bool isInvertible() const
  function Index (line 394) | inline Index nonzeroPivots() const
  function check_template_parameters (line 427) | static void check_template_parameters()
  function namespace (line 614) | namespace internal {

FILE: deps/eigen/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h
  function namespace (line 37) | namespace Eigen {

FILE: deps/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h
  function namespace (line 13) | namespace Eigen {
  function namespace (line 528) | namespace internal {

FILE: deps/eigen/Eigen/src/QR/FullPivHouseholderQR.h
  function namespace (line 14) | namespace Eigen {
  function MatrixType (line 188) | const MatrixType& matrixQR() const
  function isInjective (line 276) | inline bool isInjective() const
  function isInvertible (line 301) | inline bool isInvertible() const
  function Index (line 385) | inline Index nonzeroPivots() const
  type internal (line 485) | typedef internal::scalar_score_coeff_op<Scalar> Scoring;
  type typename (line 486) | typedef typename Scoring::result_type Score;
  function namespace (line 576) | namespace internal {

FILE: deps/eigen/Eigen/src/QR/HouseholderQR.h
  function namespace (line 15) | namespace Eigen {
  function namespace (line 252) | namespace internal {

FILE: deps/eigen/Eigen/src/QR/HouseholderQR_LAPACKE.h
  function namespace (line 37) | namespace Eigen {

FILE: deps/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.h
  function Derived (line 304) | const Derived>

FILE: deps/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.h
  type CwiseUnaryOp (line 3) | typedef CwiseUnaryOp<internal::scalar_abs_op<Scalar>, const
  type CwiseUnaryOp (line 4) | typedef CwiseUnaryOp<internal::scalar_arg_op<Scalar>, const
  type CwiseUnaryOp (line 5) | typedef CwiseUnaryOp<internal::scalar_abs2_op<Scalar>, const
  type CwiseUnaryOp (line 6) | typedef CwiseUnaryOp<internal::scalar_sqrt_op<Scalar>, const
  type CwiseUnaryOp (line 7) | typedef CwiseUnaryOp<internal::scalar_rsqrt_op<Scalar>, const
  type CwiseUnaryOp (line 8) | typedef CwiseUnaryOp<internal::scalar_sign_op<Scalar>, const
  type CwiseUnaryOp (line 9) | typedef CwiseUnaryOp<internal::scalar_inverse_op<Scalar>, const
  type CwiseUnaryOp (line 10) | typedef CwiseUnaryOp<internal::scalar_boolean_not_op<Scalar>, const
  type CwiseUnaryOp (line 12) | typedef CwiseUnaryOp<internal::scalar_exp_op<Scalar>, const
  type CwiseUnaryOp (line 13) | typedef CwiseUnaryOp<internal::scalar_log_op<Scalar>, const
  type CwiseUnaryOp (line 14) | typedef CwiseUnaryOp<internal::scalar_log1p_op<Scalar>, const
  type CwiseUnaryOp (line 15) | typedef CwiseUnaryOp<internal::scalar_log10_op<Scalar>, const
  type CwiseUnaryOp (line 16) | typedef CwiseUnaryOp<internal::scalar_cos_op<Scalar>, const
  type CwiseUnaryOp (line 17) | typedef CwiseUnaryOp<internal::scalar_sin_op<Scalar>, const
  type CwiseUnaryOp (line 18) | typedef CwiseUnaryOp<internal::scalar_tan_op<Scalar>, const
  type CwiseUnaryOp (line 19) | typedef CwiseUnaryOp<internal::scalar_acos_op<Scalar>, const
  type CwiseUnaryOp (line 20) | typedef CwiseUnaryOp<internal::scalar_asin_op<Scalar>, const
  type CwiseUnaryOp (line 21) | typedef CwiseUnaryOp<internal::scalar_atan_op<Scalar>, const
  type CwiseUnaryOp (line 22) | typedef CwiseUnaryOp<internal::scalar_tanh_op<Scalar>, const
  type CwiseUnaryOp (line 23) | typedef CwiseUnaryOp<internal::scalar_sinh_op<Scalar>, const
  type CwiseUnaryOp (line 24) | typedef CwiseUnaryOp<internal::scalar_cosh_op<Scalar>, const
  type CwiseUnaryOp (line 25) | typedef CwiseUnaryOp<internal::scalar_square_op<Scalar>, const
  type CwiseUnaryOp (line 26) | typedef CwiseUnaryOp<internal::scalar_cube_op<Scalar>, const
  type CwiseUnaryOp (line 27) | typedef CwiseUnaryOp<internal::scalar_round_op<Scalar>, const
  type CwiseUnaryOp (line 28) | typedef CwiseUnaryOp<internal::scalar_floor_op<Scalar>, const
  type CwiseUnaryOp (line 29) | typedef CwiseUnaryOp<internal::scalar_ceil_op<Scalar>, const
  type CwiseUnaryOp (line 30) | typedef CwiseUnaryOp<internal::scalar_isnan_op<Scalar>, const
  type CwiseUnaryOp (line 31) | typedef CwiseUnaryOp<internal::scalar_isinf_op<Scalar>, const
  type CwiseUnaryOp (line 32) | typedef CwiseUnaryOp<internal::scalar_isfinite_op<Scalar>, const
  function AbsReturnType (line 42) | const AbsReturnType

FILE: deps/eigen/Eigen/src/plugins/BlockMethods.h
  type Block (line 14) | typedef Block<Derived, internal::traits<Derived>::RowsAtCompileTime, 1, ...
  type Block (line 15) | typedef const Block<const Derived, internal::traits<Derived>::RowsAtComp...
  type Block (line 17) | typedef Block<Derived, 1, internal::traits<Derived>::ColsAtCompileTime, ...
  type Block (line 18) | typedef const Block<const Derived, 1, internal::traits<Derived>::ColsAtC...
  type Block (line 20) | typedef Block<Derived, internal::traits<Derived>::RowsAtCompileTime, Dyn...
  type Block (line 21) | typedef const Block<const Derived, internal::traits<Derived>::RowsAtComp...
  type Block (line 23) | typedef Block<Derived, Dynamic, internal::traits<Derived>::ColsAtCompile...
  type Block (line 24) | typedef const Block<const Derived, Dynamic, internal::traits<Derived>::C...
  type Block (line 26) | typedef Block<Derived, internal::traits<Derived>::RowsAtCompileTime, N, ...
  type Block (line 27) | typedef const Block<const Derived, internal::traits<Derived>::RowsAtComp...
  type Block (line 29) | typedef Block<Derived, N, internal::traits<Derived>::ColsAtCompileTime, ...
  type Block (line 30) | typedef const Block<const Derived, N, internal::traits<Derived>::ColsAtC...
  type Block (line 32) | typedef Block<Derived> BlockXpr;
  type Block (line 33) | typedef const Block<const Derived> ConstBlockXpr;
  type Block (line 35) | typedef Block<Derived,Rows,Cols> Type;
  type Block (line 36) | typedef Block<const Derived,Rows,Cols> Type;
  type VectorBlock (line 38) | typedef VectorBlock<Derived> SegmentReturnType;
  type VectorBlock (line 39) | typedef const VectorBlock<const Derived> ConstSegmentReturnType;
  type VectorBlock (line 40) | typedef VectorBlock<Derived, Size> Type;
  type VectorBlock (line 41) | typedef const VectorBlock<const Derived, Size> Type;
  function BlockXpr (line 64) | inline BlockXpr block(Index startRow, Index startCol, Index blockRows, I...
  function EIGEN_DEVICE_FUNC (line 70) | EIGEN_DEVICE_FUNC
  function BlockXpr (line 92) | inline BlockXpr topRightCorner(Index cRows, Index cCols)
  function EIGEN_DEVICE_FUNC (line 98) | EIGEN_DEVICE_FUNC
  function BlockXpr (line 178) | inline BlockXpr topLeftCorner(Index cRows, Index cCols)
  function EIGEN_DEVICE_FUNC (line 184) | EIGEN_DEVICE_FUNC
  function BlockXpr (line 263) | inline BlockXpr bottomRightCorner(Index cRows, Index cCols)
  function EIGEN_DEVICE_FUNC (line 269) | EIGEN_DEVICE_FUNC
  function BlockXpr (line 348) | inline BlockXpr bottomLeftCorner(Index cRows, Index cCols)
  function EIGEN_DEVICE_FUNC (line 354) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 431) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 438) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 487) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 494) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 544) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 551) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 601) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 608) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 657) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 664) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 714) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 721) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 837) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 844) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 858) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 865) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 887) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 896) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 918) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 926) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 948) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 956) | EIGEN_DEVICE_FUNC

FILE: deps/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.h
  type typename (line 16) | typedef typename internal::conditional<NumTraits<Scalar>::IsComplex,
  type typename (line 21) | typedef typename internal::conditional<NumTraits<Scalar>::IsComplex,
  type typename (line 26) | typedef typename internal::conditional<NumTraits<Scalar>::IsComplex,
  type CwiseUnaryOp (line 31) | typedef CwiseUnaryOp<internal::scalar_imag_op<Scalar>, const
  type CwiseUnaryView (line 33) | typedef CwiseUnaryView<internal::scalar_imag_ref_op<Scalar>, Derived> No...
  type CwiseUnaryOp (line 35) | typedef CwiseUnaryOp<internal::scalar_opposite_op<Scalar>, const
  type typename (line 48) | typedef typename internal::cast_return_type<Derived,const
  function EIGEN_DEVICE_FUNC (line 93) | EIGEN_DEVICE_FUNC
  function EIGEN_DEVICE_FUNC (line 161) | EIGEN_DEVICE_FUNC

FILE: deps/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.h
  type CwiseUnaryOp (line 15) | typedef CwiseUnaryOp<internal::scalar_abs_op<Scalar>, const
  type CwiseUnaryOp (line 16) | typedef CwiseUnaryOp<internal::scalar_abs2_op<Scalar>, const
  type CwiseUnaryOp (line 17) | typedef CwiseUnaryOp<internal::scalar_sqrt_op<Scalar>, const
  type CwiseUnaryOp (line 18) | typedef CwiseUnaryOp<internal::scalar_sign_op<Scalar>, const
  type CwiseUnaryOp (line 19) | typedef CwiseUnaryOp<internal::scalar_inverse_op<Scalar>, const

FILE: deps/elfio/include/elfio/elf_types.hpp
  type ELFIO (line 48) | namespace ELFIO {
    type Elf32_Ehdr (line 624) | struct Elf32_Ehdr {
    type Elf64_Ehdr (line 641) | struct Elf64_Ehdr {
    type Elf32_Shdr (line 659) | struct Elf32_Shdr {
    type Elf64_Shdr (line 672) | struct Elf64_Shdr {
    type Elf32_Phdr (line 686) | struct Elf32_Phdr {
    type Elf64_Phdr (line 697) | struct Elf64_Phdr {
    type Elf32_Sym (line 709) | struct Elf32_Sym {
    type Elf64_Sym (line 718) | struct Elf64_Sym {
    type Elf32_Rel (line 734) | struct Elf32_Rel {
    type Elf32_Rela (line 739) | struct Elf32_Rela {
    type Elf64_Rel (line 745) | struct Elf64_Rel {
    type Elf64_Rela (line 750) | struct Elf64_Rela {
    type Elf64_Mips_Rel (line 757) | struct Elf64_Mips_Rel {
    type Elf64_Mips_Rela (line 767) | struct Elf64_Mips_Rela {
    type Elf32_Dyn (line 786) | struct Elf32_Dyn {
    type Elf64_Dyn (line 794) | struct Elf64_Dyn {

FILE: deps/elfio/include/elfio/elfio.hpp
  type ELFIO (line 68) | namespace ELFIO {
    class elfio (line 71) | class elfio
      method elfio (line 75) | elfio() : sections( this ), segments( this )
      method create (line 90) | void create( unsigned char file_class, unsigned char encoding )
      method load (line 105) | bool load( const std::string& file_name )
      method load (line 116) | bool load( std::istream &stream )
      method save (line 188) | bool save( const std::string& file_name )
      method endianess_convertor (line 247) | const endianess_convertor& get_convertor() const
      method Elf_Xword (line 253) | Elf_Xword get_default_entry_size( Elf_Word section_type ) const
      method clean (line 292) | void clean()
      method elf_header (line 311) | elf_header* create_header( unsigned char file_class, unsigned char e...
      method section (line 331) | section* create_section()
      method segment (line 353) | segment* create_segment()
      method create_mandatory_sections (line 375) | void create_mandatory_sections()
      method Elf_Half (line 391) | Elf_Half load_sections( std::istream& stream )
      method load_segments (line 429) | bool load_segments( std::istream& stream )
      method save_header (line 486) | bool save_header( std::ofstream& f )
      method save_sections (line 492) | bool save_sections( std::ofstream& f )
      method save_segments (line 507) | bool save_segments( std::ofstream& f )
      method is_section_without_segment (line 521) | bool is_section_without_segment( unsigned int section_index )
      method is_subsequence_of (line 537) | bool is_subsequence_of( segment* seg1, segment* seg2 )
      method get_ordered_segments (line 553) | std::vector<segment*> get_ordered_segments( )
      method layout_sections_without_segments (line 593) | bool layout_sections_without_segments( )
      method layout_segments_and_their_sections (line 619) | bool layout_segments_and_their_sections( )
      method layout_section_table (line 741) | bool layout_section_table()
      class Sections (line 753) | class Sections {
        method Sections (line 756) | Sections( elfio* parent_ ) :
        method Elf_Half (line 762) | Elf_Half size() const
        method section (line 768) | section* operator[]( std::size_t index ) const
        method section (line 780) | section* operator[]( const std::string& name ) const
        method section (line 798) | section* add( const std::string& name )
        method begin (line 813) | std::vector<section*>::iterator begin() {
        method end (line 818) | std::vector<section*>::iterator end() {
      class Segments (line 830) | class Segments {
        method Segments (line 833) | Segments( elfio* parent_ ) :
        method Elf_Half (line 839) | Elf_Half size() const
        method segment (line 845) | segment* operator[]( std::size_t index ) const
        method segment (line 851) | segment* add()
        method begin (line 857) | std::vector<segment*>::iterator begin() {
        method end (line 862) | std::vector<segment*>::iterator end() {

FILE: deps/elfio/include/elfio/elfio_dump.hpp
  type ELFIO (line 33) | namespace ELFIO {
    type class_table_t (line 35) | struct class_table_t {
    type endian_table_t (line 44) | struct endian_table_t {
    type version_table_t (line 54) | struct version_table_t {
    type type_table_t (line 63) | struct type_table_t {
    type machine_table_t (line 75) | struct machine_table_t {
    type section_type_table_t (line 276) | struct section_type_table_t {
    type segment_type_table_t (line 300) | struct segment_type_table_t {
    type segment_flag_table_t (line 315) | struct segment_flag_table_t {
    type symbol_bind_t (line 330) | struct symbol_bind_t {
    type symbol_type_t (line 345) | struct symbol_type_t {
    type dynamic_tag_t (line 363) | struct dynamic_tag_t {
    class dump (line 408) | class dump
      method header (line 419) | static void
      method section_headers (line 435) | static void
      method section_header (line 463) | static void
      method segment_headers (line 508) | static void
      method segment_header (line 536) | static void
      method symbol_tables (line 575) | static void
      method symbol_table (line 615) | static void
      method notes (line 659) | static void
      method note (line 692) | static void
      method dynamic_tags (line 707) | static void
      method dynamic_tag (line 738) | static void
      method section_data (line 760) | static void
      method section_datas (line 791) | static void
      method segment_data (line 814) | static void
      method segment_datas (line 845) | static void
      method find_value_in_table (line 867) | std::string
      method format_assoc (line 884) | static
      method format_assoc (line 900) | static
      method section_flags (line 908) | static

FILE: deps/elfio/include/elfio/elfio_dynamic.hpp
  type ELFIO (line 26) | namespace ELFIO {
    class dynamic_section_accessor (line 29) | class dynamic_section_accessor
      method dynamic_section_accessor (line 33) | dynamic_section_accessor( const elfio& elf_file_, section* section_ ) :
      method Elf_Xword (line 40) | Elf_Xword
      method Elf_Xword (line 53) | Elf_Xword
      method get_entry (line 66) | bool
      method add_entry (line 106) | void
      method add_entry (line 119) | void
      method Elf_Half (line 132) | Elf_Half
      method generic_get_entry_dyn (line 140) | void
      method generic_add_entry (line 205) | void

FILE: deps/elfio/include/elfio/elfio_header.hpp
  type ELFIO (line 28) | namespace ELFIO {
    class elf_header (line 30) | class elf_header
    type elf_header_impl_types (line 59) | struct elf_header_impl_types
    type elf_header_impl_types<Elf32_Ehdr> (line 60) | struct elf_header_impl_types<Elf32_Ehdr> {
    type elf_header_impl_types<Elf64_Ehdr> (line 65) | struct elf_header_impl_types<Elf64_Ehdr> {
    class elf_header_impl (line 71) | class elf_header_impl : public elf_header
      method elf_header_impl (line 74) | elf_header_impl( endianess_convertor* convertor_,
      method load (line 99) | bool
      method save (line 109) | bool
      class header (line 119) | class,              header

FILE: deps/elfio/include/elfio/elfio_note.hpp
  type ELFIO (line 26) | namespace ELFIO {
    class note_section_accessor (line 41) | class note_section_accessor
      method note_section_accessor (line 45) | note_section_accessor( const elfio& elf_file_, section* section_ ) :
      method Elf_Word (line 52) | Elf_Word
      method get_note (line 59) | bool
      method add_note (line 95) | void add_note( Elf_Word           type,
      method process_section (line 129) | void process_section()

FILE: deps/elfio/include/elfio/elfio_relocation.hpp
  type ELFIO (line 26) | namespace ELFIO {
    type get_sym_and_type (line 28) | struct get_sym_and_type
    type get_sym_and_type< Elf32_Rel > (line 29) | struct get_sym_and_type< Elf32_Rel >
      method get_r_sym (line 31) | static int get_r_sym( Elf_Xword info )
      method get_r_type (line 35) | static int get_r_type( Elf_Xword info )
    type get_sym_and_type< Elf32_Rela > (line 40) | struct get_sym_and_type< Elf32_Rela >
      method get_r_sym (line 42) | static int get_r_sym( Elf_Xword info )
      method get_r_type (line 46) | static int get_r_type( Elf_Xword info )
    type get_sym_and_type< Elf64_Rel > (line 51) | struct get_sym_and_type< Elf64_Rel >
      method get_r_sym (line 53) | static int get_r_sym( Elf_Xword info )
      method get_r_type (line 57) | static int get_r_type( Elf_Xword info )
    type get_sym_and_type< Elf64_Rela > (line 62) | struct get_sym_and_type< Elf64_Rela >
      method get_r_sym (line 64) | static int get_r_sym( Elf_Xword info )
      method get_r_type (line 68) | static int get_r_type( Elf_Xword info )
    class relocation_section_accessor (line 75) | class relocation_section_accessor
      method relocation_section_accessor (line 79) | relocation_section_accessor( const elfio& elf_file_, section* sectio...
      method Elf_Xword (line 86) | Elf_Xword
      method Elf_Xword (line 99) | Elf_Xword
      method get_entry (line 112) | bool
      method get_entry (line 148) | bool
      method mips64_get_entry (line 215) | bool
      method add_entry (line 248) | void
      method add_entry (line 260) | void
      method add_entry (line 275) | void
      method add_entry (line 287) | void
      method add_entry (line 303) | void
      method Elf_Half (line 324) | Elf_Half
      method generic_get_entry_rel (line 332) | void
      method generic_get_entry_rela (line 359) | void
      method mips64_get_entry_rel (line 385) | void
      method mips64_get_entry_rela (line 416) | void
      method generic_add_entry (line 448) | void
      method generic_add_entry (line 464) | void

FILE: deps/elfio/include/elfio/elfio_section.hpp
  type ELFIO (line 30) | namespace ELFIO {
    class section (line 32) | class section
    class section_impl (line 73) | class section_impl : public section
      method section_impl (line 77) | section_impl( const endianess_convertor* convertor_, size_t file_len...
      method Elf_Half (line 106) | Elf_Half
      method get_name (line 113) | std::string
      method set_name (line 120) | void
      method set_address (line 127) | void
      method is_address_initialized (line 136) | bool
      method Elf_Xword (line 143) | Elf_Xword
      method set_data (line 157) | void
      method set_data (line 179) | void
      method append_data (line 186) | void
      method append_data (line 214) | void
      method load (line 221) | void
      method set_index (line 249) | void
      method load (line 256) | void
      method save (line 295) | void
      method save_header (line 315) | void
      method save_data (line 324) | void

FILE: deps/elfio/include/elfio/elfio_segment.hpp
  type ELFIO (line 29) | namespace ELFIO {
    class segment (line 31) | class segment
    class segment_impl (line 70) | class segment_impl : public segment
      method segment_impl (line 74) | segment_impl( endianess_convertor* convertor_, size_t file_length_ ) :
      method Elf_Half (line 101) | Elf_Half
      method Elf_Xword (line 108) | Elf_Xword
      method Elf_Half (line 122) | Elf_Half
      method Elf_Half (line 134) | Elf_Half
      method Elf_Half (line 141) | Elf_Half
      method set_offset (line 156) | void
      method is_offset_initialized (line 165) | bool
      method set_index (line 179) | void
      method load (line 186) | void
      method save (line 220) | void save( std::ostream&  f,
      method load (line 233) | void

FILE: deps/elfio/include/elfio/elfio_strings.hpp
  type ELFIO (line 30) | namespace ELFIO {
    class string_section_accessor (line 33) | class string_section_accessor
      method string_section_accessor (line 37) | string_section_accessor( section* section_ ) :
      method get_string (line 44) | std::string
      method Elf_Word (line 72) | Elf_Word
      method Elf_Word (line 93) | Elf_Word

FILE: deps/elfio/include/elfio/elfio_symbols.hpp
  type ELFIO (line 26) | namespace ELFIO {
    class symbol_section_accessor (line 29) | class symbol_section_accessor
      method symbol_section_accessor (line 33) | symbol_section_accessor( const elfio& elf_file_, section* symbol_sec...
      method Elf_Xword (line 41) | Elf_Xword
      method Elf_Xword (line 53) | Elf_Xword
      method get_symbol (line 65) | bool
      method get_symbol (line 90) | bool
      method Elf_Word (line 125) | Elf_Word
      method Elf_Word (line 154) | Elf_Word
      method Elf_Word (line 163) | Elf_Word
      method Elf_Word (line 174) | Elf_Word
      method find_hash_section (line 186) | void
      method Elf_Half (line 206) | Elf_Half
      method Elf_Half (line 213) | Elf_Half
      method generic_get_symbol (line 221) | bool
      method Elf_Word (line 263) | Elf_Word

FILE: deps/elfio/include/elfio/elfio_utils.hpp
  type ELFIO (line 60) | namespace ELFIO {
    class endianess_convertor (line 63) | class endianess_convertor {
      method endianess_convertor (line 66) | endianess_convertor()
      method setup (line 72) | void
      method get_host_encoding (line 175) | unsigned char
    function elf_hash (line 193) | inline
    function is_in_range (line 209) | inline

FILE: deps/rapidjson/include/rapidjson/allocators.h
  function class (line 75) | class CrtAllocator {
  function Clear (line 158) | void Clear() {
  function Capacity (line 171) | size_t Capacity() const {
  function Free (line 238) | static void Free(void *ptr) { (void)ptr; }
  function AddChunk (line 250) | bool AddChunk(size_t capacity) {
  type ChunkHeader (line 269) | struct ChunkHeader {

FILE: deps/rapidjson/include/rapidjson/cursorstreamwrapper.h
  function Ch (line 47) | Ch Take() {

FILE: deps/rapidjson/include/rapidjson/document.h
  type GenericMember (line 137) | typedef GenericMember<Encoding,Allocator> PlainType;
  type typename (line 138) | typedef typename internal::MaybeAddConst<Const,PlainType>::Type ValueType;
  type ValueType (line 150) | typedef ValueType      value_type;
  type ValueType (line 151) | typedef ValueType *    pointer;
  type ValueType (line 152) | typedef ValueType &    reference;
  type std (line 153) | typedef std::ptrdiff_t difference_type;
  type std (line 154) | typedef std::random_access_iterator_tag iterator_category;
  type pointer (line 158) | typedef pointer         Pointer;
  type reference (line 160) | typedef reference       Reference;
  type difference_type (line 162) | typedef difference_type DifferenceType;
  function ptr_ (line 186) | GenericMemberIterator(const NonConstIterator & it) : ptr_(it.ptr_) {}
  function ConstIterator (line 208) | bool operator==(ConstIterator that) const { return ptr_ == that.ptr_; }
  function ConstIterator (line 209) | bool operator!=(ConstIterator that) const { return ptr_ != that.ptr_; }
  function ConstIterator (line 210) | bool operator<=(ConstIterator that) const { return ptr_ <= that.ptr_; }
  function ConstIterator (line 211) | bool operator>=(ConstIterator that) const { return ptr_ >= that.ptr_; }
  function operator (line 212) | bool operator< (ConstIterator that) const { return ptr_ < that.ptr_; }
  function operator (line 213) | bool operator> (ConstIterator that) const { return ptr_ > that.ptr_; }
  function Reference (line 218) | Reference operator*() const { return *ptr_; }
  function Pointer (line 219) | Pointer   operator->() const { return ptr_; }
  function Reference (line 220) | Reference operator[](DifferenceType n) const { return ptr_[n]; }
  type CharType (line 287) | typedef CharType Ch;
  function explicit (line 339) | explicit GenericStringRef(const CharType* str)
  function operator (line 357) | operator const Ch *() const { return s; }
  function namespace (line 439) | namespace internal {
  function Is (line 463) | static bool Is(const ValueType& v) { return v.IsBool(); }
  function Get (line 464) | static bool Get(const ValueType& v) { return v.GetBool(); }
  function Is (line 471) | static bool Is(const ValueType& v) { return v.IsInt(); }
  function Get (line 472) | static int Get(const ValueType& v) { return v.GetInt(); }
  function Is (line 479) | static bool Is(const ValueType& v) { return v.IsUint(); }
  function Get (line 480) | static unsigned Get(const ValueType& v) { return v.GetUint(); }
  function Is (line 489) | static bool Is(const ValueType& v) { return v.IsInt(); }
  function Get (line 490) | static long Get(const ValueType& v) { return v.GetInt(); }
  function Is (line 498) | static bool Is(const ValueType& v) { return v.IsUint(); }
  function Get (line 499) | static unsigned long Get(const ValueType& v) { return v.GetUint(); }
  function Is (line 507) | static bool Is(const ValueType& v) { return v.IsInt64(); }
  function Get (line 508) | static int64_t Get(const ValueType& v) { return v.GetInt64(); }
  function Is (line 515) | static bool Is(const ValueType& v) { return v.IsUint64(); }
  function Get (line 516) | static uint64_t Get(const ValueType& v) { return v.GetUint64(); }
  function Is (line 523) | static bool Is(const ValueType& v) { return v.IsDouble(); }
  function Get (line 524) | static double Get(const ValueType& v) { return v.GetDouble(); }
  function Is (line 531) | static bool Is(const ValueType& v) { return v.IsFloat(); }
  function Get (line 532) | static float Get(const ValueType& v) { return v.GetFloat(); }
  type typename (line 539) | typedef const typename ValueType::Ch* StringType;
  function Is (line 540) | static bool Is(const ValueType& v) { return v.IsString(); }
  function StringType (line 541) | static StringType Get(const ValueType& v) { return v.GetString(); }
  function Is (line 550) | static bool Is(const ValueType& v) { return v.IsString(); }
  function StringType (line 551) | static StringType Get(const ValueType& v) { return StringType(v.GetStrin...
  type typename (line 558) | typedef typename ValueType::Array ArrayType;
  function Is (line 559) | static bool Is(const ValueType& v) { return v.IsArray(); }
  function ArrayType (line 560) | static ArrayType Get(ValueType& v) { return v.GetArray(); }
  type typename (line 567) | typedef typename ValueType::ConstArray ArrayType;
  function Is (line 568) | static bool Is(const ValueType& v) { return v.IsArray(); }
  function ArrayType (line 569) | static ArrayType Get(const ValueType& v) { return v.GetArray(); }
  type typename (line 574) | typedef typename ValueType::Object ObjectType;
  function Is (line 575) | static bool Is(const ValueType& v) { return v.IsObject(); }
  function ObjectType (line 576) | static ObjectType Get(ValueType& v) { return v.GetObject(); }
  type typename (line 583) | typedef typename ValueType::ConstObject ObjectType;
  function Is (line 584) | static bool Is(const ValueType& v) { return v.IsObject(); }
  function ObjectType (line 585) | static ObjectType Get(const ValueType& v) { return v.GetObject(); }
  type Encoding (line 612) | typedef Encoding EncodingType;
  type Allocator (line 613) | typedef Allocator AllocatorType;
  type typename (line 614) | typedef typename Encoding::Ch Ch;
  type GenericStringRef (line 615) | typedef GenericStringRef<Ch> StringRefType;
  type typename (line 616) | typedef typename GenericMemberIterator<false,Encoding,Allocator>::Iterat...
  type typename (line 617) | typedef typename GenericMemberIterator<true,Encoding,Allocator>::Iterato...
  type GenericValue (line 618) | typedef GenericValue* ValueIterator;
  type GenericValue (line 619) | typedef const GenericValue* ConstValueIterator;
  type GenericValue (line 620) | typedef GenericValue<Encoding, Allocator> ValueType;
  function explicit (line 733) | explicit GenericValue(bool b) RAPIDJSON_NOEXCEPT
  function explicit (line 742) | explicit GenericValue(int i) RAPIDJSON_NOEXCEPT : data_() {
  function explicit (line 748) | explicit GenericValue(unsigned u) RAPIDJSON_NOEXCEPT : data_() {
  function explicit (line 754) | explicit GenericValue(int64_t i64) RAPIDJSON_NOEXCEPT : data_() {
  function explicit (line 769) | explicit GenericValue(uint64_t u64) RAPIDJSON_NOEXCEPT : data_() {
  function explicit (line 781) | explicit GenericValue(double d) RAPIDJSON_NOEXCEPT : data_() { data_.n.d...
  function explicit (line 784) | explicit GenericValue(float f) RAPIDJSON_NOEXCEPT : data_() { data_.n.d ...
  function explicit (line 790) | explicit GenericValue(StringRefType s) RAPIDJSON_NOEXCEPT : data_() { Se...
  function data_ (line 811) | GenericValue(Array a) RAPIDJSON_NOEXCEPT : data_(a.value_.data_) {
  function data_ (line 822) | GenericValue(Object o) RAPIDJSON_NOEXCEPT : data_(o.value_.data_) {
  type GenericValue (line 966) | typedef GenericValue<Encoding, SourceAllocator> RhsType;
  function rhs (line 1013) | bool operator==(const std::basic_string<Ch>& rhs) const { return *this =...
  function GetBool (line 1114) | bool GetBool() const { RAPIDJSON_ASSERT(IsBool()); return data_.f.flags ...
  function SizeType (line 1129) | SizeType MemberCount() const { RAPIDJSON_ASSERT(IsObject()); return data...
  function ObjectEmpty (line 1135) | bool ObjectEmpty() const { RAPIDJSON_ASSERT(IsObject()); return data_.o....
  function GenericValue (line 1186) | const GenericValue& operator[](const std::basic_string<Ch>& name) const ...
  function ConstMemberIterator (line 1191) | ConstMemberIterator MemberBegin() const { RAPIDJSON_ASSERT(IsObject()); ...
  function MemberIterator (line 1197) | MemberIterator MemberBegin()            { RAPIDJSON_ASSERT(IsObject()); ...
  function MemberIterator (line 1200) | MemberIterator MemberEnd()              { RAPIDJSON_ASSERT(IsObject()); ...
  function HasMember (line 1225) | bool HasMember(const Ch* name) const { return FindMember(name) != Member...
  function HasMember (line 1236) | bool HasMember(const std::basic_string<Ch>& name) const { return FindMem...
  function MemberIterator (line 1263) | MemberIterator FindMember(const Ch* name) {
  function ConstMemberIterator (line 1268) | ConstMemberIterator FindMember(const Ch* name) const { return const_cast...
  function MemberIterator (line 1303) | MemberIterator FindMember(const std::basic_string<Ch>& name) { return Fi...
  function ConstMemberIterator (line 1304) | ConstMemberIterator FindMember(const std::basic_string<Ch>& name) const ...
  function RemoveAllMembers (line 1459) | void RemoveAllMembers() {
  function RemoveMember (line 1474) | bool RemoveMember(const Ch* name) {
  function MemberIterator (line 1502) | MemberIterator RemoveMember(MemberIterator m) {
  function MemberIterator (line 1526) | MemberIterator EraseMember(ConstMemberIterator pos) {
  function MemberIterator (line 1539) | MemberIterator EraseMember(ConstMemberIterator first, ConstMemberIterato...
  function EraseMember (line 1560) | bool EraseMember(const Ch* name) {
  function Object (line 1580) | Object GetObject() { RAPIDJSON_ASSERT(IsObject()); return Object(*this); }
  function ConstObject (line 1581) | ConstObject GetObject() const { RAPIDJSON_ASSERT(IsObject()); return Con...
  function SizeType (line 1593) | SizeType Size() const { RAPIDJSON_ASSERT(IsArray()); return data_.a.size; }
  function Empty (line 1599) | bool Empty() const { RAPIDJSON_ASSERT(IsArray()); return data_.a.size ==...
  function GenericValue (line 1623) | const GenericValue& operator[](SizeType index) const { return const_cast...
  function ValueIterator (line 1627) | ValueIterator Begin() { RAPIDJSON_ASSERT(IsArray()); return GetElementsP...
  function ValueIterator (line 1630) | ValueIterator End() { RAPIDJSON_ASSERT(IsArray()); return GetElementsPoi...
  function ValueIterator (line 1732) | ValueIterator Erase(ConstValueIterator pos) {
  function ValueIterator (line 1744) | ValueIterator Erase(ConstValueIterator first, ConstValueIterator last) {
  function Array (line 1759) | Array GetArray() { RAPIDJSON_ASSERT(IsArray()); return Array(*this); }
  function ConstArray (line 1760) | ConstArray GetArray() const { RAPIDJSON_ASSERT(IsArray()); return ConstA...
  function GetDouble (line 1775) | double GetDouble() const {
  function Ch (line 1803) | const Ch* GetString() const { RAPIDJSON_ASSERT(IsString()); return (data...
  function SizeType (line 1808) | SizeType GetStringLength() const { RAPIDJSON_ASSERT(IsString()); return ...
  type Flag (line 1975) | struct Flag {
  type String (line 1986) | struct String {
  function SetLength (line 2000) | struct ShortString {
  type I (line 2012) | struct I {
  type U (line 2016) | struct U {
  type I (line 2021) | struct I {
  type U (line 2025) | struct U {
  type ObjectData (line 2035) | struct ObjectData {
  type ArrayData (line 2041) | struct ArrayData {
  function RAPIDJSON_FORCEINLINE (line 2056) | RAPIDJSON_FORCEINLINE const Ch* GetStringPointer() const { return RAPIDJ...
  function RAPIDJSON_FORCEINLINE (line 2057) | RAPIDJSON_FORCEINLINE const Ch* SetStringPointer(const Ch* str) { return...
  function RAPIDJSON_FORCEINLINE (line 2058) | RAPIDJSON_FORCEINLINE GenericValue* GetElementsPointer() const { return ...
  function RAPIDJSON_FORCEINLINE (line 2059) | RAPIDJSON_FORCEINLINE GenericValue* SetElementsPointer(GenericValue* ele...
  function RAPIDJSON_FORCEINLINE (line 2060) | RAPIDJSON_FORCEINLINE Member* GetMembersPointer() const { return RAPIDJS...
  function RAPIDJSON_FORCEINLINE (line 2061) | RAPIDJSON_FORCEINLINE Member* SetMembersPointer(Member* members) { retur...
  function SetArrayRaw (line 2064) | void SetArrayRaw(GenericValue* values, SizeType count, Allocator& alloca...
  function SetObjectRaw (line 2077) | void SetObjectRaw(Member* members, SizeType count, Allocator& allocator) {
  function SetStringRaw (line 2090) | void SetStringRaw(StringRefType s) RAPIDJSON_NOEXCEPT {
  function SetStringRaw (line 2097) | void SetStringRaw(StringRefType s, Allocator& allocator) {
  function RawAssign (line 2114) | void RawAssign(GenericValue& rhs) RAPIDJSON_NOEXCEPT {
  type GenericValue (line 2140) | typedef GenericValue<UTF8<> > Value;
  type GenericValue (line 2157) | typedef GenericValue<Encoding, Allocator> ValueType;
  type Allocator (line 2158) | typedef Allocator AllocatorType;
  type ClearStackOnExit (line 2452) | struct ClearStackOnExit {
  function Bool (line 2468) | bool Bool(bool b) { new (stack_.template Push<ValueType>()) ValueType(b)...
  function Int (line 2469) | bool Int(int i) { new (stack_.template Push<ValueType>()) ValueType(i); ...
  function Uint (line 2470) | bool Uint(unsigned i) { new (stack_.template Push<ValueType>()) ValueTyp...
  function Int64 (line 2471) | bool Int64(int64_t i) { new (stack_.template Push<ValueType>()) ValueTyp...
  function Uint64 (line 2472) | bool Uint64(uint64_t i) { new (stack_.template Push<ValueType>()) ValueT...
  function Double (line 2473) | bool Double(double d) { new (stack_.template Push<ValueType>()) ValueTyp...
  function RawNumber (line 2475) | bool RawNumber(const Ch* str, SizeType length, bool copy) {
  function String (line 2483) | bool String(const Ch* str, SizeType length, bool copy) {
  function StartObject (line 2491) | bool StartObject() { new (stack_.template Push<ValueType>()) ValueType(k...
  function Key (line 2493) | bool Key(const Ch* str, SizeType length, bool copy) { return String(str,...
  function EndObject (line 2495) | bool EndObject(SizeType memberCount) {
  function StartArray (line 2501) | bool StartArray() { new (stack_.template Push<ValueType>()) ValueType(kA...
  function EndArray (line 2503) | bool EndArray(SizeType elementCount) {
  function ClearStack (line 2515) | void ClearStack() {
  function Destroy (line 2524) | void Destroy() {
  type GenericDocument (line 2536) | typedef GenericDocument<UTF8<> > Document;
  type ValueT (line 2548) | typedef ValueT PlainType;
  type typename (line 2549) | typedef typename internal::MaybeAddConst<Const,PlainType>::Type ValueType;
  type ValueType (line 2550) | typedef ValueType* ValueIterator;
  type ValueT (line 2551) | typedef const ValueT* ConstValueIterator;
  type typename (line 2552) | typedef typename ValueType::AllocatorType AllocatorType;
  type typename (line 2553) | typedef typename ValueType::StringRefType StringRefType;
  function value_ (line 2558) | GenericArray(const GenericArray& rhs) : value_(rhs.value_) {}
  function GenericArray (line 2569) | GenericArray Reserve(SizeType newCapacity, AllocatorType &allocator) con...
  function GenericArray (line 2570) | GenericArray PushBack(ValueType& value, AllocatorType& allocator) const ...
  function GenericArray (line 2572) | GenericArray PushBack(ValueType&& value, AllocatorType& allocator) const...
  function GenericArray (line 2574) | GenericArray PushBack(StringRefType value, AllocatorType& allocator) con...
  function ValueIterator (line 2577) | ValueIterator Erase(ConstValueIterator pos) const { return value_.Erase(...
  function ValueIterator (line 2578) | ValueIterator Erase(ConstValueIterator first, ConstValueIterator last) c...
  function value_ (line 2587) | value_(value) {}
  type ValueT (line 2601) | typedef ValueT PlainType;
  type typename (line 2602) | typedef typename internal::MaybeAddConst<Const,PlainType>::Type ValueType;
  type GenericMemberIterator (line 2603) | typedef GenericMemberIterator<Const, typename
  type GenericMemberIterator (line 2604) | typedef GenericMemberIterator<true, typename
  type typename (line 2605) | typedef typename ValueType::AllocatorType AllocatorType;
  type typename (line 2606) | typedef typename ValueType::StringRefType StringRefType;
  type typename (line 2607) | typedef typename ValueType::EncodingType EncodingType;
  type typename (line 2608) | typedef typename ValueType::Ch Ch;
  function value_ (line 2613) | GenericObject(const GenericObject& rhs) : value_(rhs.value_) {}
  function GenericObject (line 2627) | GenericObject MemberReserve(SizeType newCapacity, AllocatorType &allocat...
  function HasMember (line 2628) | bool HasMember(const Ch* name) const { return value_.HasMember(name); }
  function MemberIterator (line 2633) | MemberIterator FindMember(const Ch* name) const { return value_.FindMemb...
  function GenericObject (line 2641) | GenericObject AddMember(ValueType& name, 
Copy disabled (too large) Download .json
Condensed preview — 3847 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (60,206K chars).
[
  {
    "path": ".clang-format",
    "chars": 2327,
    "preview": "---\nLanguage: Cpp\nAccessModifierOffset: -4\nAlignAfterOpenBracket: AlwaysBreak\nAlignEscapedNewlines: Left\nAlignOperands: "
  },
  {
    "path": ".github/workflows/Linux/build.sh",
    "chars": 180,
    "preview": "#!/usr/bin/bash\n\nRD_DIR=$PWD\nmkdir -p build\ncd build\n\ncmake $RD_DIR -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DRETDEC_TESTS=on -DC"
  },
  {
    "path": ".github/workflows/Linux/ignore_Debug",
    "chars": 0,
    "preview": ""
  },
  {
    "path": ".github/workflows/Linux/ignore_Release",
    "chars": 0,
    "preview": ""
  },
  {
    "path": ".github/workflows/Linux/install-deps.sh",
    "chars": 148,
    "preview": "#!/usr/bin/bash\n\nset -x\n\nsudo apt-get update\nsudo apt-get install openssl gcc-multilib python3-venv doxygen graphviz lib"
  },
  {
    "path": ".github/workflows/Linux/prepare-clang.sh",
    "chars": 180,
    "preview": "#!/usr/bin/bash\n\nwget --no-proxy https://releases.llvm.org/3.9.1/clang+llvm-3.9.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz -"
  },
  {
    "path": ".github/workflows/Linux/run-tests.sh",
    "chars": 677,
    "preview": "#!/usr/bin/bash\n\nset -x\n\nIGNORE_TESTS=$(cat $1 | tr '\\n' ',' | sed 's/,$//' | tr '.' '/')\n\ncat <<EOF > $PWD/retdec-regre"
  },
  {
    "path": ".github/workflows/Windows/build.sh",
    "chars": 356,
    "preview": "#!/usr/bin/bash\n\nRD_DIR=$PWD\n\n# The C:/ drive on Windows has significanly larger space to work with.\nmkdir -p /c/build\nc"
  },
  {
    "path": ".github/workflows/Windows/ignore_Debug",
    "chars": 508,
    "preview": "bugs.bin2llvmir-type-recovery-analysis-segfault\nbugs.issue-184-elf-thunks\nbugs.issue-197-empty-selected-fnc-body\nbugs.ll"
  },
  {
    "path": ".github/workflows/Windows/ignore_Release",
    "chars": 0,
    "preview": ""
  },
  {
    "path": ".github/workflows/Windows/install-deps.sh",
    "chars": 421,
    "preview": "#!/usr/bin/bash\n\nrm -rf \"/c/Program Files/OpenSSL\"\n\nchoco install --no-progress openssl 7zip\n\n# Chocolatey installs Open"
  },
  {
    "path": ".github/workflows/Windows/prepare-clang.sh",
    "chars": 256,
    "preview": "#!/usr/bin/bash\n\ncurl https://releases.llvm.org/3.9.1/LLVM-3.9.1-win64.exe -o llvm.exe\n\n# Save download path.\ndownload_p"
  },
  {
    "path": ".github/workflows/Windows/run-tests.sh",
    "chars": 911,
    "preview": "set -x\n\nIGNORE_TESTS=$(cat $1 | tr -d '\\r' | tr '\\n' ',' | sed 's/,$//' | tr '.' '\\\\')\n\n# We need to specify each path i"
  },
  {
    "path": ".github/workflows/common/prepare-retdec-tests.sh",
    "chars": 789,
    "preview": "#!/usr/bin/bash\n\nRD=$PWD\n\n# Get current branch of RetDec\n# > GITHUB_BASE_REF is set on PR, empty otherwise.\nRD_BRANCH=${"
  },
  {
    "path": ".github/workflows/macOS/build.sh",
    "chars": 298,
    "preview": "#!/usr/bin/bash\n\nexport PATH=\"/usr/local/opt/openssl@1.1/bin:$PATH\"\nexport OPENSSL_ROOT_DIR=\"/usr/local/opt/openssl@1.1/"
  },
  {
    "path": ".github/workflows/macOS/ignore_Debug",
    "chars": 0,
    "preview": ""
  },
  {
    "path": ".github/workflows/macOS/ignore_Release",
    "chars": 0,
    "preview": ""
  },
  {
    "path": ".github/workflows/macOS/install-deps.sh",
    "chars": 121,
    "preview": "#!/usr/bin/bash\n\nbrew install pkg-config autoconf automake libtool openssl python@3.10\nbrew link --overwrite python@3.10"
  },
  {
    "path": ".github/workflows/macOS/prepare-clang.sh",
    "chars": 170,
    "preview": "#!/usr/bin/bash\n\nwget --no-proxy https://releases.llvm.org/3.9.0/clang+llvm-3.9.0-x86_64-apple-darwin.tar.xz -O llvm.tar"
  },
  {
    "path": ".github/workflows/macOS/run-tests.sh",
    "chars": 1244,
    "preview": "#!/usr/bin/bash\n\nset -x\n\nIGNORE_TESTS=$(cat $1 | tr '\\n' ',' | sed 's/,$//' | tr '.' '/')\n\ncat <<EOF > $PWD/retdec-regre"
  },
  {
    "path": ".github/workflows/retdec-ci.yml",
    "chars": 4181,
    "preview": "## Configuration of Github Actions CI for RetDec\n\nname: RetDec CI\n\non:\n  push:\n    branches:\n      - master   # Activate"
  },
  {
    "path": ".github/workflows/retdec-release.yml",
    "chars": 3124,
    "preview": "## Automatic Release flow.\n\nname: RetDec Release\n\non:\n  push:\n    # Trigger anytime a release tag is created.\n    tags:\n"
  },
  {
    "path": ".gitignore",
    "chars": 17,
    "preview": "/build*/\n/Debug/\n"
  },
  {
    "path": ".travis.yml",
    "chars": 1878,
    "preview": "language: cpp\n\ncache: ccache\n\nmatrix:\n  fast_finish: true\n  include:\n    - os: linux\n      dist: bionic\n      addons:\n  "
  },
  {
    "path": "CHANGELOG.md",
    "chars": 40098,
    "preview": "# Changelog\n\n# dev\n\n* Fix: Handle Intel MPX instructions ([#1154](https://github.com/avast/retdec/pull/1154), [#1148](ht"
  },
  {
    "path": "CITATION",
    "chars": 160,
    "preview": "@Misc{RetDec,\n    author = {{Avast Software}},\n    title = {{RetDec}: A Retargetable Machine-Code Decompiler},\n    howpu"
  },
  {
    "path": "CMakeLists.txt",
    "chars": 8015,
    "preview": "\ncmake_minimum_required(VERSION 3.13)\n\nproject(retdec\n\tLANGUAGES C CXX\n\tVERSION 5.0\n)\n\ninclude(${CMAKE_CURRENT_SOURCE_DI"
  },
  {
    "path": "Dockerfile",
    "chars": 1631,
    "preview": "FROM ubuntu:focal AS builder\n\nRUN useradd -m retdec\nWORKDIR /home/retdec\nENV HOME /home/retdec\n\nRUN apt-get -y update &&"
  },
  {
    "path": "Dockerfile.dev",
    "chars": 1526,
    "preview": "FROM ubuntu:focal\n\nRUN useradd -m retdec\nWORKDIR /home/retdec\nENV HOME /home/retdec\n\nRUN apt-get -y update && \\\n\tDEBIAN_"
  },
  {
    "path": "LICENSE",
    "chars": 1081,
    "preview": "The MIT License (MIT)\n\nCopyright (c) 2017 Avast Software\n\nPermission is hereby granted, free of charge, to any person ob"
  },
  {
    "path": "LICENSE-PELIB",
    "chars": 882,
    "preview": "The zlib/libpng License\n\nCopyright (c) 2004 - Sebastian Porst\n\nThis software is provided 'as-is', without any express or"
  },
  {
    "path": "LICENSE-THIRD-PARTY",
    "chars": 54613,
    "preview": "RetDec uses third-party libraries or other resources that may be\ndistributed under licenses different than this software"
  },
  {
    "path": "README.md",
    "chars": 20069,
    "preview": "> **Warning**\n>\n> The RetDec project is currently in a **limited maintenance mode** due to a lack of resources:\n> * Pull"
  },
  {
    "path": "SECURITY.md",
    "chars": 205,
    "preview": "Please use [this submission form](https://www.nortonlifelock.com/us/en/contact-us/report-a-security-vulnerability/) to r"
  },
  {
    "path": "cmake/GetGitRevisionDescription.cmake",
    "chars": 5123,
    "preview": "# - Returns a version string from Git\n#\n# These functions force a re-configure on each git commit so that you can\n# trus"
  },
  {
    "path": "cmake/GetGitRevisionDescription.cmake.in",
    "chars": 1283,
    "preview": "#\n# Internal file for GetGitRevisionDescription.cmake\n#\n# Requires CMake 2.6 or newer (uses the 'function' command)\n#\n# "
  },
  {
    "path": "cmake/deps.cmake",
    "chars": 2022,
    "preview": "\nset(CAPSTONE_URL\n    \"https://github.com/capstone-engine/capstone/archive/refs/tags/5.0-rc2.zip\"\n    CACHE STRING \"URL "
  },
  {
    "path": "cmake/options.cmake",
    "chars": 15310,
    "preview": "\n# ALL options.\n#\noption(RETDEC_DOC \"Build public API documentation (requires Doxygen).\" OFF)\noption(RETDEC_TESTS \"Build"
  },
  {
    "path": "cmake/utils.cmake",
    "chars": 2333,
    "preview": "#\n# Utility functions, macros, etc.\n#\n\nfunction(append_if condition value)\n\tif (${condition})\n\t\tforeach(variable ${ARGN}"
  },
  {
    "path": "deps/CMakeLists.txt",
    "chars": 1000,
    "preview": "\ninclude(ExternalProject)\n\ninclude(ProcessorCount)\nProcessorCount(CPUS)\n\nif(CMAKE_C_COMPILER)\n\tset(CMAKE_C_COMPILER_OPTI"
  },
  {
    "path": "deps/authenticode-parser/CMakeLists.txt",
    "chars": 1537,
    "preview": "\nfind_package(OpenSSL 1.1.1 REQUIRED)\n\nadd_library(authenticode STATIC\n\tsrc/authenticode.c\n\tsrc/helper.c\n\tsrc/structs.c\n"
  },
  {
    "path": "deps/authenticode-parser/include/authenticode-parser/authenticode.h",
    "chars": 8628,
    "preview": "/* Copyright (c) 2021 Avast Software\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nth"
  },
  {
    "path": "deps/authenticode-parser/retdec-authenticode-config.cmake",
    "chars": 121,
    "preview": "\nif(NOT TARGET retdec::deps::authenticode)\n\tinclude(${CMAKE_CURRENT_LIST_DIR}/retdec-authenticode-targets.cmake)\nendif()"
  },
  {
    "path": "deps/authenticode-parser/src/authenticode.c",
    "chars": 20585,
    "preview": "/* Copyright (c) 2021 Avast Software\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nth"
  },
  {
    "path": "deps/authenticode-parser/src/certificate.c",
    "chars": 17105,
    "preview": "/* Copyright (c) 2021 Avast Software\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nth"
  },
  {
    "path": "deps/authenticode-parser/src/certificate.h",
    "chars": 1862,
    "preview": "/* Copyright (c) 2021 Avast Software\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nth"
  },
  {
    "path": "deps/authenticode-parser/src/countersignature.c",
    "chars": 21981,
    "preview": "/* Copyright (c) 2021 Avast Software\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nth"
  },
  {
    "path": "deps/authenticode-parser/src/countersignature.h",
    "chars": 2005,
    "preview": "/* Copyright (c) 2021 Avast Software\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nth"
  },
  {
    "path": "deps/authenticode-parser/src/helper.c",
    "chars": 2351,
    "preview": "/* Copyright (c) 2021 Avast Software\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nth"
  },
  {
    "path": "deps/authenticode-parser/src/helper.h",
    "chars": 2228,
    "preview": "/* Copyright (c) 2021 Avast Software\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nth"
  },
  {
    "path": "deps/authenticode-parser/src/structs.c",
    "chars": 3267,
    "preview": "/* Copyright (c) 2021 Avast Software\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nth"
  },
  {
    "path": "deps/authenticode-parser/src/structs.h",
    "chars": 3079,
    "preview": "/* Copyright (c) 2021 Avast Software\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nth"
  },
  {
    "path": "deps/capstone/CMakeLists.txt",
    "chars": 5336,
    "preview": "\nif(RETDEC_USE_SYSTEM_CAPSTONE)\n\tmessage(STATUS \"Capstone: using system Capstone.\")\n\n\tinclude(FindPkgConfig)\n\tpkg_check_"
  },
  {
    "path": "deps/capstone/retdec-capstone-config.cmake",
    "chars": 374,
    "preview": "@PACKAGE_INIT@\n\nif(NOT TARGET retdec::deps::capstone-libs)\n    add_library(retdec::deps::capstone-libs STATIC IMPORTED)\n"
  },
  {
    "path": "deps/capstone/retdec-system-capstone-config.cmake",
    "chars": 116,
    "preview": "\nif(NOT TARGET retdec::deps::capstone)\n    include(${CMAKE_CURRENT_LIST_DIR}/retdec-capstone-targets.cmake)\nendif()\n"
  },
  {
    "path": "deps/eigen/Eigen/Cholesky",
    "chars": 1206,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// This Source Code Form is "
  },
  {
    "path": "deps/eigen/Eigen/Core",
    "chars": 17963,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008 Gael G"
  },
  {
    "path": "deps/eigen/Eigen/Householder",
    "chars": 874,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// This Source Code Form is "
  },
  {
    "path": "deps/eigen/Eigen/Jacobi",
    "chars": 939,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// This Source Code Form is "
  },
  {
    "path": "deps/eigen/Eigen/QR",
    "chars": 1317,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// This Source Code Form is "
  },
  {
    "path": "deps/eigen/Eigen/src/Cholesky/LDLT.h",
    "chars": 24480,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008-2011 G"
  },
  {
    "path": "deps/eigen/Eigen/src/Cholesky/LLT.h",
    "chars": 18395,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008 Gael G"
  },
  {
    "path": "deps/eigen/Eigen/src/Cholesky/LLT_LAPACKE.h",
    "chars": 3974,
    "preview": "/*\n Copyright (c) 2011, Intel Corporation. All rights reserved.\n\n Redistribution and use in source and binary forms, wit"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/Array.h",
    "chars": 12115,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2009 Gael G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/ArrayBase.h",
    "chars": 8237,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2009 Gael G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/ArrayWrapper.h",
    "chars": 6775,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2009-2010 G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/Assign.h",
    "chars": 2720,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2007 Michae"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/AssignEvaluator.h",
    "chars": 38153,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2011 Benoit"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/Assign_MKL.h",
    "chars": 12479,
    "preview": "/*\n Copyright (c) 2011, Intel Corporation. All rights reserved.\n Copyright (C) 2015 Gael Guennebaud <gael.guennebaud@inr"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/BandMatrix.h",
    "chars": 13910,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2009 Gael G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/Block.h",
    "chars": 18064,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008 Gael G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/BooleanRedux.h",
    "chars": 4249,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008 Gael G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/CommaInitializer.h",
    "chars": 5689,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008 Gael G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/ConditionEstimator.h",
    "chars": 6990,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2016 Rasmus"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/CoreEvaluators.h",
    "chars": 62197,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2011 Benoit"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/CoreIterators.h",
    "chars": 4525,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008-2014 G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/CwiseBinaryOp.h",
    "chars": 7593,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008-2014 G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/CwiseNullaryOp.h",
    "chars": 31424,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008-2010 G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/CwiseTernaryOp.h",
    "chars": 8256,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008-2014 G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/CwiseUnaryOp.h",
    "chars": 3877,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008-2014 G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/CwiseUnaryView.h",
    "chars": 5366,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2009-2010 G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/DenseBase.h",
    "chars": 27551,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2007-2010 B"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/DenseCoeffsBase.h",
    "chars": 24212,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2006-2010 B"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/DenseStorage.h",
    "chars": 22205,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008 Gael G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/Diagonal.h",
    "chars": 9597,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2007-2009 B"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/DiagonalMatrix.h",
    "chars": 12666,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2009 Gael G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/DiagonalProduct.h",
    "chars": 970,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008 Gael G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/Dot.h",
    "chars": 11507,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2006-2008, "
  },
  {
    "path": "deps/eigen/Eigen/src/Core/EigenBase.h",
    "chars": 5619,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2009 Benoit"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/ForceAlignedAccess.h",
    "chars": 4769,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2009-2010 G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/Fuzzy.h",
    "chars": 5705,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2006-2008 B"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/GeneralProduct.h",
    "chars": 21123,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2006-2008 B"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/GenericPacketMath.h",
    "chars": 22069,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008 Gael G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/GlobalFunctions.h",
    "chars": 10222,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2010-2016 G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/Inverse.h",
    "chars": 3519,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2014 Gael G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/Map.h",
    "chars": 7239,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2007-2010 B"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/MapBase.h",
    "chars": 11212,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2007-2010 B"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/MathFunctions.h",
    "chars": 41000,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2006-2010 B"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/MathFunctionsImpl.h",
    "chars": 3369,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2014 Pedro "
  },
  {
    "path": "deps/eigen/Eigen/src/Core/Matrix.h",
    "chars": 19067,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2006-2010 B"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/MatrixBase.h",
    "chars": 23276,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2006-2009 B"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/NestByValue.h",
    "chars": 3400,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008 Gael G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/NoAlias.h",
    "chars": 3582,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2009 Gael G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/NumTraits.h",
    "chars": 9234,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2006-2010 B"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/PermutationMatrix.h",
    "chars": 21646,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2009 Benoit"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/PlainObjectBase.h",
    "chars": 45354,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008-2009 G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/Product.h",
    "chars": 7235,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008-2011 G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/ProductEvaluators.h",
    "chars": 51070,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2006-2008 B"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/Random.h",
    "chars": 6379,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008 Gael G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/Redux.h",
    "chars": 17852,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008 Gael G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/Ref.h",
    "chars": 12844,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2012 Gael G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/Replicate.h",
    "chars": 5595,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2009-2010 G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/ReturnByValue.h",
    "chars": 4200,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2009-2010 G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/Reverse.h",
    "chars": 7073,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2006-2008 B"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/Select.h",
    "chars": 6020,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008-2010 G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/SelfAdjointView.h",
    "chars": 14245,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2009 Gael G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/SelfCwiseBinaryOp.h",
    "chars": 1697,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2009-2010 G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/Solve.h",
    "chars": 6795,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2014 Gael G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/SolveTriangular.h",
    "chars": 9208,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008-2009 G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/SolverBase.h",
    "chars": 4365,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2015 Gael G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/StableNorm.h",
    "chars": 7692,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2009 Gael G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/Stride.h",
    "chars": 3865,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2010 Benoit"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/Swap.h",
    "chars": 2683,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2006-2008 B"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/Transpose.h",
    "chars": 14856,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2006-2008 B"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/Transpositions.h",
    "chars": 14386,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2010-2011 G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/TriangularMatrix.h",
    "chars": 37304,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008 Benoit"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/VectorBlock.h",
    "chars": 3462,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008-2010 G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/VectorwiseOp.h",
    "chars": 29441,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008-2010 G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/Visitor.h",
    "chars": 8074,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008 Gael G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/arch/AVX/Complex.h",
    "chars": 18037,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2014 Benoit"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/arch/AVX/MathFunctions.h",
    "chars": 17776,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2014 Pedro "
  },
  {
    "path": "deps/eigen/Eigen/src/Core/arch/AVX/PacketMath.h",
    "chars": 27841,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2014 Benoit"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/arch/AVX/TypeCasting.h",
    "chars": 1194,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2015 Benoit"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/arch/AVX512/MathFunctions.h",
    "chars": 15733,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2016 Pedro "
  },
  {
    "path": "deps/eigen/Eigen/src/Core/arch/AVX512/PacketMath.h",
    "chars": 50985,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2016 Benoit"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/arch/AltiVec/Complex.h",
    "chars": 16443,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2010 Gael G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/arch/AltiVec/MathFunctions.h",
    "chars": 10797,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2007 Julien"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/arch/AltiVec/PacketMath.h",
    "chars": 37671,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008-2016 K"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/arch/CUDA/Complex.h",
    "chars": 4240,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2014 Benoit"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/arch/CUDA/Half.h",
    "chars": 23528,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// This Source Code Form is "
  },
  {
    "path": "deps/eigen/Eigen/src/Core/arch/CUDA/MathFunctions.h",
    "chars": 2387,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2014 Benoit"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/arch/CUDA/PacketMath.h",
    "chars": 10744,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2014 Benoit"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/arch/CUDA/PacketMathHalf.h",
    "chars": 35538,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2016 Benoit"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/arch/CUDA/TypeCasting.h",
    "chars": 5509,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2016 Benoit"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/arch/Default/ConjHelper.h",
    "chars": 1989,
    "preview": "\n// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2017 Gael "
  },
  {
    "path": "deps/eigen/Eigen/src/Core/arch/Default/Settings.h",
    "chars": 1746,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008-2010 G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/arch/NEON/Complex.h",
    "chars": 17706,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2010 Gael G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h",
    "chars": 2846,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// This Source Code Form is "
  },
  {
    "path": "deps/eigen/Eigen/src/Core/arch/NEON/PacketMath.h",
    "chars": 28726,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008-2009 G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/arch/SSE/Complex.h",
    "chars": 19426,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2010 Gael G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h",
    "chars": 18888,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2007 Julien"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/arch/SSE/PacketMath.h",
    "chars": 35843,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008-2009 G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h",
    "chars": 1759,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2015 Benoit"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/arch/ZVector/Complex.h",
    "chars": 15366,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2010 Gael G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/arch/ZVector/MathFunctions.h",
    "chars": 4418,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2007 Julien"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/arch/ZVector/PacketMath.h",
    "chars": 32283,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2016 Konsta"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/functors/AssignmentFunctors.h",
    "chars": 6284,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008-2010 G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/functors/BinaryFunctors.h",
    "chars": 18263,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008-2010 G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/functors/NullaryFunctors.h",
    "chars": 8229,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008-2016 G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/functors/StlFunctors.h",
    "chars": 4400,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008-2010 G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/functors/TernaryFunctors.h",
    "chars": 607,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2016 Eugene"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/functors/UnaryFunctors.h",
    "chars": 27946,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008-2016 G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h",
    "chars": 81550,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008-2009 G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h",
    "chars": 18887,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008-2009 G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h",
    "chars": 15898,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2009-2010 G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h",
    "chars": 6937,
    "preview": "/*\n Copyright (c) 2011, Intel Corporation. All rights reserved.\n\n Redistribution and use in source and binary forms, wit"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h",
    "chars": 5106,
    "preview": "/*\n Copyright (c) 2011, Intel Corporation. All rights reserved.\n\n Redistribution and use in source and binary forms, wit"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/products/GeneralMatrixVector.h",
    "chars": 26808,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008-2009 G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h",
    "chars": 6368,
    "preview": "/*\n Copyright (c) 2011, Intel Corporation. All rights reserved.\n\n Redistribution and use in source and binary forms, wit"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/products/Parallelizer.h",
    "chars": 4931,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2010 Gael G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h",
    "chars": 20103,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2009 Gael G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h",
    "chars": 11570,
    "preview": "/*\n Copyright (c) 2011, Intel Corporation. All rights reserved.\n\n Redistribution and use in source and binary forms, wit"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h",
    "chars": 9901,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008-2009 G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h",
    "chars": 5209,
    "preview": "/*\n Copyright (c) 2011, Intel Corporation. All rights reserved.\n\n Redistribution and use in source and binary forms, wit"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/products/SelfadjointProduct.h",
    "chars": 6162,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2009 Gael G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/products/SelfadjointRank2Update.h",
    "chars": 4066,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2009 Gael G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/products/TriangularMatrixMatrix.h",
    "chars": 20879,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2009 Gael G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h",
    "chars": 13867,
    "preview": "/*\n Copyright (c) 2011, Intel Corporation. All rights reserved.\n\n Redistribution and use in source and binary forms, wit"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/products/TriangularMatrixVector.h",
    "chars": 14722,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2009 Gael G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h",
    "chars": 10571,
    "preview": "/*\n Copyright (c) 2011, Intel Corporation. All rights reserved.\n\n Redistribution and use in source and binary forms, wit"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/products/TriangularSolverMatrix.h",
    "chars": 14540,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2009 Gael G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h",
    "chars": 6707,
    "preview": "/*\n Copyright (c) 2011, Intel Corporation. All rights reserved.\n\n Redistribution and use in source and binary forms, wit"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/products/TriangularSolverVector.h",
    "chars": 5741,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008-2010 G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/util/BlasUtil.h",
    "chars": 19307,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2009-2010 G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/util/Constants.h",
    "chars": 21579,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008-2015 G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/util/DisableStupidWarnings.h",
    "chars": 4360,
    "preview": "#ifndef EIGEN_WARNINGS_DISABLED\n#define EIGEN_WARNINGS_DISABLED\n\n#ifdef _MSC_VER\n  // 4100 - unreferenced formal paramet"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/util/ForwardDeclarations.h",
    "chars": 14094,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2007-2010 B"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/util/MKL_support.h",
    "chars": 4026,
    "preview": "/*\n Copyright (c) 2011, Intel Corporation. All rights reserved.\n\n Redistribution and use in source and binary forms, wit"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/util/Macros.h",
    "chars": 38322,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008-2015 G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/util/Memory.h",
    "chars": 40579,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008-2015 G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/util/Meta.h",
    "chars": 21356,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008-2015 G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/util/NonMPL2.h",
    "chars": 85,
    "preview": "#ifdef EIGEN_MPL2_ONLY\n#error Including non-MPL2 code in EIGEN_MPL2_ONLY mode\n#endif\n"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/util/ReenableStupidWarnings.h",
    "chars": 1024,
    "preview": "#ifdef EIGEN_WARNINGS_DISABLED_2\n// \"DisableStupidWarnings.h\" was included twice recursively: Do not reenable warnings y"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/util/StaticAssert.h",
    "chars": 10518,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008 Gael G"
  },
  {
    "path": "deps/eigen/Eigen/src/Core/util/XprHelper.h",
    "chars": 34903,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008 Gael G"
  },
  {
    "path": "deps/eigen/Eigen/src/Householder/BlockHouseholder.h",
    "chars": 4481,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2010 Vincen"
  },
  {
    "path": "deps/eigen/Eigen/src/Householder/Householder.h",
    "chars": 5345,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2010 Benoit"
  },
  {
    "path": "deps/eigen/Eigen/src/Householder/HouseholderSequence.h",
    "chars": 20603,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2009 Gael G"
  },
  {
    "path": "deps/eigen/Eigen/src/Jacobi/Jacobi.h",
    "chars": 15902,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2009 Benoit"
  },
  {
    "path": "deps/eigen/Eigen/src/QR/ColPivHouseholderQR.h",
    "chars": 24881,
    "preview": "// This file is part of Eigen, a lightweight C++ template library\n// for linear algebra.\n//\n// Copyright (C) 2008-2009 G"
  }
]

// ... and 3647 more files (download for full content)

About this extraction

This page contains the full source code of the avast/retdec GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 3847 files (68.4 MB), approximately 14.2M tokens, and a symbol index with 14478 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!