diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 0000000000000000000000000000000000000000..7517c44acd84d0af7a2cac4af87365fbe197fdbc
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,16 @@
+# Contributing to Mythril
+Hi, if you are reading this that means that you probably want to contribute to Mythril, awesome! If not, then this file might not contain much useful information for you.
+
+## Creating an issue
+If you have found a problem with Mythril or want to propose a new feature then you can do this using GitHub issues. 
+We already created some templates to make this process easier, but if your issue/feature request does not fit within the template then feel free to deviate.
+
+If you have a small question or aren't sure if you should create an issue for your problem/suggestion then you can always hop by on our [Discord server](https://discord.gg/FGMkcU2).
+
+# Coding
+If you want to help out with the development of Mythril then you can take a look at our issues or [Waffle board](https://waffle.io/ConsenSys/mythril).
+
+Before you start working on an issue please stop by on Discord to message a collaborator, this way we can assign you to the issue making sure nobody does double work. We can also provide you with support through Discord if there are any questions during the development process.
+
+## New ideas
+Before you start working on a new idea, it's useful to create an issue on GitHub, that way we know what you want to implement and that you are working on it. Additionally, it might happen that your feature does not fit with our roadmap, in which case it would be unfortunate if you have already spent some time working on it.
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..4931136a025c237deaad70591af4c55b19dae21d
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,143 @@
+# syntax=docker/dockerfile:1
+ARG PYTHON_VERSION=3.10
+ARG INSTALLED_SOLC_VERSIONS
+
+
+FROM python:${PYTHON_VERSION:?} AS python-wheel
+WORKDIR /wheels
+
+
+FROM python-wheel AS python-wheel-with-cargo
+# Enable cargo sparse-registry to prevent it using large amounts of memory in
+# docker builds, and speed up builds by downloading less.
+# https://github.com/rust-lang/cargo/issues/10781#issuecomment-1163819998
+ENV CARGO_UNSTABLE_SPARSE_REGISTRY=true
+
+RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
+ENV PATH=/root/.cargo/bin:$PATH
+
+
+# z3-solver needs to build from src on arm, and it takes a long time, so
+# building it in a separate stage helps parallelise the build and helps it stay
+# in the build cache.
+FROM python-wheel AS python-wheel-z3-solver
+RUN pip install auditwheel
+RUN --mount=source=requirements.txt,target=/run/requirements.txt \
+  pip wheel "$(grep z3-solver /run/requirements.txt)"
+# The wheel z3-solver builds does not install in arm64 because it generates
+# incorrect platform compatibility metadata for arm64 builds. (It uses the
+# platform manylinux1_aarch64 but manylinux1 is only defined for x86 systems,
+# not arm: https://peps.python.org/pep-0600/#legacy-manylinux-tags). To work
+# around this, we use pypa's auditwheel tool to infer and apply a compatible
+# platform tag.
+RUN ( auditwheel addtag ./z3_solver-* \
+      # replace incorrect wheel with the re-tagged one
+      && rm ./z3_solver-* && mv wheelhouse/z3_solver-* . ) \
+    # addtag exits with status 1 if no tags need adding, which is fine
+    || true
+
+
+FROM python-wheel-with-cargo AS python-wheel-blake2b
+# blake2b-py doesn't publish ARM builds, and also don't publish source packages
+# on PyPI (other than the old 0.1.3 version) so we need to build from from a git
+# tag. They do publish binaries for linux amd64, but their binaries only support
+# certain platform versions and the amd64 python image isn't supported, so we
+# have to build from src for that as well.
+
+# Try to get a binary build or a source release on PyPI first, then fall back
+# to building from the git repo.
+RUN pip wheel 'blake2b-py>=0.2.0,<1' \
+  || pip wheel git+https://github.com/ethereum/blake2b-py.git@v0.2.0
+
+
+FROM python-wheel AS mythril-wheels
+# cython is needed to build some wheels, such as cytoolz
+RUN pip install cython
+RUN --mount=source=requirements.txt,target=/run/requirements.txt \
+  # ignore blake2b and z3-solver as we've already built them
+  grep -v -e blake2b -e z3-solver /run/requirements.txt > /tmp/requirements-remaining.txt
+RUN pip wheel -r /tmp/requirements-remaining.txt
+
+COPY . /mythril
+RUN pip wheel --no-deps /mythril
+
+COPY --from=python-wheel-blake2b /wheels/blake2b* /wheels
+COPY --from=python-wheel-z3-solver /wheels/z3_solver* /wheels
+
+
+# Solidity Compiler Version Manager. This provides cross-platform solc builds.
+# It's used by foundry to provide solc. https://github.com/roynalnaruto/svm-rs
+FROM python-wheel-with-cargo AS solidity-compiler-version-manager
+RUN cargo install svm-rs
+# put the binaries somewhere obvious for later stages to use
+RUN mkdir -p /svm-rs/bin && cd ~/.cargo/bin/ && cp svm solc /svm-rs/bin/
+
+
+FROM python:${PYTHON_VERSION:?}-slim AS myth
+ARG PYTHON_VERSION
+# Space-separated version string without leading 'v' (e.g. "0.4.21 0.4.22")
+ARG INSTALLED_SOLC_VERSIONS
+
+COPY --from=solidity-compiler-version-manager /svm-rs/bin/* /usr/local/bin/
+
+RUN --mount=from=mythril-wheels,source=/wheels,target=/wheels \
+  export PYTHONDONTWRITEBYTECODE=1 && pip install /wheels/*.whl
+
+RUN adduser --disabled-password mythril
+USER mythril
+WORKDIR /home/mythril
+
+# pre-install solc versions
+RUN set -x; [ -z "${INSTALLED_SOLC_VERSIONS}" ] || svm install ${INSTALLED_SOLC_VERSIONS}
+
+COPY --chown=mythril:mythril \
+  ./mythril/support/assets/signatures.db \
+  /home/mythril/.mythril/signatures.db
+
+COPY --chown=root:root --chmod=755 ./docker/docker-entrypoint.sh /
+COPY --chown=root:root --chmod=755 \
+  ./docker/sync-svm-solc-versions-with-solcx.sh \
+  /usr/local/bin/sync-svm-solc-versions-with-solcx
+ENTRYPOINT ["/docker-entrypoint.sh"]
+
+
+# Basic sanity checks to make sure the build is functional
+FROM myth AS myth-smoke-test-execution
+SHELL ["/bin/bash", "-euo", "pipefail", "-c"]
+WORKDIR /smoke-test
+COPY --chmod=755 <<"EOT" /smoke-test.sh
+#!/usr/bin/env bash
+set -x -euo pipefail
+
+# Check solcx knows about svm solc versions
+svm install 0.5.0
+sync-svm-solc-versions-with-solcx
+python -c '
+import solcx
+print("\n".join(str(v) for v in solcx.get_installed_solc_versions()))
+' | grep -P '^0\.5\.0$' || {
+  echo "solcx did not report svm-installed solc version";
+  exit 1
+}
+
+# Check myth can run
+myth version
+myth function-to-hash 'function transfer(address _to, uint256 _value) public returns (bool success)'
+myth analyze /solidity_examples/origin.sol -t 1 > origin.log || true
+grep 'SWC ID: 115' origin.log || {
+  error "Failed to detect SWC ID: 115 in origin.sol";
+  exit 1
+}
+
+# Check that the entrypoint works
+[[ $(/docker-entrypoint.sh version) == $(myth version) ]]
+[[ $(/docker-entrypoint.sh echo hi) == hi ]]
+[[ $(/docker-entrypoint.sh bash -c "printf '>%s<' 'foo bar'") == ">foo bar<" ]]
+EOT
+
+RUN --mount=source=./solidity_examples,target=/solidity_examples \
+  /smoke-test.sh 2>&1 | tee smoke-test.log
+
+
+FROM scratch as myth-smoke-test
+COPY --from=myth-smoke-test-execution /smoke-test/* /
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000000000000000000000000000000000000..20b432db48fff5aca70125f64357fca74798acd5
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,22 @@
+The MIT License (MIT)
+
+Copyright (c) since 2017 Bernhard Mueller
+
+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.
+
diff --git a/MANIFEST.in b/MANIFEST.in
new file mode 100644
index 0000000000000000000000000000000000000000..632a68051d5ae057bd7413ca03745445362c1a50
--- /dev/null
+++ b/MANIFEST.in
@@ -0,0 +1,3 @@
+include mythril/support/assets/*
+include mythril/analysis/templates/*
+include requirements.txt
\ No newline at end of file
diff --git a/README.md b/README.md
index b90d891086287dfada0f313c3388cf91b58ccc8c..baaa7b82005eee5b3651990ef317e2fe1950c696 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,103 @@
-# Open Source SW in Ajou University 
-# 2023-2 semester
+# Mythril
 
-# Department of. Cyber Security 202126802
-## Park Sang Hyeon 
+<p align="center">
+	<img src="/static/mythril_new.png" height="320px"/>
+</p>
+
+[![Discord](https://img.shields.io/discord/697535391594446898)](https://discord.com/channels/697535391594446898/712829485350649886)
+[![PyPI](https://badge.fury.io/py/mythril.svg)](https://pypi.python.org/pypi/mythril)
+[![Read the Docs](https://readthedocs.org/projects/mythril-classic/badge/?version=master)](https://mythril-classic.readthedocs.io/en/develop/)
+[![CircleCI](https://dl.circleci.com/status-badge/img/gh/Consensys/mythril/tree/develop.svg?style=shield&circle-token=fd6738fd235f6c2d8e10234259090e3b05190d0e)](https://dl.circleci.com/status-badge/redirect/gh/Consensys/mythril/tree/develop)
+[![Sonarcloud - Maintainability](https://sonarcloud.io/api/project_badges/measure?project=mythril&metric=sqale_rating)](https://sonarcloud.io/dashboard?id=mythril)
+[![Pypi Installs](https://static.pepy.tech/badge/mythril)](https://pepy.tech/project/mythril)
+[![DockerHub Pulls](https://img.shields.io/docker/pulls/mythril/myth.svg)](https://cloud.docker.com/u/mythril/repository/docker/mythril/myth)
+
+Mythril is a security analysis tool for EVM bytecode. It detects security vulnerabilities in smart contracts built for Ethereum, Hedera, Quorum, Vechain, Roostock, Tron and other EVM-compatible blockchains. It uses symbolic execution, SMT solving and taint analysis to detect a variety of security vulnerabilities. It's also used (in combination with other tools and techniques) in the [MythX](https://mythx.io) security analysis platform.
+
+If you are a smart contract developer, we recommend using [MythX tools](https://github.com/b-mueller/awesome-mythx-smart-contract-security-tools) which are optimized for usability and cover a wider range of security issues.
+
+Whether you want to contribute, need support, or want to learn what we have cooking for the future, you can checkout diligence-mythx channel in [ConsenSys Discord server](https://discord.gg/consensys).
+
+## Installation and setup
+
+Get it with [Docker](https://www.docker.com):
+
+```bash
+$ docker pull mythril/myth
+```
+
+Install from Pypi (Python 3.7-3.10):
+
+```bash
+$ pip3 install mythril
+```
+
+See the [docs](https://mythril-classic.readthedocs.io/en/master/installation.html) for more detailed instructions. 
+
+## Usage
+
+Run:
+
+```
+$ myth analyze <solidity-file>
+```
+
+Or:
+
+```
+$ myth analyze -a <contract-address>
+```
+
+Specify the maximum number of transactions to explore with `-t <number>`. You can also set a timeout with `--execution-timeout <seconds>`.
+
+Here is an example of running Mythril on the file `killbilly.sol` which is in the `solidity_examples` directory for `3` transactions:
+
+```
+> myth a killbilly.sol -t 3
+==== Unprotected Selfdestruct ====
+SWC ID: 106
+Severity: High
+Contract: KillBilly
+Function name: commencekilling()
+PC address: 354
+Estimated Gas Usage: 974 - 1399
+Any sender can cause the contract to self-destruct.
+Any sender can trigger execution of the SELFDESTRUCT instruction to destroy this contract account and withdraw its balance to an arbitrary address. Review the transaction trace generated for this issue and make sure that appropriate security controls are in place to prevent unrestricted access.
+--------------------
+In file: killbilly.sol:22
+
+selfdestruct(msg.sender)
+
+--------------------
+Initial State:
+
+Account: [CREATOR], balance: 0x2, nonce:0, storage:{}
+Account: [ATTACKER], balance: 0x1001, nonce:0, storage:{}
+
+Transaction Sequence:
+
+Caller: [CREATOR], calldata: , decoded_data: , value: 0x0
+Caller: [ATTACKER], function: killerize(address), txdata: 0x9fa299cc000000000000000000000000deadbeefdeadbeefdeadbeefdeadbeefdeadbeef, decoded_data: ('0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef',), value: 0x0
+Caller: [ATTACKER], function: activatekillability(), txdata: 0x84057065, value: 0x0
+Caller: [ATTACKER], function: commencekilling(), txdata: 0x7c11da20, value: 0x0
+
+```
+
+
+Instructions for using Mythril are found on the [docs](https://mythril-classic.readthedocs.io/en/develop/). 
+
+For support or general discussions please checkout [diligence-mythx channel](https://discord.com/channels/697535391594446898/712829485350649886) in [ConsenSys Discord server](https://discord.gg/consensys)..
+
+## Building the Documentation
+Mythril's documentation is contained in the `docs` folder and is published to [Read the Docs](https://mythril-classic.readthedocs.io/en/develop/). It is based on Sphinx and can be built using the Makefile contained in the subdirectory:
+
+```
+cd docs
+make html
+```
+
+This will create a `build` output directory containing the HTML output. Alternatively, PDF documentation can be built with `make latexpdf`. The available output format options can be seen with `make help`.
+
+## Vulnerability Remediation
+
+Visit the [Smart Contract Vulnerability Classification Registry](https://swcregistry.io/) to find detailed information and remediation guidance for the vulnerabilities reported.
diff --git a/all_tests.sh b/all_tests.sh
new file mode 100755
index 0000000000000000000000000000000000000000..f9b283e1f1cde25421581aef8908e315af3b3520
--- /dev/null
+++ b/all_tests.sh
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+echo -n "Checking Python version... "
+python -c 'import sys
+print(sys.version)
+assert sys.version_info[0:2] >= (3,5), \
+"""Please make sure you are using Python 3.5 or later.
+You ran with {}""".format(sys.version)' || exit $?
+
+
+rm -rf ./tests/testdata/outputs_current/
+mkdir -p ./tests/testdata/outputs_current/
+rm -rf ./tests/testdata/outputs_current_laser_result/
+mkdir -p ./tests/testdata/outputs_current_laser_result/
+mkdir -p /tmp/test-reports
+pytest --junitxml=/tmp/test-reports/junit.xml
diff --git a/coverage_report.sh b/coverage_report.sh
new file mode 100755
index 0000000000000000000000000000000000000000..9f78f84a41bce0839e6f36ec9d4a97e48720dff4
--- /dev/null
+++ b/coverage_report.sh
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+python --version
+echo "Please make sure you are using python 3.6.x"
+
+rm -rf ./tests/testdata/outputs_current/
+mkdir -p ./tests/testdata/outputs_current/
+rm -rf ./tests/testdata/outputs_current_laser_result/
+mkdir -p ./tests/testdata/outputs_current_laser_result/
+rm -rf coverage_html_report
+
+py.test \
+    --cov=mythril \
+    --cov-config=tox.ini \
+    --cov-report=html:coverage_reports/coverage_html_report \
+    --cov-report=xml:coverage_reports/coverage_xml_report.xml
diff --git a/docker-bake.hcl b/docker-bake.hcl
new file mode 100644
index 0000000000000000000000000000000000000000..60f37bca835894424bed5a4bda51ea67e32bc290
--- /dev/null
+++ b/docker-bake.hcl
@@ -0,0 +1,52 @@
+variable "REGISTRY" {
+  default = "docker.io"
+}
+
+variable "VERSION" {
+  default = "dev"
+}
+
+variable "PYTHON_VERSION" {
+  default = "3.10"
+}
+
+variable "INSTALLED_SOLC_VERSIONS" {
+  default = "0.8.19"
+}
+
+function "myth-tags" {
+  params = [NAME]
+  result = formatlist("${REGISTRY}/${NAME}:%s", split(",", VERSION))
+}
+
+group "default" {
+  targets = ["myth", "myth-smoke-test"]
+}
+
+target "_myth-base" {
+  target = "myth"
+  args = {
+    PYTHON_VERSION = PYTHON_VERSION
+    INSTALLED_SOLC_VERSIONS = INSTALLED_SOLC_VERSIONS
+  }
+  platforms = [
+    "linux/amd64",
+    "linux/arm64"
+  ]
+}
+
+target "myth" {
+  inherits = ["_myth-base"]
+  tags = myth-tags("mythril/myth")
+}
+
+target "myth-dev" {
+  inherits = ["_myth-base"]
+  tags = myth-tags("mythril/myth-dev")
+}
+
+target "myth-smoke-test" {
+  inherits = ["_myth-base"]
+  target = "myth-smoke-test"
+  output = ["build/docker/smoke-test"]
+}
diff --git a/docker/docker-entrypoint.sh b/docker/docker-entrypoint.sh
new file mode 100644
index 0000000000000000000000000000000000000000..1889706a798f101c0189f557aa1e34bad04d1fad
--- /dev/null
+++ b/docker/docker-entrypoint.sh
@@ -0,0 +1,19 @@
+#!/usr/bin/env bash
+set -euo pipefail
+
+# Install extra solc versions if SOLC is set
+if [[ ${SOLC:-} != "" ]]; then
+    read -ra solc_versions <<<"${SOLC:?}"
+    svm install "${solc_versions[@]}"
+fi
+# Always sync versions, as the should be at least one solc version installed
+# in the base image, and we may be running as root rather than the mythril user.
+sync-svm-solc-versions-with-solcx
+
+# By default we run myth with options from arguments we received. But if the
+# first argument is a valid program, we execute that instead so that people can
+# run other commands without overriding the entrypoint (e.g. bash).
+if command -v "${1:-}" > /dev/null; then
+    exec -- "$@"
+fi
+exec -- myth "$@"
diff --git a/docker/sync-svm-solc-versions-with-solcx.sh b/docker/sync-svm-solc-versions-with-solcx.sh
new file mode 100644
index 0000000000000000000000000000000000000000..06e33ad2c0626aea97af4be0e2a95877168825e8
--- /dev/null
+++ b/docker/sync-svm-solc-versions-with-solcx.sh
@@ -0,0 +1,17 @@
+#!/usr/bin/env bash
+set -euo pipefail
+
+# Let solcx know about the solc versions installed by svm.
+# We do this by symlinking svm's solc binaries into solcx's solc dir.
+[[ -e ~/.svm ]] || exit 0
+mkdir -p ~/.solcx
+readarray -t svm_solc_bins <<<"$(find ~/.svm -type f -name 'solc-*')"
+[[ ${svm_solc_bins[0]} != "" ]] || exit 0
+for svm_solc in "${svm_solc_bins[@]}"; do
+    name=$(basename "${svm_solc:?}")
+    version="${name#"solc-"}" # strip solc- prefix
+    solcx_solc=~/.solcx/"solc-v${version:?}"
+    if [[ ! -e $solcx_solc ]]; then
+        ln -s "${svm_solc:?}" "${solcx_solc:?}"
+    fi
+done
diff --git a/docker_build_and_deploy.sh b/docker_build_and_deploy.sh
new file mode 100755
index 0000000000000000000000000000000000000000..836488b057c99478c7f5940c8e999024a85e2e93
--- /dev/null
+++ b/docker_build_and_deploy.sh
@@ -0,0 +1,32 @@
+#!/bin/bash
+
+set -eo pipefail
+
+NAME=$1
+
+if [[ ! $NAME =~ ^mythril/myth(-dev)?$ ]];
+then
+  echo "Error: unknown image name: $NAME" >&2
+  exit 1
+fi
+
+if [ ! -z $CIRCLE_TAG ];
+then
+  GIT_VERSION=${CIRCLE_TAG#?}
+else
+  GIT_VERSION=${CIRCLE_SHA1}
+fi
+
+export DOCKER_BUILDKIT=1
+docker buildx create --use
+
+# Build and test all versions of the image. (The result will stay in the cache,
+# so the next build should be almost instant.)
+docker buildx bake myth-smoke-test
+
+echo "$DOCKERHUB_PASSWORD" | docker login -u $DOCKERHUB_USERNAME --password-stdin
+
+# strip mythril/ from NAME, e.g. myth or myth-dev
+BAKE_TARGET="${NAME#mythril/}"
+
+VERSION="${GIT_VERSION:?},latest" docker buildx bake --push "${BAKE_TARGET:?}"
diff --git a/docs/Makefile b/docs/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..69fe55ecfa9aade66e1412aef0ee7d04a9bcde86
--- /dev/null
+++ b/docs/Makefile
@@ -0,0 +1,19 @@
+# Minimal makefile for Sphinx documentation
+#
+
+# You can set these variables from the command line.
+SPHINXOPTS    =
+SPHINXBUILD   = sphinx-build
+SOURCEDIR     = source
+BUILDDIR      = build
+
+# Put it first so that "make" without argument is like "make help".
+help:
+	@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
+
+.PHONY: help Makefile
+
+# Catch-all target: route all unknown targets to Sphinx using the new
+# "make mode" option.  $(O) is meant as a shortcut for $(SPHINXOPTS).
+%: Makefile
+	@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
\ No newline at end of file
diff --git a/docs/make.bat b/docs/make.bat
new file mode 100644
index 0000000000000000000000000000000000000000..543c6b13b473ff3c586d5d97ae418d267ee795c4
--- /dev/null
+++ b/docs/make.bat
@@ -0,0 +1,35 @@
+@ECHO OFF
+
+pushd %~dp0
+
+REM Command file for Sphinx documentation
+
+if "%SPHINXBUILD%" == "" (
+	set SPHINXBUILD=sphinx-build
+)
+set SOURCEDIR=source
+set BUILDDIR=build
+
+if "%1" == "" goto help
+
+%SPHINXBUILD% >NUL 2>NUL
+if errorlevel 9009 (
+	echo.
+	echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
+	echo.installed, then set the SPHINXBUILD environment variable to point
+	echo.to the full path of the 'sphinx-build' executable. Alternatively you
+	echo.may add the Sphinx directory to PATH.
+	echo.
+	echo.If you don't have Sphinx installed, grab it from
+	echo.http://sphinx-doc.org/
+	exit /b 1
+)
+
+%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS%
+goto end
+
+:help
+%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS%
+
+:end
+popd
diff --git a/docs/source/about.rst b/docs/source/about.rst
new file mode 100644
index 0000000000000000000000000000000000000000..169fe4f7efece1a806bd535e4968b81a17ba8d44
--- /dev/null
+++ b/docs/source/about.rst
@@ -0,0 +1,6 @@
+What is Mythril?
+========================
+
+Mythril is a security analysis tool for Ethereum smart contracts. It was `introduced at HITBSecConf 2018 <https://github.com/b-mueller/smashing-smart-contracts/blob/master/smashing-smart-contracts-1of1.pdf>`_.
+
+Mythril detects a range of security issues, including integer underflows, owner-overwrite-to-Ether-withdrawal, and others. Note that Mythril is targeted at finding common vulnerabilities, and is not able to discover issues in the business logic of an application. Furthermore, Mythril and symbolic executors are generally unsound, as they are often unable to explore all possible states of a program.
diff --git a/docs/source/analysis-modules.rst b/docs/source/analysis-modules.rst
new file mode 100644
index 0000000000000000000000000000000000000000..bd1fd71fdba8aca7114312b6d4f9fc90284c6f86
--- /dev/null
+++ b/docs/source/analysis-modules.rst
@@ -0,0 +1,11 @@
+Analysis Modules
+================
+
+Mythril's detection capabilities are written in modules in the `/analysis/module/modules <https://github.com/ConsenSys/mythril/tree/master/mythril/analysis/module/modules>`_ directory.
+
+
+.. toctree::
+   :maxdepth: 2
+
+   module-list.rst
+   create-module.rst
diff --git a/docs/source/conf.py b/docs/source/conf.py
new file mode 100644
index 0000000000000000000000000000000000000000..ec07064bbf426cf150862e82986b0cd4b27939ab
--- /dev/null
+++ b/docs/source/conf.py
@@ -0,0 +1,188 @@
+# -*- coding: utf-8 -*-
+#
+# Configuration file for the Sphinx documentation builder.
+#
+# This file does only contain a selection of the most common options. For a
+# full list see the documentation:
+# http://www.sphinx-doc.org/en/master/config
+
+# -- Path setup --------------------------------------------------------------
+
+# If extensions (or modules to document with autodoc) are in another directory,
+# add these directories to sys.path here. If the directory is relative to the
+# documentation root, use os.path.abspath to make it absolute, like shown here.
+
+import os
+import sys
+
+sys.path.insert(0, os.path.abspath("../../"))
+
+
+# -- Project information -----------------------------------------------------
+
+project = "Mythril"
+copyright = "2019, ConsenSys Diligence"
+author = "ConsenSys Dilligence"
+
+# The short X.Y version
+version = ""
+# The full version, including alpha/beta/rc tags
+from mythril.__version__ import __version__ as VERSION
+
+release = VERSION
+
+
+# -- General configuration ---------------------------------------------------
+
+# If your documentation needs a minimal Sphinx version, state it here.
+#
+# needs_sphinx = '1.0'
+
+# Add any Sphinx extension module names here, as strings. They can be
+# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
+# ones.
+extensions = [
+    "sphinx.ext.autodoc",
+    "sphinx.ext.coverage",
+    "sphinx.ext.mathjax",
+    "sphinx.ext.viewcode",
+]
+
+# Add any paths that contain templates here, relative to this directory.
+templates_path = ["_templates"]
+
+# The suffix(es) of source filenames.
+# You can specify multiple suffix as a list of string:
+#
+# source_suffix = ['.rst', '.md']
+source_suffix = ".rst"
+
+# The master toctree document.
+master_doc = "index"
+
+# The language for content autogenerated by Sphinx. Refer to documentation
+# for a list of supported languages.
+#
+# This is also used if you do content translation via gettext catalogs.
+# Usually you set "language" from the command line for these cases.
+language = None
+
+# List of patterns, relative to source directory, that match files and
+# directories to ignore when looking for source files.
+# This pattern also affects html_static_path and html_extra_path.
+exclude_patterns = []
+
+# The name of the Pygments (syntax highlighting) style to use.
+pygments_style = None
+
+
+# -- Options for HTML output -------------------------------------------------
+
+# The theme to use for HTML and HTML Help pages.  See the documentation for
+# a list of builtin themes.
+#
+html_theme = "sphinx_rtd_theme"
+
+# Theme options are theme-specific and customize the look and feel of a theme
+# further.  For a list of options available for each theme, see the
+# documentation.
+#
+# html_theme_options = {}
+
+# Add any paths that contain custom static files (such as style sheets) here,
+# relative to this directory. They are copied after the builtin static files,
+# so a file named "default.css" will overwrite the builtin "default.css".
+html_static_path = ["_static"]
+
+# Custom sidebar templates, must be a dictionary that maps document names
+# to template names.
+#
+# The default sidebars (for documents that don't match any pattern) are
+# defined by theme itself.  Builtin themes are using these templates by
+# default: ``['localtoc.html', 'relations.html', 'sourcelink.html',
+# 'searchbox.html']``.
+#
+# html_sidebars = {}
+
+
+# -- Options for HTMLHelp output ---------------------------------------------
+
+# Output file base name for HTML help builder.
+htmlhelp_basename = "Mythrildoc"
+
+
+# -- Options for LaTeX output ------------------------------------------------
+
+latex_elements = {
+    # The paper size ('letterpaper' or 'a4paper').
+    #
+    # 'papersize': 'letterpaper',
+    # The font size ('10pt', '11pt' or '12pt').
+    #
+    # 'pointsize': '10pt',
+    # Additional stuff for the LaTeX preamble.
+    #
+    # 'preamble': '',
+    # Latex figure (float) alignment
+    #
+    # 'figure_align': 'htbp',
+}
+
+# Grouping the document tree into LaTeX files. List of tuples
+# (source start file, target name, title,
+#  author, documentclass [howto, manual, or own class]).
+latex_documents = [
+    (
+        master_doc,
+        "Mythril.tex",
+        "Mythril Documentation",
+        "ConsenSys Dilligence",
+        "manual",
+    )
+]
+
+
+# -- Options for manual page output ------------------------------------------
+
+# One entry per manual page. List of tuples
+# (source start file, name, description, authors, manual section).
+man_pages = [(master_doc, "mythril", "Mythril Documentation", [author], 1)]
+
+
+# -- Options for Texinfo output ----------------------------------------------
+
+# Grouping the document tree into Texinfo files. List of tuples
+# (source start file, target name, title, author,
+#  dir menu entry, description, category)
+texinfo_documents = [
+    (
+        master_doc,
+        "Mythril",
+        "Mythril Documentation",
+        author,
+        "Mythril",
+        "One line description of project.",
+        "Miscellaneous",
+    )
+]
+
+
+# -- Options for Epub output -------------------------------------------------
+
+# Bibliographic Dublin Core info.
+epub_title = project
+
+# The unique identifier of the text. This can be a ISBN number
+# or the project homepage.
+#
+# epub_identifier = ''
+
+# A unique identification for the text.
+#
+# epub_uid = ''
+
+# A list of files that should not be packed into the epub file.
+epub_exclude_files = ["search.html"]
+
+
+# -- Extension configuration -------------------------------------------------
diff --git a/docs/source/create-module.rst b/docs/source/create-module.rst
new file mode 100644
index 0000000000000000000000000000000000000000..0cd5bb87d9fd59f2ae6e0f60ffc524d523334c0c
--- /dev/null
+++ b/docs/source/create-module.rst
@@ -0,0 +1,4 @@
+Creating a Module
+=================
+
+Create a module in the :code:`analysis/modules` directory, and create an instance of a class that inherits :code:`DetectionModule` named :code:`detector`. Take a look at the `suicide module <https://github.com/Consensys/mythril/blob/develop/mythril/analysis/module/modules/suicide.py>`_ as an example.
diff --git a/docs/source/index.rst b/docs/source/index.rst
new file mode 100644
index 0000000000000000000000000000000000000000..4fab9da76f4924edf4118ba7b0582de9ddeb1598
--- /dev/null
+++ b/docs/source/index.rst
@@ -0,0 +1,22 @@
+Welcome to Mythril's documentation!
+===========================================
+
+.. toctree::
+   :maxdepth: 1
+   :caption: Table of Contents:
+
+   about
+   installation
+   tutorial
+   security-analysis
+   analysis-modules
+   mythril
+
+
+Indices and Tables
+==================
+
+* :ref:`genindex`
+* :ref:`modindex`
+* :ref:`search`
+
diff --git a/docs/source/installation.rst b/docs/source/installation.rst
new file mode 100644
index 0000000000000000000000000000000000000000..5a6f8724f9bc920a43d7ebd9c894949bcfce2e9a
--- /dev/null
+++ b/docs/source/installation.rst
@@ -0,0 +1,65 @@
+Installation and Setup
+======================
+
+Mythril can be setup using different methods.
+
+**************
+PyPI on Mac OS
+**************
+
+.. code-block:: bash
+
+   brew update
+   brew upgrade
+   brew tap ethereum/ethereum
+   brew install solidity
+   pip3 install mythril
+
+
+**************
+PyPI on Ubuntu
+**************
+
+.. code-block:: bash
+
+   # Update
+   sudo apt update
+
+   # Install solc
+   sudo apt install software-properties-common
+   sudo add-apt-repository ppa:ethereum/ethereum
+   sudo apt install solc
+
+   # Install libssl-dev, python3-dev, and python3-pip
+   sudo apt install libssl-dev python3-dev python3-pip
+
+   # Install mythril
+   pip3 install mythril
+   myth version
+
+
+******
+Docker
+******
+
+All Mythril releases, starting from v0.18.3, are published to DockerHub as Docker images under the :code:`mythril/myth` name.
+
+After installing `Docker CE <https://docs.docker.com/install/>`_:
+
+   .. code-block:: bash
+
+      # Pull the latest release of mythril/myth
+      $ docker pull mythril/myth
+
+Use :code:`docker run mythril/myth` the same way you would use the :code:`myth` command
+
+   .. code-block:: bash
+
+      docker run mythril/myth --help
+      docker run mythril/myth disassemble -c "0x6060"
+
+To pass a file from your host machine to the dockerized Mythril, you must mount its containing folder to the container properly. For :code:`contract.sol` in the current working directory, do:
+
+   .. code-block:: bash
+
+      docker run -v $(pwd):/tmp mythril/myth analyze /tmp/contract.sol
diff --git a/docs/source/module-list.rst b/docs/source/module-list.rst
new file mode 100644
index 0000000000000000000000000000000000000000..c78a82e1bfc2d554395cfc387700c857e7abfcda
--- /dev/null
+++ b/docs/source/module-list.rst
@@ -0,0 +1,83 @@
+Modules
+=======
+
+***********************************
+Delegate Call To Untrusted Contract
+***********************************
+
+The `delegatecall module <https://github.com/ConsenSys/mythril/blob/develop/mythril/analysis/module/modules/delegatecall.py>`_ detects `SWC-112 (DELEGATECALL to Untrusted Callee) <https://smartcontractsecurity.github.io/SWC-registry/docs/SWC-112>`_.
+
+***********************************
+Dependence on Predictable Variables
+***********************************
+
+The `predictable variables module <https://github.com/ConsenSys/mythril/blob/develop/mythril/analysis/module/modules/dependence_on_predictable_vars.py>`_ detects `SWC-120 (Weak Randomness) <https://smartcontractsecurity.github.io/SWC-registry/docs/SWC-120>`_ and `SWC-116 (Timestamp Dependence) <https://smartcontractsecurity.github.io/SWC-registry/docs/SWC-116>`_.
+
+
+***********
+Ether Thief
+***********
+
+The `Ether Thief module <https://github.com/ConsenSys/mythril/blob/develop/mythril/analysis/module/modules/ether_thief.py>`_ detects `SWC-105 (Unprotected Ether Withdrawal) <https://smartcontractsecurity.github.io/SWC-registry/docs/SWC-105>`_.
+
+**********
+Exceptions
+**********
+
+The `exceptions module <https://github.com/ConsenSys/mythril/blob/develop/mythril/analysis/module/modules/exceptions.py>`_ detects `SWC-110 (Assert Violation) <https://smartcontractsecurity.github.io/SWC-registry/docs/SWC-110>`_.
+
+**************
+External Calls
+**************
+
+The `external calls module <https://github.com/ConsenSys/mythril/blob/develop/mythril/analysis/module/modules/external_calls.py>`_ warns about `SWC-107 (Reentrancy) <https://smartcontractsecurity.github.io/SWC-registry/docs/SWC-107>`_ by detecting calls to external contracts.
+
+*******
+Integer
+*******
+
+The `integer module <https://github.com/ConsenSys/mythril/blob/develop/mythril/analysis/module/modules/integer.py>`_ detects `SWC-101 (Integer Overflow and Underflow) <https://smartcontractsecurity.github.io/SWC-registry/docs/SWC-101>`_.
+
+**************
+Multiple Sends
+**************
+
+The `multiple sends module <https://github.com/ConsenSys/mythril/blob/develop/mythril/analysis/module/modules/multiple_sends.py>`_ detects `SWC-113 (Denial of Service with Failed Call) <https://smartcontractsecurity.github.io/SWC-registry/docs/SWC-113>`_ by checking for multiple calls or sends in a single transaction.
+
+*******
+Suicide
+*******
+
+The `suicide module <https://github.com/ConsenSys/mythril/blob/develop/mythril/analysis/module/modules/suicide.py>`_ detects `SWC-106 (Unprotected SELFDESTRUCT) <https://smartcontractsecurity.github.io/SWC-registry/docs/SWC-106>`_.
+
+
+****************************
+State Change External Calls
+****************************
+
+The `state change external calls module <https://github.com/ConsenSys/mythril/blob/develop/mythril/analysis/module/modules/state_change_external_calls.py>`_ detects `SWC-107 (Reentrancy) <https://smartcontractsecurity.github.io/SWC-registry/docs/SWC-107>`_ by detecting state change after calls to an external contract.
+
+****************
+Unchecked Retval
+****************
+
+The `unchecked retval module <https://github.com/ConsenSys/mythril/blob/develop/mythril/analysis/module/modules/unchecked_retval.py>`_ detects `SWC-104 (Unchecked Call Return Value) <https://smartcontractsecurity.github.io/SWC-registry/docs/SWC-104>`_.
+
+************************
+User Supplied assertion
+************************
+
+The `user supplied assertion module <https://github.com/ConsenSys/mythril/blob/develop/mythril/analysis/module/modules/user_assertions.py>`_ detects `SWC-110 (Assert Violation) <https://smartcontractsecurity.github.io/SWC-registry/docs/SWC-110>`_ for user-supplied assertions. User supplied assertions should be log messages of the form: :code:`emit AssertionFailed(string)`.
+
+************************
+Arbitrary Storage Write
+************************
+
+The `arbitrary storage write module <https://github.com/ConsenSys/mythril/blob/develop/mythril/analysis/module/modules/arbitrary_write.py>`_ detects `SWC-124 (Write to Arbitrary Storage Location) <https://smartcontractsecurity.github.io/SWC-registry/docs/SWC-124>`_.
+
+****************
+Arbitrary Jump
+****************
+
+The `arbitrary jump module <https://github.com/ConsenSys/mythril/blob/develop/mythril/analysis/module/modules/arbitrary_jump.py>`_ detects `SWC-127 (Arbitrary Jump with Function Type Variable) <https://smartcontractsecurity.github.io/SWC-registry/docs/SWC-127>`_.
+
diff --git a/docs/source/modules.rst b/docs/source/modules.rst
new file mode 100644
index 0000000000000000000000000000000000000000..cbf872198ea9f202672e0c51a7c96b863cda4a7b
--- /dev/null
+++ b/docs/source/modules.rst
@@ -0,0 +1,7 @@
+mythril
+=======
+
+.. toctree::
+   :maxdepth: 4
+
+   mythril
diff --git a/docs/source/mythril.analysis.module.modules.rst b/docs/source/mythril.analysis.module.modules.rst
new file mode 100644
index 0000000000000000000000000000000000000000..b758edc3d80a7142f177e88b995e3a6a5b7ae4b2
--- /dev/null
+++ b/docs/source/mythril.analysis.module.modules.rst
@@ -0,0 +1,125 @@
+mythril.analysis.module.modules package
+=======================================
+
+Submodules
+----------
+
+mythril.analysis.module.modules.arbitrary\_jump module
+------------------------------------------------------
+
+.. automodule:: mythril.analysis.module.modules.arbitrary_jump
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.analysis.module.modules.arbitrary\_write module
+-------------------------------------------------------
+
+.. automodule:: mythril.analysis.module.modules.arbitrary_write
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.analysis.module.modules.delegatecall module
+---------------------------------------------------
+
+.. automodule:: mythril.analysis.module.modules.delegatecall
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.analysis.module.modules.dependence\_on\_origin module
+-------------------------------------------------------------
+
+.. automodule:: mythril.analysis.module.modules.dependence_on_origin
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.analysis.module.modules.dependence\_on\_predictable\_vars module
+------------------------------------------------------------------------
+
+.. automodule:: mythril.analysis.module.modules.dependence_on_predictable_vars
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.analysis.module.modules.ether\_thief module
+---------------------------------------------------
+
+.. automodule:: mythril.analysis.module.modules.ether_thief
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.analysis.module.modules.exceptions module
+-------------------------------------------------
+
+.. automodule:: mythril.analysis.module.modules.exceptions
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.analysis.module.modules.external\_calls module
+------------------------------------------------------
+
+.. automodule:: mythril.analysis.module.modules.external_calls
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.analysis.module.modules.integer module
+----------------------------------------------
+
+.. automodule:: mythril.analysis.module.modules.integer
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.analysis.module.modules.multiple\_sends module
+------------------------------------------------------
+
+.. automodule:: mythril.analysis.module.modules.multiple_sends
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.analysis.module.modules.state\_change\_external\_calls module
+---------------------------------------------------------------------
+
+.. automodule:: mythril.analysis.module.modules.state_change_external_calls
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.analysis.module.modules.suicide module
+----------------------------------------------
+
+.. automodule:: mythril.analysis.module.modules.suicide
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.analysis.module.modules.unchecked\_retval module
+--------------------------------------------------------
+
+.. automodule:: mythril.analysis.module.modules.unchecked_retval
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.analysis.module.modules.user\_assertions module
+-------------------------------------------------------
+
+.. automodule:: mythril.analysis.module.modules.user_assertions
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+Module contents
+---------------
+
+.. automodule:: mythril.analysis.module.modules
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/source/mythril.analysis.module.rst b/docs/source/mythril.analysis.module.rst
new file mode 100644
index 0000000000000000000000000000000000000000..a701c70f025f587f27ab372403e9b960a9648c12
--- /dev/null
+++ b/docs/source/mythril.analysis.module.rst
@@ -0,0 +1,53 @@
+mythril.analysis.module package
+===============================
+
+Subpackages
+-----------
+
+.. toctree::
+   :maxdepth: 4
+
+   mythril.analysis.module.modules
+
+Submodules
+----------
+
+mythril.analysis.module.base module
+-----------------------------------
+
+.. automodule:: mythril.analysis.module.base
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.analysis.module.loader module
+-------------------------------------
+
+.. automodule:: mythril.analysis.module.loader
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.analysis.module.module\_helpers module
+----------------------------------------------
+
+.. automodule:: mythril.analysis.module.module_helpers
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.analysis.module.util module
+-----------------------------------
+
+.. automodule:: mythril.analysis.module.util
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+Module contents
+---------------
+
+.. automodule:: mythril.analysis.module
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/source/mythril.analysis.rst b/docs/source/mythril.analysis.rst
new file mode 100644
index 0000000000000000000000000000000000000000..6f0f30f44c4aecb4528ff19f11f7ded31017e689
--- /dev/null
+++ b/docs/source/mythril.analysis.rst
@@ -0,0 +1,117 @@
+mythril.analysis package
+========================
+
+Subpackages
+-----------
+
+.. toctree::
+   :maxdepth: 4
+
+   mythril.analysis.module
+
+Submodules
+----------
+
+mythril.analysis.analysis\_args module
+--------------------------------------
+
+.. automodule:: mythril.analysis.analysis_args
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.analysis.call\_helpers module
+-------------------------------------
+
+.. automodule:: mythril.analysis.call_helpers
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.analysis.callgraph module
+---------------------------------
+
+.. automodule:: mythril.analysis.callgraph
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.analysis.issue\_annotation module
+-----------------------------------------
+
+.. automodule:: mythril.analysis.issue_annotation
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.analysis.ops module
+---------------------------
+
+.. automodule:: mythril.analysis.ops
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.analysis.potential\_issues module
+-----------------------------------------
+
+.. automodule:: mythril.analysis.potential_issues
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.analysis.report module
+------------------------------
+
+.. automodule:: mythril.analysis.report
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.analysis.security module
+--------------------------------
+
+.. automodule:: mythril.analysis.security
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.analysis.solver module
+------------------------------
+
+.. automodule:: mythril.analysis.solver
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.analysis.swc\_data module
+---------------------------------
+
+.. automodule:: mythril.analysis.swc_data
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.analysis.symbolic module
+--------------------------------
+
+.. automodule:: mythril.analysis.symbolic
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.analysis.traceexplore module
+------------------------------------
+
+.. automodule:: mythril.analysis.traceexplore
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+Module contents
+---------------
+
+.. automodule:: mythril.analysis
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/source/mythril.concolic.rst b/docs/source/mythril.concolic.rst
new file mode 100644
index 0000000000000000000000000000000000000000..2b988b5f59bc94ab7770a9402e6d6caeb62513a9
--- /dev/null
+++ b/docs/source/mythril.concolic.rst
@@ -0,0 +1,37 @@
+mythril.concolic package
+========================
+
+Submodules
+----------
+
+mythril.concolic.concolic\_execution module
+-------------------------------------------
+
+.. automodule:: mythril.concolic.concolic_execution
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.concolic.concrete\_data module
+--------------------------------------
+
+.. automodule:: mythril.concolic.concrete_data
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.concolic.find\_trace module
+-----------------------------------
+
+.. automodule:: mythril.concolic.find_trace
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+Module contents
+---------------
+
+.. automodule:: mythril.concolic
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/source/mythril.disassembler.rst b/docs/source/mythril.disassembler.rst
new file mode 100644
index 0000000000000000000000000000000000000000..da8aa50865d95f2f3042de4261f456ecc59baaf8
--- /dev/null
+++ b/docs/source/mythril.disassembler.rst
@@ -0,0 +1,29 @@
+mythril.disassembler package
+============================
+
+Submodules
+----------
+
+mythril.disassembler.asm module
+-------------------------------
+
+.. automodule:: mythril.disassembler.asm
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.disassembler.disassembly module
+---------------------------------------
+
+.. automodule:: mythril.disassembler.disassembly
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+Module contents
+---------------
+
+.. automodule:: mythril.disassembler
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/source/mythril.ethereum.interface.rpc.rst b/docs/source/mythril.ethereum.interface.rpc.rst
new file mode 100644
index 0000000000000000000000000000000000000000..669c18202d4cbf350303816a1b30a2090fee8ca9
--- /dev/null
+++ b/docs/source/mythril.ethereum.interface.rpc.rst
@@ -0,0 +1,53 @@
+mythril.ethereum.interface.rpc package
+======================================
+
+Submodules
+----------
+
+mythril.ethereum.interface.rpc.base\_client module
+--------------------------------------------------
+
+.. automodule:: mythril.ethereum.interface.rpc.base_client
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.ethereum.interface.rpc.client module
+--------------------------------------------
+
+.. automodule:: mythril.ethereum.interface.rpc.client
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.ethereum.interface.rpc.constants module
+-----------------------------------------------
+
+.. automodule:: mythril.ethereum.interface.rpc.constants
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.ethereum.interface.rpc.exceptions module
+------------------------------------------------
+
+.. automodule:: mythril.ethereum.interface.rpc.exceptions
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.ethereum.interface.rpc.utils module
+-------------------------------------------
+
+.. automodule:: mythril.ethereum.interface.rpc.utils
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+Module contents
+---------------
+
+.. automodule:: mythril.ethereum.interface.rpc
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/source/mythril.ethereum.interface.rst b/docs/source/mythril.ethereum.interface.rst
new file mode 100644
index 0000000000000000000000000000000000000000..7d30ec4e5ced945970a3c3eb7e0ed23fe7f3e1c2
--- /dev/null
+++ b/docs/source/mythril.ethereum.interface.rst
@@ -0,0 +1,18 @@
+mythril.ethereum.interface package
+==================================
+
+Subpackages
+-----------
+
+.. toctree::
+   :maxdepth: 4
+
+   mythril.ethereum.interface.rpc
+
+Module contents
+---------------
+
+.. automodule:: mythril.ethereum.interface
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/source/mythril.ethereum.rst b/docs/source/mythril.ethereum.rst
new file mode 100644
index 0000000000000000000000000000000000000000..fc50087199f464ffd34276315586c43ff184c808
--- /dev/null
+++ b/docs/source/mythril.ethereum.rst
@@ -0,0 +1,37 @@
+mythril.ethereum package
+========================
+
+Subpackages
+-----------
+
+.. toctree::
+   :maxdepth: 4
+
+   mythril.ethereum.interface
+
+Submodules
+----------
+
+mythril.ethereum.evmcontract module
+-----------------------------------
+
+.. automodule:: mythril.ethereum.evmcontract
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.ethereum.util module
+----------------------------
+
+.. automodule:: mythril.ethereum.util
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+Module contents
+---------------
+
+.. automodule:: mythril.ethereum
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/source/mythril.interfaces.rst b/docs/source/mythril.interfaces.rst
new file mode 100644
index 0000000000000000000000000000000000000000..f43a2eff252f4e0096d79dda906e044648c9adb0
--- /dev/null
+++ b/docs/source/mythril.interfaces.rst
@@ -0,0 +1,29 @@
+mythril.interfaces package
+==========================
+
+Submodules
+----------
+
+mythril.interfaces.cli module
+-----------------------------
+
+.. automodule:: mythril.interfaces.cli
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.interfaces.epic module
+------------------------------
+
+.. automodule:: mythril.interfaces.epic
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+Module contents
+---------------
+
+.. automodule:: mythril.interfaces
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/source/mythril.laser.ethereum.function_managers.rst b/docs/source/mythril.laser.ethereum.function_managers.rst
new file mode 100644
index 0000000000000000000000000000000000000000..8f2182d122482d91e96b50c64883c9a6f42aaedb
--- /dev/null
+++ b/docs/source/mythril.laser.ethereum.function_managers.rst
@@ -0,0 +1,29 @@
+mythril.laser.ethereum.function\_managers package
+=================================================
+
+Submodules
+----------
+
+mythril.laser.ethereum.function\_managers.exponent\_function\_manager module
+----------------------------------------------------------------------------
+
+.. automodule:: mythril.laser.ethereum.function_managers.exponent_function_manager
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.laser.ethereum.function\_managers.keccak\_function\_manager module
+--------------------------------------------------------------------------
+
+.. automodule:: mythril.laser.ethereum.function_managers.keccak_function_manager
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+Module contents
+---------------
+
+.. automodule:: mythril.laser.ethereum.function_managers
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/source/mythril.laser.ethereum.rst b/docs/source/mythril.laser.ethereum.rst
new file mode 100644
index 0000000000000000000000000000000000000000..23cfb35a4bd5cab7da482fb0dc5e51d9ce429475
--- /dev/null
+++ b/docs/source/mythril.laser.ethereum.rst
@@ -0,0 +1,96 @@
+mythril.laser.ethereum package
+==============================
+
+Subpackages
+-----------
+
+.. toctree::
+   :maxdepth: 4
+
+   mythril.laser.ethereum.function_managers
+   mythril.laser.ethereum.state
+   mythril.laser.ethereum.strategy
+   mythril.laser.ethereum.transaction
+
+Submodules
+----------
+
+mythril.laser.ethereum.call module
+----------------------------------
+
+.. automodule:: mythril.laser.ethereum.call
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.laser.ethereum.cfg module
+---------------------------------
+
+.. automodule:: mythril.laser.ethereum.cfg
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.laser.ethereum.evm\_exceptions module
+---------------------------------------------
+
+.. automodule:: mythril.laser.ethereum.evm_exceptions
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.laser.ethereum.instruction\_data module
+-----------------------------------------------
+
+.. automodule:: mythril.laser.ethereum.instruction_data
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.laser.ethereum.instructions module
+------------------------------------------
+
+.. automodule:: mythril.laser.ethereum.instructions
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.laser.ethereum.natives module
+-------------------------------------
+
+.. automodule:: mythril.laser.ethereum.natives
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.laser.ethereum.svm module
+---------------------------------
+
+.. automodule:: mythril.laser.ethereum.svm
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.laser.ethereum.time\_handler module
+-------------------------------------------
+
+.. automodule:: mythril.laser.ethereum.time_handler
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.laser.ethereum.util module
+----------------------------------
+
+.. automodule:: mythril.laser.ethereum.util
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+Module contents
+---------------
+
+.. automodule:: mythril.laser.ethereum
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/source/mythril.laser.ethereum.state.rst b/docs/source/mythril.laser.ethereum.state.rst
new file mode 100644
index 0000000000000000000000000000000000000000..5c132a849c42eeb281bd65f8a812da6bacafcbdb
--- /dev/null
+++ b/docs/source/mythril.laser.ethereum.state.rst
@@ -0,0 +1,93 @@
+mythril.laser.ethereum.state package
+====================================
+
+Submodules
+----------
+
+mythril.laser.ethereum.state.account module
+-------------------------------------------
+
+.. automodule:: mythril.laser.ethereum.state.account
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.laser.ethereum.state.annotation module
+----------------------------------------------
+
+.. automodule:: mythril.laser.ethereum.state.annotation
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.laser.ethereum.state.calldata module
+--------------------------------------------
+
+.. automodule:: mythril.laser.ethereum.state.calldata
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.laser.ethereum.state.constraints module
+-----------------------------------------------
+
+.. automodule:: mythril.laser.ethereum.state.constraints
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.laser.ethereum.state.environment module
+-----------------------------------------------
+
+.. automodule:: mythril.laser.ethereum.state.environment
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.laser.ethereum.state.global\_state module
+-------------------------------------------------
+
+.. automodule:: mythril.laser.ethereum.state.global_state
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.laser.ethereum.state.machine\_state module
+--------------------------------------------------
+
+.. automodule:: mythril.laser.ethereum.state.machine_state
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.laser.ethereum.state.memory module
+------------------------------------------
+
+.. automodule:: mythril.laser.ethereum.state.memory
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.laser.ethereum.state.return\_data module
+------------------------------------------------
+
+.. automodule:: mythril.laser.ethereum.state.return_data
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.laser.ethereum.state.world\_state module
+------------------------------------------------
+
+.. automodule:: mythril.laser.ethereum.state.world_state
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+Module contents
+---------------
+
+.. automodule:: mythril.laser.ethereum.state
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/source/mythril.laser.ethereum.strategy.extensions.rst b/docs/source/mythril.laser.ethereum.strategy.extensions.rst
new file mode 100644
index 0000000000000000000000000000000000000000..4d843dd4572646da710edb8b38957f9c4c039d37
--- /dev/null
+++ b/docs/source/mythril.laser.ethereum.strategy.extensions.rst
@@ -0,0 +1,21 @@
+mythril.laser.ethereum.strategy.extensions package
+==================================================
+
+Submodules
+----------
+
+mythril.laser.ethereum.strategy.extensions.bounded\_loops module
+----------------------------------------------------------------
+
+.. automodule:: mythril.laser.ethereum.strategy.extensions.bounded_loops
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+Module contents
+---------------
+
+.. automodule:: mythril.laser.ethereum.strategy.extensions
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/source/mythril.laser.ethereum.strategy.rst b/docs/source/mythril.laser.ethereum.strategy.rst
new file mode 100644
index 0000000000000000000000000000000000000000..7b0cff889a8d0bcad9355c70c33feae8d3052027
--- /dev/null
+++ b/docs/source/mythril.laser.ethereum.strategy.rst
@@ -0,0 +1,45 @@
+mythril.laser.ethereum.strategy package
+=======================================
+
+Subpackages
+-----------
+
+.. toctree::
+   :maxdepth: 4
+
+   mythril.laser.ethereum.strategy.extensions
+
+Submodules
+----------
+
+mythril.laser.ethereum.strategy.basic module
+--------------------------------------------
+
+.. automodule:: mythril.laser.ethereum.strategy.basic
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.laser.ethereum.strategy.beam module
+-------------------------------------------
+
+.. automodule:: mythril.laser.ethereum.strategy.beam
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.laser.ethereum.strategy.concolic module
+-----------------------------------------------
+
+.. automodule:: mythril.laser.ethereum.strategy.concolic
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+Module contents
+---------------
+
+.. automodule:: mythril.laser.ethereum.strategy
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/source/mythril.laser.ethereum.transaction.rst b/docs/source/mythril.laser.ethereum.transaction.rst
new file mode 100644
index 0000000000000000000000000000000000000000..3a063bf2e2d17b2545fe70e20e3f9cd8c200ce51
--- /dev/null
+++ b/docs/source/mythril.laser.ethereum.transaction.rst
@@ -0,0 +1,37 @@
+mythril.laser.ethereum.transaction package
+==========================================
+
+Submodules
+----------
+
+mythril.laser.ethereum.transaction.concolic module
+--------------------------------------------------
+
+.. automodule:: mythril.laser.ethereum.transaction.concolic
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.laser.ethereum.transaction.symbolic module
+--------------------------------------------------
+
+.. automodule:: mythril.laser.ethereum.transaction.symbolic
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.laser.ethereum.transaction.transaction\_models module
+-------------------------------------------------------------
+
+.. automodule:: mythril.laser.ethereum.transaction.transaction_models
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+Module contents
+---------------
+
+.. automodule:: mythril.laser.ethereum.transaction
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/source/mythril.laser.plugin.plugins.coverage.rst b/docs/source/mythril.laser.plugin.plugins.coverage.rst
new file mode 100644
index 0000000000000000000000000000000000000000..147d3c8282b11ff062d90a75fa5832bf87de9c76
--- /dev/null
+++ b/docs/source/mythril.laser.plugin.plugins.coverage.rst
@@ -0,0 +1,29 @@
+mythril.laser.plugin.plugins.coverage package
+=============================================
+
+Submodules
+----------
+
+mythril.laser.plugin.plugins.coverage.coverage\_plugin module
+-------------------------------------------------------------
+
+.. automodule:: mythril.laser.plugin.plugins.coverage.coverage_plugin
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.laser.plugin.plugins.coverage.coverage\_strategy module
+---------------------------------------------------------------
+
+.. automodule:: mythril.laser.plugin.plugins.coverage.coverage_strategy
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+Module contents
+---------------
+
+.. automodule:: mythril.laser.plugin.plugins.coverage
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/source/mythril.laser.plugin.plugins.rst b/docs/source/mythril.laser.plugin.plugins.rst
new file mode 100644
index 0000000000000000000000000000000000000000..f291de8da9f9d032cfc0444ba12dab476069bc0a
--- /dev/null
+++ b/docs/source/mythril.laser.plugin.plugins.rst
@@ -0,0 +1,70 @@
+mythril.laser.plugin.plugins package
+====================================
+
+Subpackages
+-----------
+
+.. toctree::
+   :maxdepth: 4
+
+   mythril.laser.plugin.plugins.coverage
+   mythril.laser.plugin.plugins.summary_backup
+
+Submodules
+----------
+
+mythril.laser.plugin.plugins.benchmark module
+---------------------------------------------
+
+.. automodule:: mythril.laser.plugin.plugins.benchmark
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.laser.plugin.plugins.call\_depth\_limiter module
+--------------------------------------------------------
+
+.. automodule:: mythril.laser.plugin.plugins.call_depth_limiter
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.laser.plugin.plugins.dependency\_pruner module
+------------------------------------------------------
+
+.. automodule:: mythril.laser.plugin.plugins.dependency_pruner
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.laser.plugin.plugins.instruction\_profiler module
+---------------------------------------------------------
+
+.. automodule:: mythril.laser.plugin.plugins.instruction_profiler
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.laser.plugin.plugins.mutation\_pruner module
+----------------------------------------------------
+
+.. automodule:: mythril.laser.plugin.plugins.mutation_pruner
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.laser.plugin.plugins.plugin\_annotations module
+-------------------------------------------------------
+
+.. automodule:: mythril.laser.plugin.plugins.plugin_annotations
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+Module contents
+---------------
+
+.. automodule:: mythril.laser.plugin.plugins
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/source/mythril.laser.plugin.plugins.summary_backup.rst b/docs/source/mythril.laser.plugin.plugins.summary_backup.rst
new file mode 100644
index 0000000000000000000000000000000000000000..134b486b500f9b7fe79544330ae030c0d93e56b8
--- /dev/null
+++ b/docs/source/mythril.laser.plugin.plugins.summary_backup.rst
@@ -0,0 +1,10 @@
+mythril.laser.plugin.plugins.summary\_backup package
+====================================================
+
+Module contents
+---------------
+
+.. automodule:: mythril.laser.plugin.plugins.summary_backup
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/source/mythril.laser.plugin.rst b/docs/source/mythril.laser.plugin.rst
new file mode 100644
index 0000000000000000000000000000000000000000..8e32f4f543d86dd7b36f14bf81cfdb1e0dc38d45
--- /dev/null
+++ b/docs/source/mythril.laser.plugin.rst
@@ -0,0 +1,53 @@
+mythril.laser.plugin package
+============================
+
+Subpackages
+-----------
+
+.. toctree::
+   :maxdepth: 4
+
+   mythril.laser.plugin.plugins
+
+Submodules
+----------
+
+mythril.laser.plugin.builder module
+-----------------------------------
+
+.. automodule:: mythril.laser.plugin.builder
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.laser.plugin.interface module
+-------------------------------------
+
+.. automodule:: mythril.laser.plugin.interface
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.laser.plugin.loader module
+----------------------------------
+
+.. automodule:: mythril.laser.plugin.loader
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.laser.plugin.signals module
+-----------------------------------
+
+.. automodule:: mythril.laser.plugin.signals
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+Module contents
+---------------
+
+.. automodule:: mythril.laser.plugin
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/source/mythril.laser.rst b/docs/source/mythril.laser.rst
new file mode 100644
index 0000000000000000000000000000000000000000..4e5d397a907f33eb876d2387410e551396a4a35e
--- /dev/null
+++ b/docs/source/mythril.laser.rst
@@ -0,0 +1,31 @@
+mythril.laser package
+=====================
+
+Subpackages
+-----------
+
+.. toctree::
+   :maxdepth: 4
+
+   mythril.laser.ethereum
+   mythril.laser.plugin
+   mythril.laser.smt
+
+Submodules
+----------
+
+mythril.laser.execution\_info module
+------------------------------------
+
+.. automodule:: mythril.laser.execution_info
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+Module contents
+---------------
+
+.. automodule:: mythril.laser
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/source/mythril.laser.smt.rst b/docs/source/mythril.laser.smt.rst
new file mode 100644
index 0000000000000000000000000000000000000000..31abab71078f9735d471971c745cadc047cb7536
--- /dev/null
+++ b/docs/source/mythril.laser.smt.rst
@@ -0,0 +1,77 @@
+mythril.laser.smt package
+=========================
+
+Subpackages
+-----------
+
+.. toctree::
+   :maxdepth: 4
+
+   mythril.laser.smt.solver
+
+Submodules
+----------
+
+mythril.laser.smt.array module
+------------------------------
+
+.. automodule:: mythril.laser.smt.array
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.laser.smt.bitvec module
+-------------------------------
+
+.. automodule:: mythril.laser.smt.bitvec
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.laser.smt.bitvec\_helper module
+---------------------------------------
+
+.. automodule:: mythril.laser.smt.bitvec_helper
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.laser.smt.bool module
+-----------------------------
+
+.. automodule:: mythril.laser.smt.bool
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.laser.smt.expression module
+-----------------------------------
+
+.. automodule:: mythril.laser.smt.expression
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.laser.smt.function module
+---------------------------------
+
+.. automodule:: mythril.laser.smt.function
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.laser.smt.model module
+------------------------------
+
+.. automodule:: mythril.laser.smt.model
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+Module contents
+---------------
+
+.. automodule:: mythril.laser.smt
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/source/mythril.laser.smt.solver.rst b/docs/source/mythril.laser.smt.solver.rst
new file mode 100644
index 0000000000000000000000000000000000000000..b328f4b39459c9b2cce03aabe4f34b8681bfd76f
--- /dev/null
+++ b/docs/source/mythril.laser.smt.solver.rst
@@ -0,0 +1,37 @@
+mythril.laser.smt.solver package
+================================
+
+Submodules
+----------
+
+mythril.laser.smt.solver.independence\_solver module
+----------------------------------------------------
+
+.. automodule:: mythril.laser.smt.solver.independence_solver
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.laser.smt.solver.solver module
+--------------------------------------
+
+.. automodule:: mythril.laser.smt.solver.solver
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.laser.smt.solver.solver\_statistics module
+--------------------------------------------------
+
+.. automodule:: mythril.laser.smt.solver.solver_statistics
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+Module contents
+---------------
+
+.. automodule:: mythril.laser.smt.solver
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/source/mythril.mythril.rst b/docs/source/mythril.mythril.rst
new file mode 100644
index 0000000000000000000000000000000000000000..abcbf0a93423a6dd21172ffda4d13522e9e30361
--- /dev/null
+++ b/docs/source/mythril.mythril.rst
@@ -0,0 +1,37 @@
+mythril.mythril package
+=======================
+
+Submodules
+----------
+
+mythril.mythril.mythril\_analyzer module
+----------------------------------------
+
+.. automodule:: mythril.mythril.mythril_analyzer
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.mythril.mythril\_config module
+--------------------------------------
+
+.. automodule:: mythril.mythril.mythril_config
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.mythril.mythril\_disassembler module
+--------------------------------------------
+
+.. automodule:: mythril.mythril.mythril_disassembler
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+Module contents
+---------------
+
+.. automodule:: mythril.mythril
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/source/mythril.plugin.rst b/docs/source/mythril.plugin.rst
new file mode 100644
index 0000000000000000000000000000000000000000..323f1ccb6320346a3e1d81f217017d5cf838bd42
--- /dev/null
+++ b/docs/source/mythril.plugin.rst
@@ -0,0 +1,37 @@
+mythril.plugin package
+======================
+
+Submodules
+----------
+
+mythril.plugin.discovery module
+-------------------------------
+
+.. automodule:: mythril.plugin.discovery
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.plugin.interface module
+-------------------------------
+
+.. automodule:: mythril.plugin.interface
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.plugin.loader module
+----------------------------
+
+.. automodule:: mythril.plugin.loader
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+Module contents
+---------------
+
+.. automodule:: mythril.plugin
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/source/mythril.rst b/docs/source/mythril.rst
new file mode 100644
index 0000000000000000000000000000000000000000..e30a3779d735272cccf6857bf488a657498f9199
--- /dev/null
+++ b/docs/source/mythril.rst
@@ -0,0 +1,38 @@
+mythril package
+===============
+
+Subpackages
+-----------
+
+.. toctree::
+   :maxdepth: 4
+
+   mythril.analysis
+   mythril.concolic
+   mythril.disassembler
+   mythril.ethereum
+   mythril.interfaces
+   mythril.laser
+   mythril.mythril
+   mythril.plugin
+   mythril.solidity
+   mythril.support
+
+Submodules
+----------
+
+mythril.exceptions module
+-------------------------
+
+.. automodule:: mythril.exceptions
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+Module contents
+---------------
+
+.. automodule:: mythril
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/source/mythril.solidity.rst b/docs/source/mythril.solidity.rst
new file mode 100644
index 0000000000000000000000000000000000000000..d13d33da4b812cbd6a1d4c4aa663ee41e5338a09
--- /dev/null
+++ b/docs/source/mythril.solidity.rst
@@ -0,0 +1,21 @@
+mythril.solidity package
+========================
+
+Submodules
+----------
+
+mythril.solidity.soliditycontract module
+----------------------------------------
+
+.. automodule:: mythril.solidity.soliditycontract
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+Module contents
+---------------
+
+.. automodule:: mythril.solidity
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/source/mythril.support.rst b/docs/source/mythril.support.rst
new file mode 100644
index 0000000000000000000000000000000000000000..ed23b9506949bae078b301b64ec6a6d60b9350ba
--- /dev/null
+++ b/docs/source/mythril.support.rst
@@ -0,0 +1,85 @@
+mythril.support package
+=======================
+
+Submodules
+----------
+
+mythril.support.loader module
+-----------------------------
+
+.. automodule:: mythril.support.loader
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.support.lock module
+---------------------------
+
+.. automodule:: mythril.support.lock
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.support.model module
+----------------------------
+
+.. automodule:: mythril.support.model
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.support.opcodes module
+------------------------------
+
+.. automodule:: mythril.support.opcodes
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.support.signatures module
+---------------------------------
+
+.. automodule:: mythril.support.signatures
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.support.source\_support module
+--------------------------------------
+
+.. automodule:: mythril.support.source_support
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.support.start\_time module
+----------------------------------
+
+.. automodule:: mythril.support.start_time
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.support.support\_args module
+------------------------------------
+
+.. automodule:: mythril.support.support_args
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+mythril.support.support\_utils module
+-------------------------------------
+
+.. automodule:: mythril.support.support_utils
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+Module contents
+---------------
+
+.. automodule:: mythril.support
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/source/security-analysis.rst b/docs/source/security-analysis.rst
new file mode 100644
index 0000000000000000000000000000000000000000..aa84da6ec64279642ab3c449cfdac2ebdde86f90
--- /dev/null
+++ b/docs/source/security-analysis.rst
@@ -0,0 +1,91 @@
+Security Analysis
+=================
+
+Run :code:`myth analyze` with one of the input options described below will run the analysis modules in the `/analysis/modules <https://github.com/ConsenSys/mythril/tree/master/mythril/analysis/modules>`_ directory.
+
+***********************
+Analyzing Solidity Code
+***********************
+
+In order to work with Solidity source code files, the `solc command line compiler <https://solidity.readthedocs.io/en/develop/using-the-compiler.html>`_ needs to be installed and in PATH. You can then provide the source file(s) as positional arguments.
+
+.. code-block:: bash
+
+   $ myth analyze ether_send.sol
+   ==== Unprotected Ether Withdrawal ====
+   SWC ID: 105
+   Severity: High
+   Contract: Crowdfunding
+   Function name: withdrawfunds()
+   PC address: 730
+   Estimated Gas Usage: 1132 - 1743
+   Anyone can withdraw ETH from the contract account.
+   Arbitrary senders other than the contract creator can withdraw ETH from the contract account without previously having sent an equivalent amount of ETH to it. This is likely to be a vulnerability.
+   --------------------
+   In file: tests/testdata/input_contracts/ether_send.sol:21
+
+   msg.sender.transfer(address(this).balance)
+
+   --------------------
+
+If an input file contains multiple contract definitions, Mythril analyzes the *last* bytecode output produced by solc. You can override this by specifying the contract name explicitly:
+
+.. code-block:: bash
+
+   myth analyze OmiseGo.sol:OMGToken
+
+Specifying Solc Versions
+########################
+
+You can specify a version of the solidity compiler to be used with :code:`--solv <version number>`. Please be aware that this uses `py-solc <https://github.com/ethereum/py-solc>`_ and will only work on Linux and macOS. It will check the version of solc in your path, and if this is not what is specified, it will download binaries on Linux or try to compile from source on macOS.
+
+
+Output Formats
+##############
+
+By default, analysis results are printed to the terminal in text format. You can change the output format with the :code:`-o` argument:
+
+.. code-block:: bash
+
+   myth analyze underflow.sol -o jsonv2
+
+Available formats are :code:`text`, :code:`markdown`, :code:`json`, and :code:`jsonv2`. For integration with other tools, :code:`jsonv2` is generally preferred over :code:`json` because it is consistent with other `MythX <https://mythx.io>`_ tools.
+
+****************************
+Analyzing On-Chain Contracts
+****************************
+
+When analyzing contracts on the blockchain, Mythril will by default attempt to query INFURA. You can use the built-in INFURA support or manually configure the RPC settings with the :code:`--rpc` argument.
+
++-------------------------------------------------+-------------------------------------------------+
+| :code:`--rpc ganache`                           | Connect to local Ganache                        |
++-------------------------------------------------+-------------------------------------------------+
+| :code:`--rpc infura-[netname] --infura-id <ID>` | Connect to mainnet, rinkeby, kovan, or ropsten. |
++-------------------------------------------------+-------------------------------------------------+
+| :code:`--rpc host:port`                         | Connect to custom rpc                           |
++-------------------------------------------------+-------------------------------------------------+
+| :code:`--rpctls <True/False>`                   | RPC connection over TLS (default: False)        |
++-------------------------------------------------+-------------------------------------------------+
+
+To specify a contract address, use :code:`-a <address>`
+
+Analyze mainnet contract via INFURA:
+
+.. code-block:: bash
+
+   myth analyze -a 0x5c436ff914c458983414019195e0f4ecbef9e6dd --infura-id <ID>
+
+You can also use the environment variable `INFURA_ID` instead of the cmd line argument or set it in ~/.mythril/config.ini.
+
+.. code-block:: bash
+
+   myth -v4 analyze -a 0xEbFD99838cb0c132016B9E117563CB41f2B02264 --infura-id <ID>
+
+******************
+Speed vs. Coverage
+******************
+
+The execution timeout can be specified with the :code:`--execution-timeout <seconds>` argument. When the timeout is reached, mythril will stop analysis and print out all currently found issues.
+
+The maximum recursion depth for the symbolic execution engine can be controlled with the :code:`--max-depth` argument. The default value is 22. Lowering this value will decrease the number of explored states and analysis time, while increasing this number will increase the number of explored states and increase analysis time. For some contracts, it helps to fine tune this number to get the best analysis results.
+-
diff --git a/docs/source/tutorial.rst b/docs/source/tutorial.rst
new file mode 100644
index 0000000000000000000000000000000000000000..ca7653ad64e79dc9d703203a6f1e5a5b48e00460
--- /dev/null
+++ b/docs/source/tutorial.rst
@@ -0,0 +1,709 @@
+Tutorial
+======================
+
+******************************************
+Introduction
+******************************************
+Mythril is a popular security analysis tool for smart contracts. It is an open-source tool that can analyze Ethereum smart contracts and report potential security vulnerabilities in them. By analyzing the bytecode of a smart contract, Mythril can identify and report on possible security vulnerabilities, such as reentrancy attacks, integer overflows, and other common smart contract vulnerabilities.
+This tutorial explains how to use Mythril to analyze simple Solidity contracts for security vulnerabilities. A simple contract is one that does not have any imports. 
+
+
+******************************************
+Executing Mythril on Simple Contracts
+******************************************
+
+To start, we consider this simple contract, ``Exceptions``, which has a number of functions, including ``assert1()``, ``assert2()``, and ``assert3()``, that contain Solidity ``assert()`` statements. We will use Mythril to analyze this contract and report any potential vulnerabilities.
+
+
+
+
+   .. code-block:: solidity
+
+        contract Exceptions {
+
+            uint256[8] myarray;
+            uint counter = 0;
+            function assert1() public pure {
+                uint256 i = 1;
+                assert(i == 0);
+            }
+            function counter_increase() public {
+                counter+=1;
+            }
+            function assert5(uint input_x) public view{
+                require(counter>2);
+                assert(input_x > 10);
+            }
+            function assert2() public pure {
+                uint256 i = 1;
+                assert(i > 0);
+            }
+
+            function assert3(uint256 input) public pure {
+                assert(input != 23);
+            }
+
+            function require_is_fine(uint256 input) public pure {
+                require(input != 23);
+            }
+
+            function this_is_fine(uint256 input) public pure {
+                if (input > 0) {
+                    uint256 i = 1/input;
+                }
+            }
+
+            function this_is_find_2(uint256 index) public view {
+                if (index < 8) {
+                    uint256 i = myarray[index];
+                }
+            }
+
+        }
+
+The sample contract has several functions, some of which contain vulnerabilities. For instance, the ``assert1()`` function contains an assertion violation. To analyze the contract using Mythril, the following command can be used:
+
+    .. code-block:: bash
+
+        $ myth analyze <file_path>
+
+The output will show the vulnerabilities in the contract. In the case of the "Exceptions" contract, Mythril detected two instances of assertion violations.
+
+
+    .. code-block:: none
+
+        ==== Exception State ====
+        SWC ID: 110
+        Severity: Medium
+        Contract: Exceptions
+        Function name: assert1()
+        PC address: 708
+        Estimated Gas Usage: 207 - 492
+        An assertion violation was triggered.
+        It is possible to trigger an assertion violation. Note that Solidity assert() statements should only be used to check invariants. Review the transaction trace generated for this issue and either make sure your program logic is correct, or use require() instead of assert() if your goal is to constrain user inputs or enforce preconditions. Remember to validate inputs from both callers (for instance, via passed arguments) and callees (for instance, via return values).
+        --------------------
+        In file: solidity_examples/exceptions.sol:7
+
+        assert(i == 0)
+
+        --------------------
+        Initial State:
+
+        Account: [CREATOR], balance: 0x2, nonce:0, storage:{}
+        Account: [ATTACKER], balance: 0x0, nonce:0, storage:{}
+
+        Transaction Sequence:
+
+        Caller: [CREATOR], calldata: , value: 0x0
+        Caller: [ATTACKER], function: assert1(), txdata: 0xb34c3610, value: 0x0
+
+        ==== Exception State ====
+        SWC ID: 110
+        Severity: Medium
+        Contract: Exceptions
+        Function name: assert3(uint256)
+        PC address: 708
+        Estimated Gas Usage: 482 - 767
+        An assertion violation was triggered.
+        It is possible to trigger an assertion violation. Note that Solidity assert() statements should only be used to check invariants. Review the transaction trace generated for this issue and either make sure your program logic is correct, or use require() instead of assert() if your goal is to constrain user inputs or enforce preconditions. Remember to validate inputs from both callers (for instance, via passed arguments) and callees (for instance, via return values).
+        --------------------
+        In file: solidity_examples/exceptions.sol:20
+
+        assert(input != 23)
+
+        --------------------
+        Initial State:
+
+        Account: [CREATOR], balance: 0x40207f9b0, nonce:0, storage:{}
+        Account: [ATTACKER], balance: 0x0, nonce:0, storage:{}
+
+        Transaction Sequence:
+
+        Caller: [CREATOR], calldata: , value: 0x0
+        Caller: [SOMEGUY], function: assert3(uint256), txdata: 0x546455b50000000000000000000000000000000000000000000000000000000000000017, value: 0x0
+
+
+One of the functions, ``assert5(uint256)``, should also have an assertion failure, but it is not detected because Mythril's default configuration is to run three transactions. 
+To detect this vulnerability, the transaction count can be increased to four using the ``-t`` option, as shown below:
+
+.. code-block:: bash
+
+    $ myth analyze <file_path> -t 4
+
+This gives the following execution output:
+
+    .. code-block:: none
+
+        ==== Exception State ====
+        SWC ID: 110
+        Severity: Medium
+        Contract: Exceptions
+        Function name: assert1()
+        PC address: 731
+        Estimated Gas Usage: 207 - 492
+        An assertion violation was triggered.
+        It is possible to trigger an assertion violation. Note that Solidity assert() statements should only be used to check invariants. Review the transaction trace generated for this issue and either make sure your program logic is correct, or use require() instead of assert() if your goal is to constrain user inputs or enforce preconditions. Remember to validate inputs from both callers (for instance, via passed arguments) and callees (for instance, via return values).
+        --------------------
+        In file: solidity_examples/exceptions.sol:7
+
+        assert(i == 0)
+
+        --------------------
+        Initial State:
+
+        Account: [CREATOR], balance: 0x2, nonce:0, storage:{}
+        Account: [ATTACKER], balance: 0x0, nonce:0, storage:{}
+
+        Transaction Sequence:
+
+        Caller: [CREATOR], calldata: , value: 0x0
+        Caller: [ATTACKER], function: assert1(), txdata: 0xb34c3610, value: 0x0
+
+        ==== Exception State ====
+        SWC ID: 110
+        Severity: Medium
+        Contract: Exceptions
+        Function name: assert3(uint256)
+        PC address: 731
+        Estimated Gas Usage: 504 - 789
+        An assertion violation was triggered.
+        It is possible to trigger an assertion violation. Note that Solidity assert() statements should only be used to check invariants. Review the transaction trace generated for this issue and either make sure your program logic is correct, or use require() instead of assert() if your goal is to constrain user inputs or enforce preconditions. Remember to validate inputs from both callers (for instance, via passed arguments) and callees (for instance, via return values).
+        --------------------
+        In file: solidity_examples/exceptions.sol:22
+
+        assert(input != 23)
+
+        --------------------
+        Initial State:
+
+        Account: [CREATOR], balance: 0x3, nonce:0, storage:{}
+        Account: [ATTACKER], balance: 0x0, nonce:0, storage:{}
+
+        Transaction Sequence:
+
+        Caller: [CREATOR], calldata: , value: 0x0
+        Caller: [ATTACKER], function: assert3(uint256), txdata: 0x546455b50000000000000000000000000000000000000000000000000000000000000017, value: 0x0
+
+        ==== Exception State ====
+        SWC ID: 110
+        Severity: Medium
+        Contract: Exceptions
+        Function name: assert5(uint256)
+        PC address: 731
+        Estimated Gas Usage: 1302 - 1587
+        An assertion violation was triggered.
+        It is possible to trigger an assertion violation. Note that Solidity assert() statements should only be used to check invariants. Review the transaction trace generated for this issue and either make sure your program logic is correct, or use require() instead of assert() if your goal is to constrain user inputs or enforce preconditions. Remember to validate inputs from both callers (for instance, via passed arguments) and callees (for instance, via return values).
+        --------------------
+        In file: solidity_examples/exceptions.sol:14
+
+        assert(input_x > 10)
+
+        --------------------
+        Initial State:
+
+        Account: [CREATOR], balance: 0x20000000, nonce:0, storage:{}
+        Account: [ATTACKER], balance: 0x1000000, nonce:0, storage:{}
+
+        Transaction Sequence:
+
+        Caller: [CREATOR], calldata: , value: 0x0
+        Caller: [ATTACKER], function: counter_increase(), txdata: 0xe47b0253, value: 0x0
+        Caller: [CREATOR], function: counter_increase(), txdata: 0xe47b0253, value: 0x0
+        Caller: [CREATOR], function: counter_increase(), txdata: 0xe47b0253, value: 0x0
+        Caller: [ATTACKER], function: assert5(uint256), txdata: 0x1d5d53dd0000000000000000000000000000000000000000000000000000000000000003, value: 0x0
+
+
+
+
+For the violation in the 4th transaction, the input value should be less than 10. The transaction data generated by Mythril for the
+4th transaction is ``0x1d5d53dd0000000000000000000000000000000000000000000000000000000000000003``, the first 4 bytes ``1d5d53dd``
+correspond to the function signature hence the input generated by Mythril is ``0000000000000000000000000000000000000000000000000000000000000003``
+in hex, which is 3. For automated resolution of the input try using a different output format such as JSON.
+
+    .. code-block:: bash
+
+        $ myth analyze <file_path> -o json
+
+This leads to the following output:
+
+    .. code-block:: json
+
+        {
+            "error": null,
+            "issues": [{
+                "address": 731,
+                "code": "assert(i == 0)",
+                "contract": "Exceptions",
+                "description": "An assertion violation was triggered.\nIt is possible to trigger an assertion violation. Note that Solidity assert() statements should only be used to check invariants. Review the transaction trace generated for this issue and either make sure your program logic is correct, or use require() instead of assert() if your goal is to constrain user inputs or enforce preconditions. Remember to validate inputs from both callers (for instance, via passed arguments) and callees (for instance, via return values).",
+                "filename": "solidity_examples/exceptions.sol",
+                "function": "assert1()",
+                "lineno": 7,
+                "max_gas_used": 492,
+                "min_gas_used": 207,
+                "severity": "Medium",
+                "sourceMap": ":::i",
+                "swc-id": "110",
+                "title": "Exception State",
+                "tx_sequence": {
+                    "initialState": {
+                        "accounts": {
+                            "0xaffeaffeaffeaffeaffeaffeaffeaffeaffeaffe": {
+                                "balance": "0x2",
+                                "code": "",
+                                "nonce": 0,
+                                "storage": "{}"
+                            },
+                            "0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef": {
+                                "balance": "0x0",
+                                "code": "",
+                                "nonce": 0,
+                                "storage": "{}"
+                            }
+                        }
+                    },
+                    "steps": [{
+                        "address": "",
+                        "calldata": "",
+                        "input": "0x6080604052600060085534801561001557600080fd5b506103f7806100256000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063b34c36101161005b578063b34c3610146100fd578063b630d70614610107578063e47b025314610123578063f44f13d81461012d57610088565b806301d4277c1461008d5780631d5d53dd146100a9578063546455b5146100c557806378375f14146100e1575b600080fd5b6100a760048036038101906100a29190610251565b610137565b005b6100c360048036038101906100be9190610251565b61015e565b005b6100df60048036038101906100da9190610251565b610181565b005b6100fb60048036038101906100f69190610251565b610196565b005b6101056101a7565b005b610121600480360381019061011c9190610251565b6101c1565b005b61012b6101e0565b005b6101356101fc565b005b600881101561015b5760008082600881106101555761015461027e565b5b01549050505b50565b60026008541161016d57600080fd5b600a811161017e5761017d6102ad565b5b50565b6017811415610193576101926102ad565b5b50565b60178114156101a457600080fd5b50565b600060019050600081146101be576101bd6102ad565b5b50565b60008111156101dd5760008160016101d9919061033a565b9050505b50565b6001600860008282546101f3919061036b565b92505081905550565b60006001905060008111610213576102126102ad565b5b50565b600080fd5b6000819050919050565b61022e8161021b565b811461023957600080fd5b50565b60008135905061024b81610225565b92915050565b60006020828403121561026757610266610216565b5b60006102758482850161023c565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006103458261021b565b91506103508361021b565b9250826103605761035f6102dc565b5b828204905092915050565b60006103768261021b565b91506103818361021b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156103b6576103b561030b565b5b82820190509291505056fea2646970667358221220b474c01fa60d997027e1ceb779bcb2b34b6752282e0ea3a038a08b889fe0163f64736f6c634300080c0033",
+                        "name": "unknown",
+                        "origin": "0xaffeaffeaffeaffeaffeaffeaffeaffeaffeaffe",
+                        "value": "0x0"
+                    }, {
+                        "address": "0x901d12ebe1b195e5aa8748e62bd7734ae19b51f",
+                        "calldata": "0xb34c3610",
+                        "input": "0xb34c3610",
+                        "name": "assert1()",
+                        "origin": "0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
+                        "resolved_input": null,
+                        "value": "0x0"
+                    }]
+                }
+            }, {
+                "address": 731,
+                "code": "assert(input != 23)",
+                "contract": "Exceptions",
+                "description": "An assertion violation was triggered.\nIt is possible to trigger an assertion violation. Note that Solidity assert() statements should only be used to check invariants. Review the transaction trace generated for this issue and either make sure your program logic is correct, or use require() instead of assert() if your goal is to constrain user inputs or enforce preconditions. Remember to validate inputs from both callers (for instance, via passed arguments) and callees (for instance, via return values).",
+                "filename": "solidity_examples/exceptions.sol",
+                "function": "assert3(uint256)",
+                "lineno": 22,
+                "max_gas_used": 789,
+                "min_gas_used": 504,
+                "severity": "Medium",
+                "sourceMap": ":::i",
+                "swc-id": "110",
+                "title": "Exception State",
+                "tx_sequence": {
+                    "initialState": {
+                        "accounts": {
+                            "0xaffeaffeaffeaffeaffeaffeaffeaffeaffeaffe": {
+                                "balance": "0x3",
+                                "code": "",
+                                "nonce": 0,
+                                "storage": "{}"
+                            },
+                            "0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef": {
+                                "balance": "0x0",
+                                "code": "",
+                                "nonce": 0,
+                                "storage": "{}"
+                            }
+                        }
+                    },
+                    "steps": [{
+                        "address": "",
+                        "calldata": "",
+                        "input": "0x6080604052600060085534801561001557600080fd5b506103f7806100256000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063b34c36101161005b578063b34c3610146100fd578063b630d70614610107578063e47b025314610123578063f44f13d81461012d57610088565b806301d4277c1461008d5780631d5d53dd146100a9578063546455b5146100c557806378375f14146100e1575b600080fd5b6100a760048036038101906100a29190610251565b610137565b005b6100c360048036038101906100be9190610251565b61015e565b005b6100df60048036038101906100da9190610251565b610181565b005b6100fb60048036038101906100f69190610251565b610196565b005b6101056101a7565b005b610121600480360381019061011c9190610251565b6101c1565b005b61012b6101e0565b005b6101356101fc565b005b600881101561015b5760008082600881106101555761015461027e565b5b01549050505b50565b60026008541161016d57600080fd5b600a811161017e5761017d6102ad565b5b50565b6017811415610193576101926102ad565b5b50565b60178114156101a457600080fd5b50565b600060019050600081146101be576101bd6102ad565b5b50565b60008111156101dd5760008160016101d9919061033a565b9050505b50565b6001600860008282546101f3919061036b565b92505081905550565b60006001905060008111610213576102126102ad565b5b50565b600080fd5b6000819050919050565b61022e8161021b565b811461023957600080fd5b50565b60008135905061024b81610225565b92915050565b60006020828403121561026757610266610216565b5b60006102758482850161023c565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006103458261021b565b91506103508361021b565b9250826103605761035f6102dc565b5b828204905092915050565b60006103768261021b565b91506103818361021b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156103b6576103b561030b565b5b82820190509291505056fea2646970667358221220b474c01fa60d997027e1ceb779bcb2b34b6752282e0ea3a038a08b889fe0163f64736f6c634300080c0033",
+                        "name": "unknown",
+                        "origin": "0xaffeaffeaffeaffeaffeaffeaffeaffeaffeaffe",
+                        "value": "0x0"
+                    }, {
+                        "address": "0x901d12ebe1b195e5aa8748e62bd7734ae19b51f",
+                        "calldata": "0x546455b50000000000000000000000000000000000000000000000000000000000000017",
+                        "input": "0x546455b50000000000000000000000000000000000000000000000000000000000000017",
+                        "name": "assert3(uint256)",
+                        "origin": "0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
+                        "resolved_input": [23],
+                        "value": "0x0"
+                    }]
+                }
+            }, {
+                "address": 731,
+                "code": "assert(input_x > 10)",
+                "contract": "Exceptions",
+                "description": "An assertion violation was triggered.\nIt is possible to trigger an assertion violation. Note that Solidity assert() statements should only be used to check invariants. Review the transaction trace generated for this issue and either make sure your program logic is correct, or use require() instead of assert() if your goal is to constrain user inputs or enforce preconditions. Remember to validate inputs from both callers (for instance, via passed arguments) and callees (for instance, via return values).",
+                "filename": "solidity_examples/exceptions.sol",
+                "function": "assert5(uint256)",
+                "lineno": 14,
+                "max_gas_used": 1587,
+                "min_gas_used": 1302,
+                "severity": "Medium",
+                "sourceMap": ":::i",
+                "swc-id": "110",
+                "title": "Exception State",
+                "tx_sequence": {
+                    "initialState": {
+                        "accounts": {
+                            "0xaffeaffeaffeaffeaffeaffeaffeaffeaffeaffe": {
+                                "balance": "0x0",
+                                "code": "",
+                                "nonce": 0,
+                                "storage": "{}"
+                            },
+                            "0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef": {
+                                "balance": "0x0",
+                                "code": "",
+                                "nonce": 0,
+                                "storage": "{}"
+                            }
+                        }
+                    },
+                    "steps": [{
+                        "address": "",
+                        "calldata": "",
+                        "input": "0x6080604052600060085534801561001557600080fd5b506103f7806100256000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063b34c36101161005b578063b34c3610146100fd578063b630d70614610107578063e47b025314610123578063f44f13d81461012d57610088565b806301d4277c1461008d5780631d5d53dd146100a9578063546455b5146100c557806378375f14146100e1575b600080fd5b6100a760048036038101906100a29190610251565b610137565b005b6100c360048036038101906100be9190610251565b61015e565b005b6100df60048036038101906100da9190610251565b610181565b005b6100fb60048036038101906100f69190610251565b610196565b005b6101056101a7565b005b610121600480360381019061011c9190610251565b6101c1565b005b61012b6101e0565b005b6101356101fc565b005b600881101561015b5760008082600881106101555761015461027e565b5b01549050505b50565b60026008541161016d57600080fd5b600a811161017e5761017d6102ad565b5b50565b6017811415610193576101926102ad565b5b50565b60178114156101a457600080fd5b50565b600060019050600081146101be576101bd6102ad565b5b50565b60008111156101dd5760008160016101d9919061033a565b9050505b50565b6001600860008282546101f3919061036b565b92505081905550565b60006001905060008111610213576102126102ad565b5b50565b600080fd5b6000819050919050565b61022e8161021b565b811461023957600080fd5b50565b60008135905061024b81610225565b92915050565b60006020828403121561026757610266610216565b5b60006102758482850161023c565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006103458261021b565b91506103508361021b565b9250826103605761035f6102dc565b5b828204905092915050565b60006103768261021b565b91506103818361021b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156103b6576103b561030b565b5b82820190509291505056fea2646970667358221220b474c01fa60d997027e1ceb779bcb2b34b6752282e0ea3a038a08b889fe0163f64736f6c634300080c0033",
+                        "name": "unknown",
+                        "origin": "0xaffeaffeaffeaffeaffeaffeaffeaffeaffeaffe",
+                        "value": "0x0"
+                    }, {
+                        "address": "0x901d12ebe1b195e5aa8748e62bd7734ae19b51f",
+                        "calldata": "0xe47b0253",
+                        "input": "0xe47b0253",
+                        "name": "counter_increase()",
+                        "origin": "0xaffeaffeaffeaffeaffeaffeaffeaffeaffeaffe",
+                        "resolved_input": null,
+                        "value": "0x0"
+                    }, {
+                        "address": "0x901d12ebe1b195e5aa8748e62bd7734ae19b51f",
+                        "calldata": "0xe47b0253",
+                        "input": "0xe47b0253",
+                        "name": "counter_increase()",
+                        "origin": "0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
+                        "resolved_input": null,
+                        "value": "0x0"
+                    }, {
+                        "address": "0x901d12ebe1b195e5aa8748e62bd7734ae19b51f",
+                        "calldata": "0xe47b0253",
+                        "input": "0xe47b0253",
+                        "name": "counter_increase()",
+                        "origin": "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
+                        "resolved_input": null,
+                        "value": "0x0"
+                    }, {
+                        "address": "0x901d12ebe1b195e5aa8748e62bd7734ae19b51f",
+                        "calldata": "0x1d5d53dd0000000000000000000000000000000000000000000000000000000000000003",
+                        "input": "0x1d5d53dd0000000000000000000000000000000000000000000000000000000000000003",
+                        "name": "assert5(uint256)",
+                        "origin": "0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
+                        "resolved_input": [3],
+                        "value": "0x0"
+                    }]
+                }
+            }],
+            "success": true
+        }
+
+We can observe that the "resolved_input" field for the final transaction resolves to ``[3]``. Although this resolution
+fails in some circumstances where output generated by Mythril is although executable on the bytecode, it cannot be decoded due 
+to not being a valid ABI.
+
+There are interesting options such as ``--execution-timeout <seconds>`` and ``--solver-timeout <milliseconds>`` 
+which can be increased for better results. The default execution-timeout and solver-timeout are 86400 seconds and
+25000 milliseconds respectively.
+
+
+
+
+
+********************************************************
+Executing Mythril on Contracts with Imports
+********************************************************
+
+When using Mythril to analyze a Solidity contract, you may encounter issues related to import statements. Solidity does not have access to the import locations, which can result in errors when compiling the program. In order to provide import information to Solidity, you can use the remappings option in Mythril.
+
+Consider the following Solidity contract, which imports the PRC20 contract from the ``@openzeppelin/contracts/token/PRC20/PRC20.sol`` file:
+
+
+    .. code-block:: solidity
+
+        import "@openzeppelin/contracts/token/PRC20/PRC20.sol";
+
+        contract Nothing is PRC20{
+            string x_0 = "";
+
+            bytes3 x_1 = "A";
+
+            bytes5 x_2 = "E";
+
+            bytes5 x_3 = "";
+
+            bytes3 x_4 = "I";
+
+            bytes3 x_5 = "U";
+
+            bytes3 x_6 = "O";
+
+            bytes3 x_7 = "0";
+
+            bytes3 x_8 = "U";
+
+            bytes3 x_9 = "U";
+            function stringCompare(string memory a, string memory b) internal pure returns (bool) {
+                if(bytes(a).length != bytes(b).length) {
+                    return false;
+                } else {
+                    return keccak256(bytes(a)) == keccak256(bytes(b));
+                }
+            }
+
+            function nothing(string memory g_0, bytes3 g_5, bytes3 g_6, bytes3 g_7, bytes3 g_8, bytes3 g_9, bytes3 g_10, bytes3 g_11) public view returns (bool){
+                if (!stringCompare(g_0, x_0)) return false;
+                        
+                        
+                if (g_5 != x_5) return false;
+                        
+                if (g_6 != x_6) return false;
+                        
+                if (g_7 != x_7) return false;
+                        
+                if (g_8 != x_8) return false;
+                        
+                if (g_9 != x_9) return false;
+                
+                if (g_10 != x_9) return false;
+
+                if (g_11 != x_9) return false;
+
+                return true;
+
+            }
+        }
+
+
+When this contract is directly executed by using the following command:
+
+    .. code-block:: bash
+
+        $ myth analyze <file_path>
+
+We encounter the following error:
+
+    .. code-block:: none
+
+        mythril.interfaces.cli [ERROR]: Solc experienced a fatal error.
+
+        ParserError: Source "@openzeppelin/contracts/token/PRC20/PRC20.sol" not found: File not found. Searched the following locations: "".
+        --> <file_path>:1:1:
+        |
+        1 | import "@openzeppelin/contracts/token/PRC20/PRC20.sol";
+        | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+This error occurs because Solidity cannot locate the ``PRC20.sol`` file. 
+To solve this issue, you need to provide remapping information to Mythril, which will relay it to the Solidity compiler. 
+Remapping involves mapping an import statement to the path that contains the corresponding file.
+
+In this example, we can map the import statement ``@openzeppelin/contracts/token/PRC20/`` to the path that contains ``PRC20.sol``. Let's assume that the file is located at ``node_modules/PRC20/PRC20.sol``. We can provide the remapping information to Mythril in a JSON file like this:
+
+
+    .. code-block:: json
+
+        {
+        "remappings": [ "@openzeppelin/contracts/token/PRC20/=node_modules/PRC20/"]
+        }
+
+This JSON file maps the prefix ``@openzeppelin/contracts/token/PRC20/`` to the path ``node_modules/PRC20/`` in the file system. 
+When you run Mythril, you can use the ``--solc-json`` option to provide the remapping file:
+
+
+    .. code-block:: bash
+
+        $ myth analyze {file_path} --solc-json {json_file_path}
+
+
+With this command, Mythril will be able to locate the ``PRC20.sol`` file, and the analysis should proceed without errors. 
+
+For more information on remappings, you can refer to the `Solidity documentation <https://docs.soliditylang.org/en/v0.8.14/using-the-compiler.html#base-path-and-import-remapping>`_.
+
+********************************************************
+Executing Mythril by Restricting Transaction Sequences
+********************************************************
+Mythril is a security analysis tool that can be used to search certain transaction sequences. 
+The `--transaction-sequences` argument can be used to direct the search. 
+You should provide a list of transactions that are sequenced in the same order that they will be executed in the contract.
+For example, suppose you want to find vulnerabilities in a contract that executes three transactions, where the first transaction is constrained with ``func_hash1`` and ``func_hash2``, 
+the second transaction is constrained with ``func_hash2`` and ``func_hash3``, and the final transaction is unconstrained on any function. You would provide ``--transaction-sequences [[func_hash1,func_hash2], [func_hash2,func_hash3],[]]`` as an argument to Mythril.
+
+You can use ``-1`` as a proxy for the hash of the `fallback()` function and ``-2`` as a proxy for the hash of the ``receive()`` function.
+
+Here is an example contract that demonstrates how to use Mythril with ``--transaction-sequences``.
+
+Consider the following contract:
+
+
+
+
+    .. code-block:: solidity
+
+        pragma solidity ^0.5.0;
+
+
+        contract Rubixi {
+            //Declare variables for storage critical to contract
+            uint private balance = 0;
+            uint private collectedFees = 0;
+            uint private feePercent = 10;
+            uint private pyramidMultiplier = 300;
+            uint private payoutOrder = 0;
+
+            address payable private creator;
+
+            modifier onlyowner {
+                if (msg.sender == creator) _;
+            }
+
+            struct Participant {
+                address payable etherAddress;
+                uint payout;
+            }
+
+            //Fallback function
+            function() external payable {
+                init();
+            }
+
+            //Sets creator
+            function dynamicPyramid() public {
+                creator = msg.sender;
+            }
+
+            Participant[] private participants;
+
+            //Fee functions for creator
+            function collectAllFees() public onlyowner {
+                require(collectedFees > 0);
+                creator.transfer(collectedFees);
+                collectedFees = 0;
+            }
+
+            function collectFeesInEther(uint _amt) public onlyowner {
+                _amt *= 1 ether;
+                if (_amt > collectedFees) collectAllFees();
+
+                require(collectedFees > 0);
+
+                creator.transfer(_amt);
+                collectedFees -= _amt;
+            }
+
+            function collectPercentOfFees(uint _pcent) public onlyowner {
+                require(collectedFees > 0 && _pcent <= 100);
+
+                uint feesToCollect = collectedFees / 100 * _pcent;
+                creator.transfer(feesToCollect);
+                collectedFees -= feesToCollect;
+            }
+
+            //Functions for changing variables related to the contract
+            function changeOwner(address payable _owner) public onlyowner {
+                creator = _owner;
+            }
+
+            function changeMultiplier(uint _mult) public onlyowner {
+                require(_mult <= 300 &&  _mult >= 120);
+                pyramidMultiplier = _mult;
+            }
+
+            function changeFeePercentage(uint _fee) public onlyowner {
+                require(_fee <= 10);
+                feePercent = _fee;
+            }
+
+            //Functions to provide information to end-user using JSON interface or other interfaces
+            function currentMultiplier() public view returns (uint multiplier, string memory info) {
+                multiplier = pyramidMultiplier;
+                info = "This multiplier applies to you as soon as transaction is received, may be lowered to hasten payouts or increased if payouts are fast enough. Due to no float or decimals, multiplier is x100 for a fractional multiplier e.g. 250 is actually a 2.5x multiplier. Capped at 3x max and 1.2x min.";
+            }
+
+            function currentFeePercentage() public view returns (uint fee, string memory info) {
+                fee = feePercent;
+                info = "Shown in % form. Fee is halved(50%) for amounts equal or greater than 50 ethers. (Fee may change, but is capped to a maximum of 10%)";
+            }
+
+            function currentPyramidBalanceApproximately() public view returns (uint pyramidBalance, string memory info) {
+                pyramidBalance = balance / 1 ether;
+                info = "All balance values are measured in Ethers, note that due to no decimal placing, these values show up as integers only, within the contract itself you will get the exact decimal value you are supposed to";
+            }
+
+            function nextPayoutWhenPyramidBalanceTotalsApproximately() public view returns (uint balancePayout) {
+                balancePayout = participants[payoutOrder].payout / 1 ether;
+            }
+
+            function feesSeperateFromBalanceApproximately() public view returns (uint fees) {
+                fees = collectedFees / 1 ether;
+            }
+
+            function totalParticipants() public view returns (uint count) {
+                count = participants.length;
+            }
+
+            function numberOfParticipantsWaitingForPayout() public view returns (uint count) {
+                count = participants.length - payoutOrder;
+            }
+
+            function participantDetails(uint orderInPyramid) public view returns (address addr, uint payout) {
+                if (orderInPyramid <= participants.length) {
+                    addr = participants[orderInPyramid].etherAddress;
+                    payout = participants[orderInPyramid].payout / 1 ether;
+                }
+            }
+
+            //init function run on fallback
+            function init() private {
+                //Ensures only tx with value of 1 ether or greater are processed and added to pyramid
+                if (msg.value < 1 ether) {
+                    collectedFees += msg.value;
+                    return;
+                }
+
+                uint _fee = feePercent;
+                // 50% fee rebate on any ether value of 50 or greater
+                if (msg.value >= 50 ether) _fee /= 2;
+
+                addPayout(_fee);
+            }
+
+            //Function called for valid tx to the contract
+            function addPayout(uint _fee) private {
+                //Adds new address to participant array
+                participants.push(Participant(msg.sender, (msg.value * pyramidMultiplier) / 100));
+
+                // These statements ensure a quicker payout system to
+                // later pyramid entrants, so the pyramid has a longer lifespan
+                if (participants.length == 10) pyramidMultiplier = 200;
+                else if (participants.length == 25) pyramidMultiplier = 150;
+
+                // collect fees and update contract balance
+                balance += (msg.value * (100 - _fee)) / 100;
+                collectedFees += (msg.value * _fee) / 100;
+
+                //Pays earlier participiants if balance sufficient
+                while (balance > participants[payoutOrder].payout) {
+                    uint payoutToSend = participants[payoutOrder].payout;
+                    participants[payoutOrder].etherAddress.transfer(payoutToSend);
+
+                    balance -= participants[payoutOrder].payout;
+                    payoutOrder += 1;
+                }
+            }
+        }
+
+
+Since this contract has ``16`` functions, it is infeasible to execute uninteresting functions such as ``feesSeperateFromBalanceApproximately()``.
+To successfully explore useful transaction sequences we can use Mythril's ``--transaction-sequences`` argument.
+
+.. code-block:: bash
+
+    $ myth analyze rubixi.sol -t 3 --transaction-sequences [["0x89b8ae9b"],[-1],["0x686f2c90","0xb4022950","0x4229616d"]]
+
+The first transaction is constrained to the function ``dynamicPyramid()``, the second one to the ``fallback()`` function, and finally, the third transaction is constrained to``collectAllFees()``, ``collectFeesInEther(uint256)`` and ``collectPercentOfFees(uint256)``.
+Make sure to use ``-t 3`` argument, since the length of the transaction sequence should match with the transaction count argument.
diff --git a/mypy-stubs/z3/__init__.pyi b/mypy-stubs/z3/__init__.pyi
new file mode 100644
index 0000000000000000000000000000000000000000..08e6456d75e633584b8a26aa766b98820b196971
--- /dev/null
+++ b/mypy-stubs/z3/__init__.pyi
@@ -0,0 +1,264 @@
+from typing import (
+    overload,
+    Tuple,
+    Any,
+    List,
+    Iterable,
+    Iterator,
+    Optional,
+    TypeVar,
+    Union,
+    Sequence,
+)
+from .z3types import Ast, ContextObj
+
+class Context: ...
+class Z3PPObject: ...
+
+class AstRef(Z3PPObject):
+    @overload
+    def __init__(self, ast: Ast, ctx: Context) -> None:
+        self.ast: Ast = ...
+        self.ctx: Context = ...
+    @overload
+    def __init__(self, ast: Ast) -> None:
+        self.ast: Ast = ...
+        self.ctx: Context = ...
+    def ctx_ref(self) -> ContextObj: ...
+    def as_ast(self) -> Ast: ...
+    def children(self) -> List[AstRef]: ...
+    def eq(self, other: AstRef) -> bool: ...
+    # TODO: Cannot add __eq__ currently: mypy complains conflict with
+    # object.__eq__ signature
+    # def __eq__(self, other: object) -> ArithRef:  ...
+
+class SortRef(AstRef): ...
+
+class FuncDeclRef(AstRef):
+    def arity(self) -> int: ...
+    def name(self) -> str: ...
+    def __call__(self, *args: ExprRef) -> ExprRef: ...
+
+class ExprRef(AstRef):
+    def sort(self) -> SortRef: ...
+    def decl(self) -> FuncDeclRef: ...
+
+class BoolSortRef(SortRef): ...
+class ArraySortRef(SortRef): ...
+class BoolRef(ExprRef): ...
+
+def is_true(a: BoolRef) -> bool: ...
+def is_false(a: BoolRef) -> bool: ...
+def is_int_value(a: AstRef) -> bool: ...
+def substitute(a: AstRef, *m: Tuple[AstRef, AstRef]) -> AstRef: ...
+def simplify(a: AstRef, *args: Any, **kwargs: Any) -> AstRef: ...
+
+class ArithSortRef(SortRef): ...
+
+class ArithRef(ExprRef):
+    def __neg__(self) -> ExprRef: ...
+    def __le__(self, other: ArithRef) -> BoolRef: ...
+    def __lt__(self, other: ArithRef) -> BoolRef: ...
+    def __ge__(self, other: ArithRef) -> BoolRef: ...
+    def __gt__(self, other: ArithRef) -> BoolRef: ...
+    def __add__(self, other: ArithRef) -> ArithRef: ...
+    def __sub__(self, other: ArithRef) -> ArithRef: ...
+    def __mul__(self, other: ArithRef) -> ArithRef: ...
+    def __div__(self, other: ArithRef) -> ArithRef: ...
+    def __truediv__(self, other: ArithRef) -> ArithRef: ...
+    def __mod__(self, other: ArithRef) -> ArithRef: ...
+
+class BitVecSortRef(SortRef): ...
+
+class BitVecRef(ExprRef):
+    def size(self) -> int: ...
+    def __add__(self, other: Union[BitVecRef, int]) -> BitVecRef: ...
+    def __radd__(self, other: Union[BitVecRef, int]) -> BitVecRef: ...
+    def __mul__(self, other: Union[BitVecRef, int]) -> BitVecRef: ...
+    def __rmul__(self, other: Union[BitVecRef, int]) -> BitVecRef: ...
+    def __sub__(self, other: Union[BitVecRef, int]) -> BitVecRef: ...
+    def __rsub__(self, other: Union[BitVecRef, int]) -> BitVecRef: ...
+    def __or__(self, other: Union[BitVecRef, int]) -> BitVecRef: ...
+    def __ror__(self, other: Union[BitVecRef, int]) -> BitVecRef: ...
+    def __and__(self, other: Union[BitVecRef, int]) -> BitVecRef: ...
+    def __rand__(self, other: Union[BitVecRef, int]) -> BitVecRef: ...
+    def __xor__(self, other: Union[BitVecRef, int]) -> BitVecRef: ...
+    def __rxor__(self, other: Union[BitVecRef, int]) -> BitVecRef: ...
+    def __pos__(self) -> BitVecRef: ...
+    def __neg__(self) -> BitVecRef: ...
+    def __invert__(self) -> BitVecRef: ...
+    def __div__(self, other: BitVecRef) -> BitVecRef: ...
+    def __rdiv__(self, other: BitVecRef) -> BitVecRef: ...
+    def __truediv__(self, other: BitVecRef) -> BitVecRef: ...
+    def __rtruediv__(self, other: BitVecRef) -> BitVecRef: ...
+    def __mod__(self, other: BitVecRef) -> BitVecRef: ...
+    def __rmod__(self, other: BitVecRef) -> BitVecRef: ...
+    def __le__(self, other: BitVecRef) -> BoolRef: ...
+    def __lt__(self, other: BitVecRef) -> BoolRef: ...
+    def __ge__(self, other: BitVecRef) -> BoolRef: ...
+    def __gt__(self, other: BitVecRef) -> BoolRef: ...
+    def __rshift__(self, other: BitVecRef) -> BitVecRef: ...
+    def __lshift__(self, other: BitVecRef) -> BitVecRef: ...
+    def __rrshift__(self, other: BitVecRef) -> BitVecRef: ...
+    def __rlshift__(self, other: BitVecRef) -> BitVecRef: ...
+
+class BitVecNumRef(BitVecRef):
+    def as_long(self) -> int: ...
+    def as_signed_long(self) -> int: ...
+    def as_string(self) -> str: ...
+
+class IntNumRef(ArithRef):
+    def as_long(self) -> int: ...
+    def as_string(self) -> str: ...
+
+class SeqSortRef(ExprRef): ...
+class SeqRef(ExprRef): ...
+class ReSortRef(ExprRef): ...
+class ReRef(ExprRef): ...
+class ArrayRef(ExprRef): ...
+class CheckSatResult: ...
+
+class ModelRef(Z3PPObject):
+    def __getitem__(self, k: FuncDeclRef) -> IntNumRef: ...
+    def decls(self) -> Iterable[FuncDeclRef]: ...
+    def __iter__(self) -> Iterator[FuncDeclRef]: ...
+
+class FuncEntry:
+    def num_args(self) -> int: ...
+    def arg_value(self, idx: int) -> ExprRef: ...
+    def value(self) -> ExprRef: ...
+
+class FuncInterp(Z3PPObject):
+    def else_value(self) -> ExprRef: ...
+    def num_entries(self) -> int: ...
+    def arity(self) -> int: ...
+    def entry(self, idx: int) -> FuncEntry: ...
+
+class Goal(Z3PPObject): ...
+
+class Solver(Z3PPObject):
+    ctx: Context
+    def __init__(self, ctx: Optional[Context] = None) -> None: ...
+    def to_smt2(self) -> str: ...
+    def check(self) -> CheckSatResult: ...
+    def push(self) -> None: ...
+    def pop(self, num: Optional[int] = 1) -> None: ...
+    def model(self) -> ModelRef: ...
+    def set(self, *args: Any, **kwargs: Any) -> None: ...
+    @overload
+    def add(self, *args: Union[BoolRef, Goal]) -> None: ...
+    @overload
+    def add(self, args: Sequence[Union[BoolRef, Goal]]) -> None: ...
+    def reset(self) -> None: ...
+
+class Optimize(Z3PPObject):
+    ctx: Context
+    def __init__(self, ctx: Optional[Context] = None) -> None: ...
+    def check(self) -> CheckSatResult: ...
+    def push(self) -> None: ...
+    def pop(self) -> None: ...
+    def model(self) -> ModelRef: ...
+    def set(self, *args: Any, **kwargs: Any) -> None: ...
+    @overload
+    def add(self, *args: Union[BoolRef, Goal]) -> None: ...
+    @overload
+    def add(self, args: Sequence[Union[BoolRef, Goal]]) -> None: ...
+    def minimize(self, element: ExprRef) -> None: ...
+    def maximize(self, element: ExprRef) -> None: ...
+
+sat: CheckSatResult = ...
+unsat: CheckSatResult = ...
+
+@overload
+def Int(name: str) -> ArithRef: ...
+@overload
+def Int(name: str, ctx: Context) -> ArithRef: ...
+@overload
+def Bool(name: str) -> BoolRef: ...
+@overload
+def Bool(name: str, ctx: Context) -> BoolRef: ...
+@overload
+def parse_smt2_string(s: str) -> ExprRef: ...
+@overload
+def parse_smt2_string(s: str, ctx: Context) -> ExprRef: ...
+def Array(name: str, domain: SortRef, range: SortRef) -> ArrayRef: ...
+def K(domain: SortRef, v: Union[ExprRef, int, bool, str]) -> ArrayRef: ...
+
+# Can't give more precise types here since func signature is
+# a vararg list of ExprRef optionally followed by a Context
+def Or(*args: Any) -> BoolRef: ...
+def And(*args: Any) -> BoolRef: ...
+def Not(p: BoolRef, ctx: Optional[Context] = None) -> BoolRef: ...
+def Implies(a: BoolRef, b: BoolRef, ctx: Context) -> BoolRef: ...
+
+T = TypeVar("T", bound=ExprRef)
+
+def If(a: BoolRef, b: T, c: T, ctx: Optional[Context] = None) -> T: ...
+def ULE(a: T, b: T) -> BoolRef: ...
+def ULT(a: T, b: T) -> BoolRef: ...
+def UGE(a: T, b: T) -> BoolRef: ...
+def UGT(a: T, b: T) -> BoolRef: ...
+def UDiv(a: T, b: T) -> T: ...
+def URem(a: T, b: T) -> T: ...
+def SRem(a: T, b: T) -> T: ...
+def LShR(a: T, b: T) -> T: ...
+def RotateLeft(a: T, b: T) -> T: ...
+def RotateRight(a: T, b: T) -> T: ...
+def SignExt(n: int, a: BitVecRef) -> BitVecRef: ...
+def ZeroExt(n: int, a: BitVecRef) -> BitVecRef: ...
+@overload
+def Concat(args: List[Union[SeqRef, str]]) -> SeqRef: ...
+@overload
+def Concat(*args: Union[SeqRef, str]) -> SeqRef: ...
+@overload
+def Concat(args: List[ReRef]) -> ReRef: ...
+@overload
+def Concat(*args: ReRef) -> ReRef: ...
+@overload
+def Concat(args: List[BitVecRef]) -> BitVecRef: ...
+@overload
+def Concat(*args: BitVecRef) -> BitVecRef: ...
+@overload
+def Extract(
+    high: Union[SeqRef], lo: Union[int, ArithRef], a: Union[int, ArithRef]
+) -> SeqRef: ...
+@overload
+def Extract(
+    high: Union[int, ArithRef], lo: Union[int, ArithRef], a: BitVecRef
+) -> BitVecRef: ...
+@overload
+def Sum(arg: BitVecRef, *args: Union[BitVecRef, int]) -> BitVecRef: ...
+@overload
+def Sum(arg: Union[List[BitVecRef], int]) -> BitVecRef: ...
+@overload
+def Sum(arg: ArithRef, *args: Union[ArithRef, int]) -> ArithRef: ...
+
+# Can't include this overload as it overlaps with the second overload.
+# @overload
+# def Sum(arg: Union[List[ArithRef], int]) -> ArithRef:  ...
+
+def Function(name: str, *sig: SortRef) -> FuncDeclRef: ...
+def IntVal(val: int, ctx: Optional[Context] = None) -> IntNumRef: ...
+def BoolVal(val: bool, ctx: Optional[Context] = None) -> BoolRef: ...
+def BitVecVal(
+    val: int, bv: Union[int, BitVecSortRef], ctx: Optional[Context] = None
+) -> BitVecRef: ...
+def BitVec(
+    val: str, bv: Union[int, BitVecSortRef], ctx: Optional[Context] = None
+) -> BitVecRef: ...
+def IntSort(ctx: Optional[Context] = None) -> ArithSortRef: ...
+def BoolSort(ctx: Optional[Context] = None) -> BoolSortRef: ...
+def ArraySort(domain: SortRef, range: SortRef) -> ArraySortRef: ...
+def BitVecSort(domain: int, ctx: Optional[Context] = None) -> BoolSortRef: ...
+def ForAll(vs: List[ExprRef], expr: ExprRef) -> ExprRef: ...
+def Select(arr: ExprRef, ind: ExprRef) -> ExprRef: ...
+def Update(arr: ArrayRef, ind: ExprRef, newVal: ExprRef) -> ArrayRef: ...
+def Store(arr: ArrayRef, ind: ExprRef, newVal: ExprRef) -> ArrayRef: ...
+def BVAddNoOverflow(a: BitVecRef, b: BitVecRef, signed: bool) -> BoolRef: ...
+def BVAddNoUnderflow(a: BitVecRef, b: BitVecRef) -> BoolRef: ...
+def BVSubNoOverflow(a: BitVecRef, b: BitVecRef) -> BoolRef: ...
+def BVSubNoUnderflow(a: BitVecRef, b: BitVecRef, signed: bool) -> BoolRef: ...
+def BVSDivNoOverflow(a: BitVecRef, b: BitVecRef) -> BoolRef: ...
+def BVSNegNoOverflow(a: BitVecRef) -> BoolRef: ...
+def BVMulNoOverflow(a: BitVecRef, b: BitVecRef, signed: bool) -> BoolRef: ...
+def BVMulNoUnderflow(a: BitVecRef, b: BitVecRef) -> BoolRef: ...
diff --git a/mypy-stubs/z3/z3core.pyi b/mypy-stubs/z3/z3core.pyi
new file mode 100644
index 0000000000000000000000000000000000000000..b77e09143e477de1cef8bc1a629164de7b3a9109
--- /dev/null
+++ b/mypy-stubs/z3/z3core.pyi
@@ -0,0 +1,4 @@
+from .z3types import Ast, ContextObj
+
+def Z3_mk_eq(ctx: ContextObj, a: Ast, b: Ast) -> Ast: ...
+def Z3_mk_div(ctx: ContextObj, a: Ast, b: Ast) -> Ast: ...
diff --git a/mypy-stubs/z3/z3types.pyi b/mypy-stubs/z3/z3types.pyi
new file mode 100644
index 0000000000000000000000000000000000000000..91d5d9057530d372488af9fb7e9c2cd32b87f3e1
--- /dev/null
+++ b/mypy-stubs/z3/z3types.pyi
@@ -0,0 +1,9 @@
+from typing import Any
+
+class Z3Exception(Exception):
+    def __init__(self, a: Any) -> None:
+        self.value = a
+        ...
+
+class ContextObj: ...
+class Ast: ...
diff --git a/myth b/myth
new file mode 100755
index 0000000000000000000000000000000000000000..1eeb58da3ea0562275a90b6e36db38232aeb8bb3
--- /dev/null
+++ b/myth
@@ -0,0 +1,13 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+"""mythril.py: Bug hunting on the Ethereum blockchain
+   http://www.github.com/ConsenSys/mythril
+   """
+from sys import exit
+import mythril.interfaces.cli
+
+
+if __name__ == "__main__":
+    mythril.interfaces.cli.main()
+    exit()
+
diff --git a/mythril_sol/__init__.py b/mythril_sol/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..9b018ae6573b0929048692984650429397ced49e
--- /dev/null
+++ b/mythril_sol/__init__.py
@@ -0,0 +1,10 @@
+# We use RsT document formatting in docstring. For example :param to mark parameters.
+# See PEP 287
+__docformat__ = "restructuredtext"
+import logging
+
+# Accept mythril.VERSION to get mythril's current version number
+from .__version__ import __version__ as VERSION  # NOQA
+from mythril.plugin.loader import MythrilPluginLoader
+
+log = logging.getLogger(__name__)
diff --git a/mythril_sol/__main__.py b/mythril_sol/__main__.py
new file mode 100644
index 0000000000000000000000000000000000000000..a1ed78df79e743e9b2f62a14a180c958cec9a700
--- /dev/null
+++ b/mythril_sol/__main__.py
@@ -0,0 +1,6 @@
+#!/usr/bin/env python3
+# -*- coding: UTF-8 -*-
+import mythril.interfaces.cli
+
+if __name__ == "__main__":
+    mythril.interfaces.cli.main()
diff --git a/mythril_sol/__version__.py b/mythril_sol/__version__.py
new file mode 100644
index 0000000000000000000000000000000000000000..975fca6b734e96bfd20fe5e23767b73b7de4cd21
--- /dev/null
+++ b/mythril_sol/__version__.py
@@ -0,0 +1,7 @@
+"""This file contains the current Mythril version.
+
+This file is suitable for sourcing inside POSIX shell, e.g. bash as well
+as for importing into Python.
+"""
+
+__version__ = "v0.24.4"
diff --git a/mythril_sol/analysis/__init__.py b/mythril_sol/analysis/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/mythril_sol/analysis/analysis_args.py b/mythril_sol/analysis/analysis_args.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/mythril_sol/analysis/call_helpers.py b/mythril_sol/analysis/call_helpers.py
new file mode 100644
index 0000000000000000000000000000000000000000..875bb365e11f3661ca7039999d9ae71d10ef0b46
--- /dev/null
+++ b/mythril_sol/analysis/call_helpers.py
@@ -0,0 +1,59 @@
+"""This module provides helper functions for the analysis modules to deal with
+call functionality."""
+from typing import Union
+
+from mythril.analysis.ops import VarType, Call, get_variable
+from mythril.laser.ethereum.state.global_state import GlobalState
+from mythril.laser.ethereum.natives import PRECOMPILE_COUNT
+
+
+def get_call_from_state(state: GlobalState) -> Union[Call, None]:
+    """
+
+    :param state:
+    :return:
+    """
+    instruction = state.get_current_instruction()
+
+    op = instruction["opcode"]
+    stack = state.mstate.stack
+
+    if op in ("CALL", "CALLCODE"):
+        gas, to, value, meminstart, meminsz, _, _ = (
+            get_variable(stack[-1]),
+            get_variable(stack[-2]),
+            get_variable(stack[-3]),
+            get_variable(stack[-4]),
+            get_variable(stack[-5]),
+            get_variable(stack[-6]),
+            get_variable(stack[-7]),
+        )
+
+        if to.type == VarType.CONCRETE and 0 < to.val <= PRECOMPILE_COUNT:
+            return None
+
+        if meminstart.type == VarType.CONCRETE and meminsz.type == VarType.CONCRETE:
+            return Call(
+                state.node,
+                state,
+                None,
+                op,
+                to,
+                gas,
+                value,
+                state.mstate.memory[meminstart.val : meminsz.val * 4],
+            )
+        else:
+            return Call(state.node, state, None, op, to, gas, value)
+
+    else:
+        gas, to, meminstart, meminsz, _, _ = (
+            get_variable(stack[-1]),
+            get_variable(stack[-2]),
+            get_variable(stack[-3]),
+            get_variable(stack[-4]),
+            get_variable(stack[-5]),
+            get_variable(stack[-6]),
+        )
+
+        return Call(state.node, state, None, op, to, gas)
diff --git a/mythril_sol/analysis/callgraph.py b/mythril_sol/analysis/callgraph.py
new file mode 100644
index 0000000000000000000000000000000000000000..dcbd0216d4b776c4cdd0bab8aadba686f485a475
--- /dev/null
+++ b/mythril_sol/analysis/callgraph.py
@@ -0,0 +1,250 @@
+"""This module contains the configuration and functions to create call
+graphs."""
+
+import re
+
+from jinja2 import Environment, PackageLoader, select_autoescape
+from z3 import Z3Exception
+
+from mythril.laser.ethereum.svm import NodeFlags
+from mythril.laser.smt import simplify
+
+default_opts = {
+    "autoResize": True,
+    "height": "100%",
+    "width": "100%",
+    "manipulation": False,
+    "layout": {
+        "improvedLayout": True,
+        "hierarchical": {
+            "enabled": True,
+            "levelSeparation": 450,
+            "nodeSpacing": 200,
+            "treeSpacing": 100,
+            "blockShifting": True,
+            "edgeMinimization": True,
+            "parentCentralization": False,
+            "direction": "LR",
+            "sortMethod": "directed",
+        },
+    },
+    "nodes": {
+        "color": "#000000",
+        "borderWidth": 1,
+        "borderWidthSelected": 2,
+        "chosen": True,
+        "shape": "box",
+        "font": {"align": "left", "color": "#FFFFFF"},
+    },
+    "edges": {
+        "font": {
+            "color": "#FFFFFF",
+            "face": "arial",
+            "background": "none",
+            "strokeWidth": 0,
+            "strokeColor": "#ffffff",
+            "align": "horizontal",
+            "multi": False,
+            "vadjust": 0,
+        }
+    },
+    "physics": {"enabled": False},
+}
+
+phrack_opts = {
+    "nodes": {
+        "color": "#000000",
+        "borderWidth": 1,
+        "borderWidthSelected": 1,
+        "shapeProperties": {"borderDashes": False, "borderRadius": 0},
+        "chosen": True,
+        "shape": "box",
+        "font": {"face": "courier new", "align": "left", "color": "#000000"},
+    },
+    "edges": {
+        "font": {
+            "color": "#000000",
+            "face": "courier new",
+            "background": "none",
+            "strokeWidth": 0,
+            "strokeColor": "#ffffff",
+            "align": "horizontal",
+            "multi": False,
+            "vadjust": 0,
+        }
+    },
+}
+
+default_colors = [
+    {
+        "border": "#26996f",
+        "background": "#2f7e5b",
+        "highlight": {"border": "#26996f", "background": "#28a16f"},
+    },
+    {
+        "border": "#9e42b3",
+        "background": "#842899",
+        "highlight": {"border": "#9e42b3", "background": "#933da6"},
+    },
+    {
+        "border": "#b82323",
+        "background": "#991d1d",
+        "highlight": {"border": "#b82323", "background": "#a61f1f"},
+    },
+    {
+        "border": "#4753bf",
+        "background": "#3b46a1",
+        "highlight": {"border": "#4753bf", "background": "#424db3"},
+    },
+    {
+        "border": "#26996f",
+        "background": "#2f7e5b",
+        "highlight": {"border": "#26996f", "background": "#28a16f"},
+    },
+    {
+        "border": "#9e42b3",
+        "background": "#842899",
+        "highlight": {"border": "#9e42b3", "background": "#933da6"},
+    },
+    {
+        "border": "#b82323",
+        "background": "#991d1d",
+        "highlight": {"border": "#b82323", "background": "#a61f1f"},
+    },
+    {
+        "border": "#4753bf",
+        "background": "#3b46a1",
+        "highlight": {"border": "#4753bf", "background": "#424db3"},
+    },
+]
+
+phrack_color = {
+    "border": "#000000",
+    "background": "#ffffff",
+    "highlight": {"border": "#000000", "background": "#ffffff"},
+}
+
+
+def extract_nodes(statespace):
+    """
+
+    :param statespace:
+    :param color_map:
+    :return:
+    """
+    nodes = []
+    color_map = {}
+    for node_key in statespace.nodes:
+        node = statespace.nodes[node_key]
+        instructions = [state.get_current_instruction() for state in node.states]
+        code_split = []
+        for instruction in instructions:
+            if instruction["opcode"].startswith("PUSH"):
+                code_line = "%d %s %s" % (
+                    instruction["address"],
+                    instruction["opcode"],
+                    instruction["argument"],
+                )
+            elif (
+                instruction["opcode"].startswith("JUMPDEST")
+                and NodeFlags.FUNC_ENTRY in node.flags
+                and instruction["address"] == node.start_addr
+            ):
+                code_line = node.function_name
+            else:
+                code_line = "%d %s" % (instruction["address"], instruction["opcode"])
+
+            code_line = re.sub(
+                "([0-9a-f]{8})[0-9a-f]+", lambda m: m.group(1) + "(...)", code_line
+            )
+            code_split.append(code_line)
+
+        truncated_code = (
+            "\n".join(code_split)
+            if (len(code_split) < 7)
+            else "\n".join(code_split[:6]) + "\n(click to expand +)"
+        )
+
+        if node.get_cfg_dict()["contract_name"] not in color_map.keys():
+            color = default_colors[len(color_map) % len(default_colors)]
+            color_map[node.get_cfg_dict()["contract_name"]] = color
+
+        nodes.append(
+            {
+                "id": str(node_key),
+                "color": color_map.get(
+                    node.get_cfg_dict()["contract_name"], default_colors[0]
+                ),
+                "size": 150,
+                "fullLabel": "\n".join(code_split),
+                "label": truncated_code,
+                "truncLabel": truncated_code,
+                "isExpanded": False,
+            }
+        )
+    return nodes
+
+
+def extract_edges(statespace):
+    """
+
+    :param statespace:
+    :return:
+    """
+    edges = []
+    for edge in statespace.edges:
+        if edge.condition is None:
+            label = ""
+        else:
+            try:
+                label = str(simplify(edge.condition)).replace("\n", "")
+            except Z3Exception:
+                label = str(edge.condition).replace("\n", "")
+
+        label = re.sub(
+            r"([^_])([\d]{2}\d+)", lambda m: m.group(1) + hex(int(m.group(2))), label
+        )
+
+        edges.append(
+            {
+                "from": str(edge.as_dict["from"]),
+                "to": str(edge.as_dict["to"]),
+                "arrows": "to",
+                "label": label,
+                "smooth": {"type": "cubicBezier"},
+            }
+        )
+    return edges
+
+
+def generate_graph(
+    statespace,
+    title="Mythril / Ethereum LASER Symbolic VM",
+    physics=False,
+    phrackify=False,
+):
+    """
+
+    :param statespace:
+    :param title:
+    :param physics:
+    :param phrackify:
+    :return:
+    """
+    env = Environment(
+        loader=PackageLoader("mythril.analysis"),
+        autoescape=select_autoescape(["html", "xml"]),
+    )
+    template = env.get_template("callgraph.html")
+
+    graph_opts = default_opts
+
+    graph_opts["physics"]["enabled"] = physics
+
+    return template.render(
+        title=title,
+        nodes=extract_nodes(statespace),
+        edges=extract_edges(statespace),
+        phrackify=phrackify,
+        opts=graph_opts,
+    )
diff --git a/mythril_sol/analysis/issue_annotation.py b/mythril_sol/analysis/issue_annotation.py
new file mode 100644
index 0000000000000000000000000000000000000000..7f5f431be78217ab8be66657a8135a84f3643448
--- /dev/null
+++ b/mythril_sol/analysis/issue_annotation.py
@@ -0,0 +1,34 @@
+from typing import List
+
+from mythril.analysis.report import Issue
+from mythril.laser.ethereum.state.annotation import StateAnnotation
+from mythril.laser.smt import Bool
+from copy import deepcopy
+
+
+class IssueAnnotation(StateAnnotation):
+    def __init__(self, conditions: List[Bool], issue: Issue, detector):
+        """
+        Issue Annotation to propagate issues
+        - conditions: A list of independent conditions [a, b, c, ...]
+                      Each of these have to be independently be satisfied
+        - issue: The issue of the annotation
+        - detector: The detection module
+        """
+        self.conditions = conditions
+        self.issue = issue
+        self.detector = detector
+
+    def persist_to_world_state(self) -> bool:
+        return True
+
+    @property
+    def persist_over_calls(self) -> bool:
+        return True
+
+    def __copy__(self):
+        return IssueAnnotation(
+            conditions=deepcopy(self.conditions),
+            issue=self.issue,
+            detector=self.detector,
+        )
diff --git a/mythril_sol/analysis/module/__init__.py b/mythril_sol/analysis/module/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..aa5436bee7c34a736314ec8f33fdb7e2b41b689c
--- /dev/null
+++ b/mythril_sol/analysis/module/__init__.py
@@ -0,0 +1,6 @@
+from mythril.analysis.module.base import EntryPoint, DetectionModule
+from mythril.analysis.module.loader import ModuleLoader
+from mythril.analysis.module.util import (
+    get_detection_module_hooks,
+    reset_callback_modules,
+)
diff --git a/mythril_sol/analysis/module/base.py b/mythril_sol/analysis/module/base.py
new file mode 100644
index 0000000000000000000000000000000000000000..a39de82143e03b580443fd60cd98862b8cba8b0f
--- /dev/null
+++ b/mythril_sol/analysis/module/base.py
@@ -0,0 +1,119 @@
+""" Mythril Detection Modules
+
+This module includes an definition of the DetectionModule interface.
+DetectionModules implement different analysis rules to find weaknesses and vulnerabilities.
+"""
+import logging
+from typing import List, Set, Optional, Tuple
+
+from mythril.analysis.report import Issue
+from mythril.laser.ethereum.state.global_state import GlobalState
+from mythril.support.support_args import args
+from mythril.support.support_utils import get_code_hash
+from abc import ABC, abstractmethod
+from enum import Enum
+
+# Get logger instance
+log = logging.getLogger(__name__)
+
+
+class EntryPoint(Enum):
+    """EntryPoint Enum
+
+    This enum is used to signify the entry_point of detection modules.
+    See also the class documentation of DetectionModule
+    """
+
+    POST = 1
+    CALLBACK = 2
+
+
+class DetectionModule(ABC):
+    """The base detection module.
+
+    All custom-built detection modules must inherit from this class.
+
+    There are several class properties that expose information about the detection modules
+
+    :param name: The name of the detection module
+    :param swc_id: The SWC ID associated with the weakness that the module detects
+    :param description: A description of the detection module, and what it detects
+    :param entry_point: Mythril can run callback style detection modules, or modules that search the statespace.
+                [IMPORTANT] POST entry points severely slow down the analysis, try to always use callback style modules
+    :param pre_hooks: A list of instructions to hook the laser vm for (pre execution of the instruction)
+    :param post_hooks: A list of instructions to hook the laser vm for (post execution of the instruction)
+    """
+
+    name = "Detection Module Name / Title"
+    swc_id = "SWC-000"
+    description = "Detection module description"
+    entry_point: EntryPoint = EntryPoint.CALLBACK
+    pre_hooks: List[str] = []
+    post_hooks: List[str] = []
+
+    def __init__(self) -> None:
+        self.issues: List[Issue] = []
+        self.cache: Set[Tuple[int, str]] = set()
+        self.auto_cache = True
+
+    def reset_module(self):
+        """Resets the storage of this module"""
+        self.issues = []
+
+    def update_cache(self, issues=None):
+        """
+        Updates cache with param issues, updates against self.issues, if the param is None
+        :param issues: The issues used to update the cache
+        """
+        issues = issues or self.issues
+        for issue in issues:
+            self.cache.add((issue.address, issue.bytecode_hash))
+
+    def execute(self, target: GlobalState) -> Optional[List[Issue]]:
+        """The entry point for execution, which is being called by Mythril.
+
+        :param target: The target of the analysis, either a global state (callback) or the entire statespace (post)
+        :return: List of encountered issues
+        """
+
+        log.debug("Entering analysis module: {}".format(self.__class__.__name__))
+
+        if (
+            target.get_current_instruction()["address"],
+            get_code_hash(target.environment.code.bytecode),
+        ) in self.cache and self.auto_cache:
+            log.debug(
+                f"Issue in cache for the analysis module: {self.__class__.__name__}, address: {target.get_current_instruction()['address']}"
+            )
+            return []
+
+        result = self._execute(target)
+        log.debug("Exiting analysis module: {}".format(self.__class__.__name__))
+
+        if result and not args.use_issue_annotations:
+            if self.auto_cache:
+                self.update_cache(result)
+            self.issues += result
+
+        return result
+
+    @abstractmethod
+    def _execute(self, target) -> Optional[List[Issue]]:
+        """Module main method (override this)
+
+        :param target: The target of the analysis, either a global state (callback) or the entire statespace (post)
+        :return: List of encountered issues
+        """
+        pass
+
+    def __repr__(self) -> str:
+        return (
+            "<"
+            "DetectionModule "
+            "name={0.name} "
+            "swc_id={0.swc_id} "
+            "pre_hooks={0.pre_hooks} "
+            "post_hooks={0.post_hooks} "
+            "description={0.description}"
+            ">"
+        ).format(self)
diff --git a/mythril_sol/analysis/module/loader.py b/mythril_sol/analysis/module/loader.py
new file mode 100644
index 0000000000000000000000000000000000000000..cb61c293f939d29f9ac7bd4a9ca0fd64f07c97bc
--- /dev/null
+++ b/mythril_sol/analysis/module/loader.py
@@ -0,0 +1,108 @@
+from mythril.analysis.module.base import DetectionModule, EntryPoint
+from mythril.support.support_utils import Singleton
+from mythril.support.support_args import args
+
+from mythril.analysis.module.modules.arbitrary_jump import ArbitraryJump
+from mythril.analysis.module.modules.arbitrary_write import ArbitraryStorage
+from mythril.analysis.module.modules.delegatecall import ArbitraryDelegateCall
+from mythril.analysis.module.modules.dependence_on_predictable_vars import (
+    PredictableVariables,
+)
+from mythril.analysis.module.modules.dependence_on_origin import TxOrigin
+from mythril.analysis.module.modules.ether_thief import EtherThief
+from mythril.analysis.module.modules.exceptions import Exceptions
+from mythril.analysis.module.modules.external_calls import ExternalCalls
+from mythril.analysis.module.modules.integer import IntegerArithmetics
+from mythril.analysis.module.modules.multiple_sends import MultipleSends
+from mythril.analysis.module.modules.state_change_external_calls import (
+    StateChangeAfterCall,
+)
+from mythril.analysis.module.modules.suicide import AccidentallyKillable
+from mythril.analysis.module.modules.unchecked_retval import UncheckedRetval
+from mythril.analysis.module.modules.user_assertions import UserAssertions
+
+from mythril.analysis.module.base import EntryPoint
+
+from mythril.exceptions import DetectorNotFoundError
+
+from typing import Optional, List
+
+
+class ModuleLoader(object, metaclass=Singleton):
+    """ModuleLoader
+
+    The module loader class implements a singleton loader for detection modules.
+
+    By default it will load the detection modules in the mythril package.
+    Additional detection modules can be loaded using the register_module function call implemented by the ModuleLoader
+    """
+
+    def __init__(self):
+        self._modules = []
+        self._register_mythril_modules()
+
+    def register_module(self, detection_module: DetectionModule):
+        """Registers a detection module with the module loader"""
+        if not isinstance(detection_module, DetectionModule):
+            raise ValueError("The passed variable is not a valid detection module")
+        self._modules.append(detection_module)
+
+    def get_detection_modules(
+        self,
+        entry_point: Optional[EntryPoint] = None,
+        white_list: Optional[List[str]] = None,
+    ) -> List[DetectionModule]:
+        """Gets registered detection modules
+
+        :param entry_point: If specified: only return detection modules with this entry point
+        :param white_list: If specified: only return whitelisted detection modules
+        :return: The selected detection modules
+        """
+
+        result = self._modules[:]
+
+        if white_list:
+
+            # Sanity check
+
+            available_names = [type(module).__name__ for module in result]
+
+            for name in white_list:
+                if name not in available_names:
+                    raise DetectorNotFoundError(
+                        "Invalid detection module: {}".format(name)
+                    )
+
+            result = [
+                module for module in result if type(module).__name__ in white_list
+            ]
+        if args.use_integer_module is False:
+            result = [
+                module
+                for module in result
+                if type(module).__name__ != "IntegerArithmetics"
+            ]
+        if entry_point:
+            result = [module for module in result if module.entry_point == entry_point]
+
+        return result
+
+    def _register_mythril_modules(self):
+        self._modules.extend(
+            [
+                ArbitraryJump(),
+                ArbitraryStorage(),
+                ArbitraryDelegateCall(),
+                PredictableVariables(),
+                TxOrigin(),
+                EtherThief(),
+                Exceptions(),
+                ExternalCalls(),
+                IntegerArithmetics(),
+                MultipleSends(),
+                StateChangeAfterCall(),
+                AccidentallyKillable(),
+                UncheckedRetval(),
+                UserAssertions(),
+            ]
+        )
diff --git a/mythril_sol/analysis/module/module_helpers.py b/mythril_sol/analysis/module/module_helpers.py
new file mode 100644
index 0000000000000000000000000000000000000000..f6bc96229679818f02ff78c804b946dcc1caf1e5
--- /dev/null
+++ b/mythril_sol/analysis/module/module_helpers.py
@@ -0,0 +1,13 @@
+import traceback
+
+
+def is_prehook() -> bool:
+    """Check if we are in prehook.  One of Bernhard's trademark hacks!
+    Let's leave it to this for now, unless we need to check prehook for
+    a lot more modules.
+    """
+
+    assert ("pre_hook" in traceback.format_stack()[-5]) or (
+        "post_hook" in traceback.format_stack()[-5]
+    )
+    return "pre_hook" in traceback.format_stack()[-5]
diff --git a/mythril_sol/analysis/module/modules/__init__.py b/mythril_sol/analysis/module/modules/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..8b137891791fe96927ad78e64b0aad7bded08bdc
--- /dev/null
+++ b/mythril_sol/analysis/module/modules/__init__.py
@@ -0,0 +1 @@
+
diff --git a/mythril_sol/analysis/module/modules/arbitrary_jump.py b/mythril_sol/analysis/module/modules/arbitrary_jump.py
new file mode 100644
index 0000000000000000000000000000000000000000..3f0fa7a8910cc379c0cc9b274f030ddc994a083f
--- /dev/null
+++ b/mythril_sol/analysis/module/modules/arbitrary_jump.py
@@ -0,0 +1,115 @@
+"""This module contains the detection code for Arbitrary jumps."""
+import logging
+
+from mythril.exceptions import UnsatError
+
+from mythril.analysis.solver import get_transaction_sequence, UnsatError
+from mythril.analysis.issue_annotation import IssueAnnotation
+from mythril.analysis.module.base import DetectionModule, Issue, EntryPoint
+from mythril.analysis.swc_data import ARBITRARY_JUMP
+
+from mythril.laser.ethereum.state.global_state import GlobalState
+from mythril.laser.smt import And, BitVec, symbol_factory
+from mythril.support.model import get_model
+
+log = logging.getLogger(__name__)
+
+DESCRIPTION = """
+
+Search for jumps to arbitrary locations in the bytecode
+"""
+
+
+def is_unique_jumpdest(jump_dest: BitVec, state: GlobalState) -> bool:
+    """
+    Handles cases where jump_dest evaluates to a single concrete value
+    """
+
+    try:
+        model = get_model(state.world_state.constraints)
+    except UnsatError:
+        return True
+    concrete_jump_dest = model.eval(jump_dest.raw, model_completion=True)
+    try:
+        model = get_model(
+            state.world_state.constraints
+            + [symbol_factory.BitVecVal(concrete_jump_dest.as_long(), 256) != jump_dest]
+        )
+    except UnsatError:
+        return True
+    return False
+
+
+class ArbitraryJump(DetectionModule):
+    """This module searches for JUMPs to a user-specified location."""
+
+    name = "Caller can redirect execution to arbitrary bytecode locations"
+    swc_id = ARBITRARY_JUMP
+    description = DESCRIPTION
+    entry_point = EntryPoint.CALLBACK
+    pre_hooks = ["JUMP", "JUMPI"]
+
+    def reset_module(self):
+        """
+        Resets the module by clearing everything
+        :return:
+        """
+        super().reset_module()
+
+    def _execute(self, state: GlobalState) -> None:
+        """
+
+        :param state:
+        :return:
+        """
+        return self._analyze_state(state)
+
+    def _analyze_state(self, state):
+        """
+
+        :param state:
+        :return:
+        """
+
+        jump_dest = state.mstate.stack[-1]
+
+        if jump_dest.symbolic is False:
+            return []
+
+        if is_unique_jumpdest(jump_dest, state) is True:
+            return []
+
+        try:
+            transaction_sequence = get_transaction_sequence(
+                state, state.world_state.constraints
+            )
+        except UnsatError:
+            return []
+        log.info("Detected arbitrary jump dest")
+        issue = Issue(
+            contract=state.environment.active_account.contract_name,
+            function_name=state.environment.active_function_name,
+            address=state.get_current_instruction()["address"],
+            swc_id=ARBITRARY_JUMP,
+            title="Jump to an arbitrary instruction",
+            severity="High",
+            bytecode=state.environment.code.bytecode,
+            description_head="The caller can redirect execution to arbitrary bytecode locations.",
+            description_tail="It is possible to redirect the control flow to arbitrary locations in the code. "
+            "This may allow an attacker to bypass security controls or manipulate the business logic of the "
+            "smart contract. Avoid using low-level-operations and assembly to prevent this issue.",
+            gas_used=(state.mstate.min_gas_used, state.mstate.max_gas_used),
+            transaction_sequence=transaction_sequence,
+        )
+        state.annotate(
+            IssueAnnotation(
+                conditions=[And(*state.world_state.constraints)],
+                issue=issue,
+                detector=self,
+            )
+        )
+
+        return [issue]
+
+
+detector = ArbitraryJump()
diff --git a/mythril_sol/analysis/module/modules/arbitrary_write.py b/mythril_sol/analysis/module/modules/arbitrary_write.py
new file mode 100644
index 0000000000000000000000000000000000000000..edceaf70cdb255fcfc76d093fee6061573202d54
--- /dev/null
+++ b/mythril_sol/analysis/module/modules/arbitrary_write.py
@@ -0,0 +1,78 @@
+"""This module contains the detection code for arbitrary storage write."""
+import logging
+from mythril.analysis.module.base import DetectionModule, EntryPoint
+from mythril.analysis.potential_issues import (
+    get_potential_issues_annotation,
+    PotentialIssue,
+)
+
+from mythril.analysis.swc_data import WRITE_TO_ARBITRARY_STORAGE
+from mythril.laser.ethereum.state.global_state import GlobalState
+from mythril.laser.smt import symbol_factory
+
+log = logging.getLogger(__name__)
+
+DESCRIPTION = """
+
+Search for any writes to an arbitrary storage slot
+"""
+
+
+class ArbitraryStorage(DetectionModule):
+    """This module searches for a feasible write to an arbitrary storage slot."""
+
+    name = "Caller can write to arbitrary storage locations"
+    swc_id = WRITE_TO_ARBITRARY_STORAGE
+    description = DESCRIPTION
+    entry_point = EntryPoint.CALLBACK
+    pre_hooks = ["SSTORE"]
+
+    def reset_module(self):
+        """
+        Resets the module by clearing everything
+        :return:
+        """
+        super().reset_module()
+
+    def _execute(self, state: GlobalState) -> None:
+        """
+
+        :param state:
+        :return:
+        """
+        potential_issues = self._analyze_state(state)
+
+        annotation = get_potential_issues_annotation(state)
+        annotation.potential_issues.extend(potential_issues)
+
+    def _analyze_state(self, state):
+        """
+
+        :param state:
+        :return:
+        """
+
+        write_slot = state.mstate.stack[-1]
+        constraints = state.world_state.constraints + [
+            write_slot == symbol_factory.BitVecVal(324345425435, 256)
+        ]
+
+        potential_issue = PotentialIssue(
+            contract=state.environment.active_account.contract_name,
+            function_name=state.environment.active_function_name,
+            address=state.get_current_instruction()["address"],
+            swc_id=WRITE_TO_ARBITRARY_STORAGE,
+            title="Write to an arbitrary storage location",
+            severity="High",
+            bytecode=state.environment.code.bytecode,
+            description_head="The caller can write to arbitrary storage locations.",
+            description_tail="It is possible to write to arbitrary storage locations. By modifying the values of "
+            "storage variables, attackers may bypass security controls or manipulate the business logic of "
+            "the smart contract.",
+            detector=self,
+            constraints=constraints,
+        )
+        return [potential_issue]
+
+
+detector = ArbitraryStorage()
diff --git a/mythril_sol/analysis/module/modules/delegatecall.py b/mythril_sol/analysis/module/modules/delegatecall.py
new file mode 100644
index 0000000000000000000000000000000000000000..b0699a9c99ef2b3bc2b811e0dc8deeb35766d75f
--- /dev/null
+++ b/mythril_sol/analysis/module/modules/delegatecall.py
@@ -0,0 +1,99 @@
+"""This module contains the detection code for insecure delegate call usage."""
+import logging
+from typing import List
+
+from mythril.analysis.potential_issues import (
+    get_potential_issues_annotation,
+    PotentialIssue,
+)
+from mythril.analysis.swc_data import DELEGATECALL_TO_UNTRUSTED_CONTRACT
+from mythril.laser.ethereum.transaction.symbolic import ACTORS
+from mythril.laser.ethereum.transaction.transaction_models import (
+    ContractCreationTransaction,
+)
+from mythril.analysis.module.base import DetectionModule, EntryPoint
+from mythril.exceptions import UnsatError
+from mythril.laser.ethereum.state.global_state import GlobalState
+from mythril.laser.smt import symbol_factory, UGT, Bool
+
+log = logging.getLogger(__name__)
+
+
+class ArbitraryDelegateCall(DetectionModule):
+    """This module detects delegatecall to a user-supplied address."""
+
+    name = "Delegatecall to a user-specified address"
+    swc_id = DELEGATECALL_TO_UNTRUSTED_CONTRACT
+    description = "Check for invocations of delegatecall to a user-supplied address."
+    entry_point = EntryPoint.CALLBACK
+    pre_hooks = ["DELEGATECALL"]
+
+    def _execute(self, state: GlobalState) -> None:
+        """
+
+        :param state:
+        :return:
+        """
+        potential_issues = self._analyze_state(state)
+
+        annotation = get_potential_issues_annotation(state)
+        annotation.potential_issues.extend(potential_issues)
+
+    def _analyze_state(self, state: GlobalState) -> List[PotentialIssue]:
+        """
+        :param state: the current state
+        :return: returns the issues for that corresponding state
+        """
+        gas = state.mstate.stack[-1]
+        to = state.mstate.stack[-2]
+
+        constraints = [
+            to == ACTORS.attacker,
+            UGT(gas, symbol_factory.BitVecVal(2300, 256)),
+            state.new_bitvec(
+                "retval_{}".format(state.get_current_instruction()["address"]), 256
+            )
+            == 1,
+        ]
+
+        for tx in state.world_state.transaction_sequence:
+            if not isinstance(tx, ContractCreationTransaction):
+                constraints.append(tx.caller == ACTORS.attacker)
+
+        try:
+            address = state.get_current_instruction()["address"]
+
+            logging.debug(
+                "[DELEGATECALL] Detected potential delegatecall to a user-supplied address : {}".format(
+                    address
+                )
+            )
+
+            description_head = "The contract delegates execution to another contract with a user-supplied address."
+            description_tail = (
+                "The smart contract delegates execution to a user-supplied address.This could allow an attacker to "
+                "execute arbitrary code in the context of this contract account and manipulate the state of the "
+                "contract account or execute actions on its behalf."
+            )
+
+            return [
+                PotentialIssue(
+                    contract=state.environment.active_account.contract_name,
+                    function_name=state.environment.active_function_name,
+                    address=address,
+                    swc_id=DELEGATECALL_TO_UNTRUSTED_CONTRACT,
+                    bytecode=state.environment.code.bytecode,
+                    title="Delegatecall to user-supplied address",
+                    severity="High",
+                    description_head=description_head,
+                    description_tail=description_tail,
+                    constraints=constraints,
+                    detector=self,
+                )
+            ]
+
+        except UnsatError:
+            return []
+
+
+detector = ArbitraryDelegateCall()
diff --git a/mythril_sol/analysis/module/modules/dependence_on_origin.py b/mythril_sol/analysis/module/modules/dependence_on_origin.py
new file mode 100644
index 0000000000000000000000000000000000000000..7e9b575f981e4ee31944fe08915c49067fb4b230
--- /dev/null
+++ b/mythril_sol/analysis/module/modules/dependence_on_origin.py
@@ -0,0 +1,112 @@
+"""This module contains the detection code for predictable variable
+dependence."""
+import logging
+from copy import copy
+from mythril.analysis.issue_annotation import IssueAnnotation
+from mythril.analysis.module.base import DetectionModule, EntryPoint
+from mythril.analysis.report import Issue
+from mythril.exceptions import UnsatError
+from mythril.analysis import solver
+from mythril.analysis.swc_data import TX_ORIGIN_USAGE
+from mythril.laser.ethereum.state.global_state import GlobalState
+from mythril.laser.smt import And
+from typing import List
+
+log = logging.getLogger(__name__)
+
+
+class TxOriginAnnotation:
+    """Symbol annotation added to a variable that is initialized with a call to the ORIGIN instruction."""
+
+    def __init__(self) -> None:
+        pass
+
+
+class TxOrigin(DetectionModule):
+    """This module detects whether control flow decisions are made based on the transaction origin."""
+
+    name = "Control flow depends on tx.origin"
+    swc_id = TX_ORIGIN_USAGE
+    description = "Check whether control flow decisions are influenced by tx.origin"
+    entry_point = EntryPoint.CALLBACK
+
+    pre_hooks = ["JUMPI"]
+    post_hooks = ["ORIGIN"]
+
+    def _execute(self, state: GlobalState) -> List[Issue]:
+        """
+
+        :param state:
+        :return:
+        """
+        return self._analyze_state(state)
+
+    def _analyze_state(self, state: GlobalState) -> List[Issue]:
+        """
+
+        :param state:
+        :return:
+        """
+
+        issues = []
+
+        if state.get_current_instruction()["opcode"] == "JUMPI":
+            # We're in JUMPI prehook
+
+            for annotation in state.mstate.stack[-2].annotations:
+
+                if isinstance(annotation, TxOriginAnnotation):
+                    constraints = copy(state.world_state.constraints)
+
+                    try:
+                        transaction_sequence = solver.get_transaction_sequence(
+                            state, constraints
+                        )
+                    except UnsatError:
+                        continue
+
+                    description = (
+                        "The tx.origin environment variable has been found to influence a control flow decision. "
+                        "Note that using tx.origin as a security control might cause a situation where a user "
+                        "inadvertently authorizes a smart contract to perform an action on their behalf. It is "
+                        "recommended to use msg.sender instead."
+                    )
+
+                    severity = "Low"
+
+                    """
+                    Note: We report the location of the JUMPI instruction. Usually this maps to an if or
+                    require statement.
+                    """
+
+                    issue = Issue(
+                        contract=state.environment.active_account.contract_name,
+                        function_name=state.environment.active_function_name,
+                        address=state.get_current_instruction()["address"],
+                        swc_id=TX_ORIGIN_USAGE,
+                        bytecode=state.environment.code.bytecode,
+                        title="Dependence on tx.origin",
+                        severity=severity,
+                        description_head="Use of tx.origin as a part of authorization control.",
+                        description_tail=description,
+                        gas_used=(state.mstate.min_gas_used, state.mstate.max_gas_used),
+                        transaction_sequence=transaction_sequence,
+                    )
+                    state.annotate(
+                        IssueAnnotation(
+                            conditions=[And(*constraints)], issue=issue, detector=self
+                        )
+                    )
+
+                    issues.append(issue)
+
+        else:
+
+            # In ORIGIN posthook
+
+            state.mstate.stack[-1].annotate(TxOriginAnnotation())
+
+        return issues
+
+
+detector = TxOrigin()
diff --git a/mythril_sol/analysis/module/modules/dependence_on_predictable_vars.py b/mythril_sol/analysis/module/modules/dependence_on_predictable_vars.py
new file mode 100644
index 0000000000000000000000000000000000000000..c5739716586b3adf28358ad77f81cac5af4f08f6
--- /dev/null
+++ b/mythril_sol/analysis/module/modules/dependence_on_predictable_vars.py
@@ -0,0 +1,195 @@
+"""This module contains the detection code for predictable variable
+dependence."""
+import logging
+
+from mythril.analysis.issue_annotation import IssueAnnotation
+from mythril.analysis.module.base import DetectionModule, EntryPoint
+from mythril.analysis.report import Issue
+from mythril.exceptions import UnsatError
+from mythril.analysis import solver
+from mythril.laser.smt import And, ULT, symbol_factory
+from mythril.analysis.swc_data import TIMESTAMP_DEPENDENCE, WEAK_RANDOMNESS
+from mythril.analysis.module.module_helpers import is_prehook
+from mythril.laser.ethereum.state.global_state import GlobalState
+from mythril.laser.ethereum.state.annotation import StateAnnotation
+from typing import cast, List
+
+log = logging.getLogger(__name__)
+
+predictable_ops = ["COINBASE", "GASLIMIT", "TIMESTAMP", "NUMBER"]
+
+
+class PredictableValueAnnotation:
+    """Symbol annotation used if a variable is initialized from a predictable environment variable."""
+
+    def __init__(self, operation: str) -> None:
+        self.operation = operation
+
+
+class OldBlockNumberUsedAnnotation(StateAnnotation):
+    """Symbol annotation used if a variable is initialized from a predictable environment variable."""
+
+    def __init__(self) -> None:
+        pass
+
+
+class PredictableVariables(DetectionModule):
+    """This module detects whether control flow decisions are made using predictable
+    parameters."""
+
+    name = "Control flow depends on a predictable environment variable"
+    swc_id = "{} {}".format(TIMESTAMP_DEPENDENCE, WEAK_RANDOMNESS)
+    description = (
+        "Check whether control flow decisions are influenced by block.coinbase,"
+        "block.gaslimit, block.timestamp or block.number."
+    )
+    entry_point = EntryPoint.CALLBACK
+    pre_hooks = ["JUMPI", "BLOCKHASH"]
+    post_hooks = ["BLOCKHASH"] + predictable_ops
+
+    def _execute(self, state: GlobalState) -> List[Issue]:
+        """
+
+        :param state:
+        :return:
+        """
+        return self._analyze_state(state)
+
+    def _analyze_state(self, state: GlobalState) -> List[Issue]:
+        """
+
+        :param state:
+        :return:
+        """
+
+        issues = []
+
+        if is_prehook():
+
+            opcode = state.get_current_instruction()["opcode"]
+
+            if opcode == "JUMPI":
+
+                # Look for predictable state variables in jump condition
+
+                for annotation in state.mstate.stack[-2].annotations:
+
+                    if isinstance(annotation, PredictableValueAnnotation):
+
+                        constraints = state.world_state.constraints
+                        try:
+                            transaction_sequence = solver.get_transaction_sequence(
+                                state, constraints
+                            )
+                        except UnsatError:
+                            continue
+                        description = (
+                            annotation.operation
+                            + " is used to determine a control flow decision. "
+                        )
+                        description += (
+                            "Note that the values of variables like coinbase, gaslimit, block number and timestamp are "
+                            "predictable and can be manipulated by a malicious miner. Also keep in mind that "
+                            "attackers know hashes of earlier blocks. Don't use any of those environment variables "
+                            "as sources of randomness and be aware that use of these variables introduces "
+                            "a certain level of trust into miners."
+                        )
+
+                        """
+                        Usually report low severity except in cases where the hash of a previous block is used to
+                        determine control flow. 
+                        """
+
+                        severity = "Low"
+
+                        swc_id = (
+                            TIMESTAMP_DEPENDENCE
+                            if "timestamp" in annotation.operation
+                            else WEAK_RANDOMNESS
+                        )
+
+                        issue = Issue(
+                            contract=state.environment.active_account.contract_name,
+                            function_name=state.environment.active_function_name,
+                            address=state.get_current_instruction()["address"],
+                            swc_id=swc_id,
+                            bytecode=state.environment.code.bytecode,
+                            title="Dependence on predictable environment variable",
+                            severity=severity,
+                            description_head="A control flow decision is made based on {}.".format(
+                                annotation.operation
+                            ),
+                            description_tail=description,
+                            gas_used=(
+                                state.mstate.min_gas_used,
+                                state.mstate.max_gas_used,
+                            ),
+                            transaction_sequence=transaction_sequence,
+                        )
+                        state.annotate(
+                            IssueAnnotation(
+                                conditions=[And(*constraints)],
+                                issue=issue,
+                                detector=self,
+                            )
+                        )
+                        issues.append(issue)
+
+            elif opcode == "BLOCKHASH":
+
+                param = state.mstate.stack[-1]
+
+                constraint = [
+                    ULT(param, state.environment.block_number),
+                    ULT(
+                        state.environment.block_number,
+                        symbol_factory.BitVecVal(2**255, 256),
+                    ),
+                ]
+
+                # Why the second constraint? Because without it Z3 returns a solution where param overflows.
+
+                try:
+
+                    solver.get_model(
+                        state.world_state.constraints + constraint  # type: ignore
+                    )
+
+                    state.annotate(OldBlockNumberUsedAnnotation())
+
+                except UnsatError:
+                    pass
+
+        else:
+            # we're in post hook
+
+            opcode = state.environment.code.instruction_list[state.mstate.pc - 1][
+                "opcode"
+            ]
+
+            if opcode == "BLOCKHASH":
+                # if we're in the post hook of a BLOCKHASH op, check if an old block number was used to create it.
+
+                annotations = cast(
+                    List[OldBlockNumberUsedAnnotation],
+                    list(state.get_annotations(OldBlockNumberUsedAnnotation)),
+                )
+
+                if len(annotations):
+                    # We can append any block constraint here
+                    state.mstate.stack[-1].annotate(
+                        PredictableValueAnnotation("The block hash of a previous block")
+                    )
+            else:
+                # Always create an annotation when COINBASE, GASLIMIT, TIMESTAMP or NUMBER is executed.
+
+                state.mstate.stack[-1].annotate(
+                    PredictableValueAnnotation(
+                        "The block.{} environment variable".format(opcode.lower())
+                    )
+                )
+
+        return issues
+
+
+detector = PredictableVariables()
diff --git a/mythril_sol/analysis/module/modules/ether_thief.py b/mythril_sol/analysis/module/modules/ether_thief.py
new file mode 100644
index 0000000000000000000000000000000000000000..0cc6436def2a210edb018978abf95fbeed64fe20
--- /dev/null
+++ b/mythril_sol/analysis/module/modules/ether_thief.py
@@ -0,0 +1,99 @@
+"""This module contains the detection code for unauthorized ether
+withdrawal."""
+import logging
+from copy import copy
+
+from mythril.analysis.module.base import DetectionModule, EntryPoint
+from mythril.analysis.potential_issues import (
+    get_potential_issues_annotation,
+    PotentialIssue,
+)
+from mythril.laser.ethereum.transaction.symbolic import ACTORS
+from mythril.analysis.swc_data import UNPROTECTED_ETHER_WITHDRAWAL
+from mythril.laser.ethereum.state.global_state import GlobalState
+from mythril.analysis import solver
+from mythril.exceptions import UnsatError
+from mythril.laser.smt import UGT
+
+log = logging.getLogger(__name__)
+
+DESCRIPTION = """
+Search for cases where Ether can be withdrawn to a user-specified address.
+An issue is reported if there is a valid end state where the attacker has successfully
+increased their Ether balance.
+"""
+
+
+class EtherThief(DetectionModule):
+    """This module search for cases where Ether can be withdrawn to a user-
+    specified address."""
+
+    name = "Any sender can withdraw ETH from the contract account"
+    swc_id = UNPROTECTED_ETHER_WITHDRAWAL
+    description = DESCRIPTION
+    entry_point = EntryPoint.CALLBACK
+    post_hooks = ["CALL", "STATICCALL"]
+
+    def reset_module(self):
+        """
+        Resets the module by clearing everything
+        :return:
+        """
+        super().reset_module()
+
+    def _execute(self, state: GlobalState) -> None:
+        """
+        :param state:
+        :return:
+        """
+        potential_issues = self._analyze_state(state)
+
+        annotation = get_potential_issues_annotation(state)
+        annotation.potential_issues.extend(potential_issues)
+
+    def _analyze_state(self, state):
+        """
+        :param state:
+        :return:
+        """
+        state = copy(state)
+        instruction = state.get_current_instruction()
+
+        constraints = copy(state.world_state.constraints)
+
+        constraints += [
+            UGT(
+                state.world_state.balances[ACTORS.attacker],
+                state.world_state.starting_balances[ACTORS.attacker],
+            ),
+            state.environment.sender == ACTORS.attacker,
+            state.current_transaction.caller == state.current_transaction.origin,
+        ]
+
+        try:
+            # Pre-solve so we only add potential issues if the attacker's balance is increased.
+
+            solver.get_model(constraints)
+            potential_issue = PotentialIssue(
+                contract=state.environment.active_account.contract_name,
+                function_name=state.environment.active_function_name,
+                address=instruction["address"]
+                - 1,  # In post hook we use offset of previous instruction
+                swc_id=UNPROTECTED_ETHER_WITHDRAWAL,
+                title="Unprotected Ether Withdrawal",
+                severity="High",
+                bytecode=state.environment.code.bytecode,
+                description_head="Any sender can withdraw Ether from the contract account.",
+                description_tail="Arbitrary senders other than the contract creator can profitably extract Ether "
+                "from the contract account. Verify the business logic carefully and make sure that appropriate "
+                "security controls are in place to prevent unexpected loss of funds.",
+                detector=self,
+                constraints=constraints,
+            )
+
+            return [potential_issue]
+        except UnsatError:
+            return []
+
+
+detector = EtherThief()
diff --git a/mythril_sol/analysis/module/modules/exceptions.py b/mythril_sol/analysis/module/modules/exceptions.py
new file mode 100644
index 0000000000000000000000000000000000000000..5e2d1c8efab2c8b0269b1cb3d21af6ccfd4b5729
--- /dev/null
+++ b/mythril_sol/analysis/module/modules/exceptions.py
@@ -0,0 +1,153 @@
+"""This module contains the detection code for reachable exceptions."""
+import logging
+
+from typing import cast, List, Optional
+from mythril.analysis import solver
+from mythril.analysis.issue_annotation import IssueAnnotation
+from mythril.analysis.module.base import DetectionModule, EntryPoint
+from mythril.analysis.report import Issue
+from mythril.analysis.swc_data import ASSERT_VIOLATION
+from mythril.exceptions import UnsatError
+
+from mythril.laser.ethereum.state.global_state import GlobalState
+from mythril.laser.ethereum.state.annotation import StateAnnotation
+from mythril.laser.ethereum import util
+from mythril.laser.smt import And
+
+from mythril.support.support_utils import get_code_hash
+
+log = logging.getLogger(__name__)
+
+# The function signature of Panic(uint256)
+PANIC_SIGNATURE = [78, 72, 123, 113]
+
+
+class LastJumpAnnotation(StateAnnotation):
+    """State Annotation used if an overflow is both possible and used in the annotated path"""
+
+    def __init__(self, last_jump: Optional[int] = None) -> None:
+        self.last_jump: int = last_jump
+
+    def __copy__(self):
+        new_annotation = LastJumpAnnotation(self.last_jump)
+        return new_annotation
+
+
+class Exceptions(DetectionModule):
+    """"""
+
+    name = "Assertion violation"
+    swc_id = ASSERT_VIOLATION
+    description = "Checks whether any exception states are reachable."
+    entry_point = EntryPoint.CALLBACK
+    pre_hooks = ["INVALID", "JUMP", "REVERT"]
+
+    def __init__(self):
+        super().__init__()
+        self.auto_cache = False
+
+    def _execute(self, state: GlobalState) -> List[Issue]:
+        """
+
+        :param state:
+        :return:
+        """
+        issues = self._analyze_state(state)
+        for issue in issues:
+            self.cache.add((issue.source_location, issue.bytecode_hash))
+        return issues
+
+    def _analyze_state(self, state) -> List[Issue]:
+        """
+
+        :param state:
+        :return:
+        """
+        opcode = state.get_current_instruction()["opcode"]
+        address = state.get_current_instruction()["address"]
+
+        annotations = cast(
+            List[LastJumpAnnotation],
+            [a for a in state.get_annotations(LastJumpAnnotation)],
+        )
+        if len(annotations) == 0:
+            state.annotate(LastJumpAnnotation())
+            annotations = cast(
+                List[LastJumpAnnotation],
+                [a for a in state.get_annotations(LastJumpAnnotation)],
+            )
+
+        if opcode == "JUMP":
+            annotations[0].last_jump = address
+            return []
+
+        if opcode == "REVERT" and not is_assertion_failure(state):
+            return []
+
+        cache_address = annotations[0].last_jump
+        if (
+            cache_address,
+            get_code_hash(state.environment.code.bytecode),
+        ) in self.cache:
+            return []
+
+        log.debug(
+            "ASSERT_FAIL/REVERT in function " + state.environment.active_function_name
+        )
+
+        try:
+            description_tail = (
+                "It is possible to trigger an assertion violation. Note that Solidity assert() statements should "
+                "only be used to check invariants. Review the transaction trace generated for this issue and "
+                "either make sure your program logic is correct, or use require() instead of assert() if your goal "
+                "is to constrain user inputs or enforce preconditions. Remember to validate inputs from both callers "
+                "(for instance, via passed arguments) and callees (for instance, via return values)."
+            )
+            transaction_sequence = solver.get_transaction_sequence(
+                state, state.world_state.constraints
+            )
+
+            issue = Issue(
+                contract=state.environment.active_account.contract_name,
+                function_name=state.environment.active_function_name,
+                address=address,
+                swc_id=ASSERT_VIOLATION,
+                title="Exception State",
+                severity="Medium",
+                description_head="An assertion violation was triggered.",
+                description_tail=description_tail,
+                bytecode=state.environment.code.bytecode,
+                transaction_sequence=transaction_sequence,
+                gas_used=(state.mstate.min_gas_used, state.mstate.max_gas_used),
+                source_location=cache_address,
+            )
+            state.annotate(
+                IssueAnnotation(
+                    conditions=[And(*state.world_state.constraints)],
+                    issue=issue,
+                    detector=self,
+                )
+            )
+
+            return [issue]
+
+        except UnsatError:
+            log.debug("no model found")
+
+        return []
+
+
+def is_assertion_failure(global_state):
+    state = global_state.mstate
+    offset, length = state.stack[-1], state.stack[-2]
+    try:
+        return_data = state.memory[
+            util.get_concrete_int(offset) : util.get_concrete_int(offset + length)
+        ]
+    except TypeError:
+        return False
+
+    return return_data[:4] == PANIC_SIGNATURE and return_data[-1] == 1
+
+
+detector = Exceptions()
diff --git a/mythril_sol/analysis/module/modules/external_calls.py b/mythril_sol/analysis/module/modules/external_calls.py
new file mode 100644
index 0000000000000000000000000000000000000000..b1ce800936acb81589781d038bf617d89180c0cd
--- /dev/null
+++ b/mythril_sol/analysis/module/modules/external_calls.py
@@ -0,0 +1,121 @@
+"""This module contains the detection code for potentially insecure low-level
+calls."""
+
+from mythril.analysis import solver
+from mythril.analysis.potential_issues import (
+    PotentialIssue,
+    get_potential_issues_annotation,
+)
+from mythril.analysis.swc_data import REENTRANCY
+from mythril.laser.ethereum.state.constraints import Constraints
+from mythril.laser.ethereum.transaction.symbolic import ACTORS
+from mythril.analysis.module.base import DetectionModule, EntryPoint
+from mythril.laser.smt import UGT, symbol_factory, Or, BitVec
+from mythril.laser.ethereum.natives import PRECOMPILE_COUNT
+from mythril.laser.ethereum.state.global_state import GlobalState
+from mythril.exceptions import UnsatError
+from copy import copy
+import logging
+
+log = logging.getLogger(__name__)
+
+DESCRIPTION = """
+
+Search for external calls with unrestricted gas to a user-specified address.
+
+"""
+
+
+def _is_precompile_call(global_state: GlobalState):
+    to: BitVec = global_state.mstate.stack[-2]
+    constraints: Constraints = copy(global_state.world_state.constraints)
+    constraints += [
+        Or(
+            to < symbol_factory.BitVecVal(1, 256),
+            to > symbol_factory.BitVecVal(PRECOMPILE_COUNT, 256),
+        )
+    ]
+
+    try:
+        solver.get_model(constraints)
+        return False
+    except UnsatError:
+        return True
+
+
+class ExternalCalls(DetectionModule):
+    """This module searches for low level calls (e.g. call.value()) that
+    forward all gas to the callee."""
+
+    name = "External call to another contract"
+    swc_id = REENTRANCY
+    description = DESCRIPTION
+    entry_point = EntryPoint.CALLBACK
+    pre_hooks = ["CALL"]
+
+    def _execute(self, state: GlobalState) -> None:
+        """
+
+        :param state:
+        :return:
+        """
+
+        potential_issues = self._analyze_state(state)
+
+        annotation = get_potential_issues_annotation(state)
+        annotation.potential_issues.extend(potential_issues)
+
+    def _analyze_state(self, state: GlobalState):
+        """
+
+        :param state:
+        :return:
+        """
+        if state.environment.active_function_name == "constructor":
+            return []
+
+        gas = state.mstate.stack[-1]
+        to = state.mstate.stack[-2]
+
+        address = state.get_current_instruction()["address"]
+
+        try:
+            constraints = Constraints(
+                [UGT(gas, symbol_factory.BitVecVal(2300, 256)), to == ACTORS.attacker]
+            )
+
+            solver.get_transaction_sequence(
+                state, constraints + state.world_state.constraints
+            )
+
+            description_head = "A call to a user-supplied address is executed."
+            description_tail = (
+                "An external message call to an address specified by the caller is executed. Note that "
+                "the callee account might contain arbitrary code and could re-enter any function "
+                "within this contract. Reentering the contract in an intermediate state may lead to "
+                "unexpected behaviour. Make sure that no state modifications "
+                "are executed after this call and/or reentrancy guards are in place."
+            )
+
+            issue = PotentialIssue(
+                contract=state.environment.active_account.contract_name,
+                function_name=state.environment.active_function_name,
+                address=address,
+                swc_id=REENTRANCY,
+                title="External Call To User-Supplied Address",
+                bytecode=state.environment.code.bytecode,
+                severity="Low",
+                description_head=description_head,
+                description_tail=description_tail,
+                constraints=constraints,
+                detector=self,
+            )
+
+        except UnsatError:
+            log.debug("[EXTERNAL_CALLS] No model found.")
+            return []
+
+        return [issue]
+
+
+detector = ExternalCalls()
diff --git a/mythril_sol/analysis/module/modules/integer.py b/mythril_sol/analysis/module/modules/integer.py
new file mode 100644
index 0000000000000000000000000000000000000000..5afacda4e01b313bae713d42a499fd727fd74dc5
--- /dev/null
+++ b/mythril_sol/analysis/module/modules/integer.py
@@ -0,0 +1,349 @@
+"""This module contains the detection code for integer overflows and
+underflows."""
+
+from math import log2, ceil
+from typing import cast, List, Set
+from mythril.analysis import solver
+from mythril.analysis.issue_annotation import IssueAnnotation
+from mythril.analysis.report import Issue
+from mythril.analysis.swc_data import INTEGER_OVERFLOW_AND_UNDERFLOW
+from mythril.exceptions import UnsatError
+from mythril.laser.ethereum.state.global_state import GlobalState
+from mythril.laser.ethereum.state.annotation import StateAnnotation
+from mythril.analysis.module.base import DetectionModule, EntryPoint
+from copy import copy
+
+from mythril.laser.smt import (
+    BVAddNoOverflow,
+    BVSubNoUnderflow,
+    BVMulNoOverflow,
+    BitVec,
+    If,
+    symbol_factory,
+    Not,
+    Expression,
+    Bool,
+    And,
+)
+
+import logging
+
+log = logging.getLogger(__name__)
+
+
+class OverUnderflowAnnotation:
+    """Symbol Annotation used if a BitVector can overflow"""
+
+    def __init__(
+        self, overflowing_state: GlobalState, operator: str, constraint: Bool
+    ) -> None:
+        self.overflowing_state = overflowing_state
+        self.operator = operator
+        self.constraint = constraint
+
+    def __deepcopy__(self, memodict={}):
+        new_annotation = copy(self)
+        return new_annotation
+
+
+class OverUnderflowStateAnnotation(StateAnnotation):
+    """State Annotation used if an overflow is both possible and used in the annotated path"""
+
+    def __init__(self) -> None:
+        self.overflowing_state_annotations: Set[OverUnderflowAnnotation] = set()
+
+    def __copy__(self):
+        new_annotation = OverUnderflowStateAnnotation()
+
+        new_annotation.overflowing_state_annotations = copy(
+            self.overflowing_state_annotations
+        )
+
+        return new_annotation
+
+
+class IntegerArithmetics(DetectionModule):
+    """This module searches for integer over- and underflows."""
+
+    name = "Integer overflow or underflow"
+    swc_id = INTEGER_OVERFLOW_AND_UNDERFLOW
+    description = (
+        "For every SUB instruction, check if there's a possible state "
+        "where op1 > op0. For every ADD, MUL instruction, check if "
+        "there's a possible state where op1 + op0 > 2^32 - 1"
+    )
+    entry_point = EntryPoint.CALLBACK
+    pre_hooks = [
+        "ADD",
+        "MUL",
+        "EXP",
+        "SUB",
+        "SSTORE",
+        "JUMPI",
+        "STOP",
+        "RETURN",
+        "CALL",
+    ]
+
+    def __init__(self) -> None:
+        """
+        Cache satisfiability of overflow constraints
+        """
+        super().__init__()
+
+        self._ostates_satisfiable: Set[GlobalState] = set()
+        self._ostates_unsatisfiable: Set[GlobalState] = set()
+
+    def reset_module(self):
+        """
+        Resets the module
+        :return:
+        """
+        super().reset_module()
+        self._ostates_satisfiable = set()
+        self._ostates_unsatisfiable = set()
+
+    def _execute(self, state: GlobalState) -> List[Issue]:
+        """Executes analysis module for integer underflow and integer overflow.
+
+        :param state: Statespace to analyse
+        :return: Found issues
+        """
+
+        opcode = state.get_current_instruction()["opcode"]
+
+        funcs = {
+            "ADD": [self._handle_add],
+            "SUB": [self._handle_sub],
+            "MUL": [self._handle_mul],
+            "SSTORE": [self._handle_sstore],
+            "JUMPI": [self._handle_jumpi],
+            "CALL": [self._handle_call],
+            "RETURN": [self._handle_return, self._handle_transaction_end],
+            "STOP": [self._handle_transaction_end],
+            "EXP": [self._handle_exp],
+        }
+        results = []
+        for func in funcs[opcode]:
+            result = func(state)
+            if result and len(result) > 0:
+                results += result
+        return results
+
+    def _get_args(self, state):
+        stack = state.mstate.stack
+        op0, op1 = (
+            self._make_bitvec_if_not(stack, -1),
+            self._make_bitvec_if_not(stack, -2),
+        )
+        return op0, op1
+
+    def _handle_add(self, state):
+        op0, op1 = self._get_args(state)
+        c = Not(BVAddNoOverflow(op0, op1, False))
+
+        annotation = OverUnderflowAnnotation(state, "addition", c)
+        op0.annotate(annotation)
+
+    def _handle_mul(self, state):
+        op0, op1 = self._get_args(state)
+        c = Not(BVMulNoOverflow(op0, op1, False))
+
+        annotation = OverUnderflowAnnotation(state, "multiplication", c)
+        op0.annotate(annotation)
+
+    def _handle_sub(self, state):
+        op0, op1 = self._get_args(state)
+        c = Not(BVSubNoUnderflow(op0, op1, False))
+
+        annotation = OverUnderflowAnnotation(state, "subtraction", c)
+        op0.annotate(annotation)
+
+    def _handle_exp(self, state):
+        op0, op1 = self._get_args(state)
+
+        if (op1.symbolic is False and op1.value == 0) or (
+            op0.symbolic is False and op0.value < 2
+        ):
+            return
+        if op0.symbolic and op1.symbolic:
+            constraint = And(
+                op1 > symbol_factory.BitVecVal(256, 256),
+                op0 > symbol_factory.BitVecVal(1, 256),
+            )
+        elif op0.symbolic:
+            constraint = op0 >= symbol_factory.BitVecVal(
+                2 ** ceil(256 / op1.value), 256
+            )
+        else:
+            constraint = op1 >= symbol_factory.BitVecVal(
+                ceil(256 / log2(op0.value)), 256
+            )
+
+        annotation = OverUnderflowAnnotation(state, "exponentiation", constraint)
+        op0.annotate(annotation)
+
+    @staticmethod
+    def _make_bitvec_if_not(stack, index):
+        value = stack[index]
+        if isinstance(value, BitVec):
+            return value
+        if isinstance(value, Bool):
+            return If(value, 1, 0)
+        stack[index] = symbol_factory.BitVecVal(value, 256)
+        return stack[index]
+
+    @staticmethod
+    def _get_title(_type):
+        return "Integer {}".format(_type)
+
+    @staticmethod
+    def _handle_sstore(state: GlobalState) -> None:
+
+        stack = state.mstate.stack
+        value = stack[-2]
+
+        if not isinstance(value, Expression):
+            return
+
+        state_annotation = _get_overflowunderflow_state_annotation(state)
+        for annotation in value.annotations:
+            if isinstance(annotation, OverUnderflowAnnotation):
+                state_annotation.overflowing_state_annotations.add(annotation)
+
+    @staticmethod
+    def _handle_jumpi(state):
+
+        stack = state.mstate.stack
+        value = stack[-2]
+
+        state_annotation = _get_overflowunderflow_state_annotation(state)
+
+        for annotation in value.annotations:
+            if isinstance(annotation, OverUnderflowAnnotation):
+                state_annotation.overflowing_state_annotations.add(annotation)
+
+    @staticmethod
+    def _handle_call(state):
+
+        stack = state.mstate.stack
+        value = stack[-3]
+
+        state_annotation = _get_overflowunderflow_state_annotation(state)
+
+        for annotation in value.annotations:
+            if isinstance(annotation, OverUnderflowAnnotation):
+                state_annotation.overflowing_state_annotations.add(annotation)
+
+    @staticmethod
+    def _handle_return(state: GlobalState) -> None:
+        """
+        Adds all the annotations into the state which correspond to the
+        locations in the memory returned by RETURN opcode.
+        :param state: The Global State
+        """
+
+        stack = state.mstate.stack
+        offset, length = stack[-1], stack[-2]
+
+        state_annotation = _get_overflowunderflow_state_annotation(state)
+
+        for element in state.mstate.memory[offset : offset + length]:
+
+            if not isinstance(element, Expression):
+                continue
+
+            for annotation in element.annotations:
+                if isinstance(annotation, OverUnderflowAnnotation):
+                    state_annotation.overflowing_state_annotations.add(annotation)
+
+    def _handle_transaction_end(self, state: GlobalState) -> List[Issue]:
+
+        state_annotation = _get_overflowunderflow_state_annotation(state)
+        issues = []
+        for annotation in state_annotation.overflowing_state_annotations:
+
+            ostate = annotation.overflowing_state
+
+            if ostate in self._ostates_unsatisfiable:
+                continue
+
+            if ostate not in self._ostates_satisfiable:
+                try:
+                    constraints = ostate.world_state.constraints + [
+                        annotation.constraint
+                    ]
+                    solver.get_model(constraints)
+                    self._ostates_satisfiable.add(ostate)
+                except:
+                    self._ostates_unsatisfiable.add(ostate)
+                    continue
+
+            log.debug(
+                "Checking overflow in {} at transaction end address {}, ostate address {}".format(
+                    state.get_current_instruction()["opcode"],
+                    state.get_current_instruction()["address"],
+                    ostate.get_current_instruction()["address"],
+                )
+            )
+
+            try:
+
+                constraints = state.world_state.constraints + [annotation.constraint]
+                transaction_sequence = solver.get_transaction_sequence(
+                    state, constraints
+                )
+            except UnsatError:
+                continue
+
+            description_head = "The arithmetic operator can {}.".format(
+                "underflow" if annotation.operator == "subtraction" else "overflow"
+            )
+            description_tail = "It is possible to cause an integer overflow or underflow in the arithmetic operation. "
+            "Prevent this by constraining inputs using the require() statement or use the OpenZeppelin "
+            "SafeMath library for integer arithmetic operations. "
+            "Refer to the transaction trace generated for this issue to reproduce the issue."
+
+            issue = Issue(
+                contract=ostate.environment.active_account.contract_name,
+                function_name=ostate.environment.active_function_name,
+                address=ostate.get_current_instruction()["address"],
+                swc_id=INTEGER_OVERFLOW_AND_UNDERFLOW,
+                bytecode=ostate.environment.code.bytecode,
+                title="Integer Arithmetic Bugs",
+                severity="High",
+                description_head=description_head,
+                description_tail=description_tail,
+                gas_used=(state.mstate.min_gas_used, state.mstate.max_gas_used),
+                transaction_sequence=transaction_sequence,
+            )
+            state.annotate(
+                IssueAnnotation(
+                    issue=issue, detector=self, conditions=[And(*constraints)]
+                )
+            )
+            issues.append(issue)
+        return issues
+
+
+detector = IntegerArithmetics()
+
+
+def _get_address_from_state(state):
+    return state.get_current_instruction()["address"]
+
+
+def _get_overflowunderflow_state_annotation(
+    state: GlobalState,
+) -> OverUnderflowStateAnnotation:
+    state_annotations = cast(
+        List[OverUnderflowStateAnnotation],
+        list(state.get_annotations(OverUnderflowStateAnnotation)),
+    )
+
+    if len(state_annotations) == 0:
+        state_annotation = OverUnderflowStateAnnotation()
+        state.annotate(state_annotation)
+        return state_annotation
+    else:
+        return state_annotations[0]
diff --git a/mythril_sol/analysis/module/modules/multiple_sends.py b/mythril_sol/analysis/module/modules/multiple_sends.py
new file mode 100644
index 0000000000000000000000000000000000000000..c46bd0775a47bc75b8ebf0f9e58ea3a40cbceba9
--- /dev/null
+++ b/mythril_sol/analysis/module/modules/multiple_sends.py
@@ -0,0 +1,105 @@
+"""This module contains the detection code to find multiple sends occurring in
+a single transaction."""
+from copy import copy
+from typing import cast, List
+from mythril.analysis.issue_annotation import IssueAnnotation
+from mythril.analysis.report import Issue
+from mythril.analysis.solver import get_transaction_sequence, UnsatError
+from mythril.analysis.swc_data import MULTIPLE_SENDS
+from mythril.analysis.module.base import DetectionModule, EntryPoint
+from mythril.laser.ethereum.state.annotation import StateAnnotation
+from mythril.laser.ethereum.state.global_state import GlobalState
+from mythril.laser.smt import And
+import logging
+
+log = logging.getLogger(__name__)
+
+
+class MultipleSendsAnnotation(StateAnnotation):
+    def __init__(self) -> None:
+        self.call_offsets: List[int] = []
+
+    def __copy__(self):
+        result = MultipleSendsAnnotation()
+        result.call_offsets = copy(self.call_offsets)
+        return result
+
+
+class MultipleSends(DetectionModule):
+    """This module checks for multiple sends in a single transaction."""
+
+    name = "Multiple external calls in the same transaction"
+    swc_id = MULTIPLE_SENDS
+    description = "Check for multiple sends in a single transaction"
+    entry_point = EntryPoint.CALLBACK
+    pre_hooks = ["CALL", "DELEGATECALL", "STATICCALL", "CALLCODE", "RETURN", "STOP"]
+
+    def _execute(self, state: GlobalState) -> None:
+        return self._analyze_state(state)
+
+    def _analyze_state(self, state: GlobalState):
+        """
+        :param state: the current state
+        :return: returns the issues for that corresponding state
+        """
+        instruction = state.get_current_instruction()
+
+        annotations = cast(
+            List[MultipleSendsAnnotation],
+            list(state.get_annotations(MultipleSendsAnnotation)),
+        )
+        if len(annotations) == 0:
+            state.annotate(MultipleSendsAnnotation())
+            annotations = cast(
+                List[MultipleSendsAnnotation],
+                list(state.get_annotations(MultipleSendsAnnotation)),
+            )
+
+        call_offsets = annotations[0].call_offsets
+
+        if instruction["opcode"] in ["CALL", "DELEGATECALL", "STATICCALL", "CALLCODE"]:
+            call_offsets.append(state.get_current_instruction()["address"])
+
+        else:  # RETURN or STOP
+
+            for offset in call_offsets[1:]:
+                try:
+                    transaction_sequence = get_transaction_sequence(
+                        state, state.world_state.constraints
+                    )
+                except UnsatError:
+                    continue
+                description_tail = (
+                    "This call is executed following another call within the same transaction. It is possible "
+                    "that the call never gets executed if a prior call fails permanently. This might be caused "
+                    "intentionally by a malicious callee. If possible, refactor the code such that each transaction "
+                    "only executes one external call or "
+                    "make sure that all callees can be trusted (i.e. they’re part of your own codebase)."
+                )
+
+                issue = Issue(
+                    contract=state.environment.active_account.contract_name,
+                    function_name=state.environment.active_function_name,
+                    address=offset,
+                    swc_id=MULTIPLE_SENDS,
+                    bytecode=state.environment.code.bytecode,
+                    title="Multiple Calls in a Single Transaction",
+                    severity="Low",
+                    description_head="Multiple calls are executed in the same transaction.",
+                    description_tail=description_tail,
+                    gas_used=(state.mstate.min_gas_used, state.mstate.max_gas_used),
+                    transaction_sequence=transaction_sequence,
+                )
+                state.annotate(
+                    IssueAnnotation(
+                        conditions=[And(*state.world_state.constraints)],
+                        issue=issue,
+                        detector=self,
+                    )
+                )
+                return [issue]
+
+        return []
+
+
+detector = MultipleSends()
diff --git a/mythril_sol/analysis/module/modules/state_change_external_calls.py b/mythril_sol/analysis/module/modules/state_change_external_calls.py
new file mode 100644
index 0000000000000000000000000000000000000000..a74bdae99b8386d2ed54f0ebfe61d5ce8ded3a47
--- /dev/null
+++ b/mythril_sol/analysis/module/modules/state_change_external_calls.py
@@ -0,0 +1,205 @@
+from mythril.analysis.potential_issues import (
+    PotentialIssue,
+    get_potential_issues_annotation,
+)
+from mythril.analysis.swc_data import REENTRANCY
+from mythril.analysis.module.base import DetectionModule, EntryPoint
+from mythril.laser.ethereum.state.constraints import Constraints
+from mythril.laser.smt import symbol_factory, UGT, BitVec, Or
+from mythril.laser.ethereum.state.global_state import GlobalState
+from mythril.laser.ethereum.state.annotation import StateAnnotation
+from mythril.analysis import solver
+from mythril.exceptions import UnsatError
+from typing import List, cast, Optional
+from copy import copy
+
+import logging
+
+log = logging.getLogger(__name__)
+
+DESCRIPTION = """
+
+Check whether the account state is accesses after the execution of an external call
+"""
+
+CALL_LIST = ["CALL", "DELEGATECALL", "CALLCODE"]
+STATE_READ_WRITE_LIST = ["SSTORE", "SLOAD", "CREATE", "CREATE2"]
+
+
+class StateChangeCallsAnnotation(StateAnnotation):
+    def __init__(self, call_state: GlobalState, user_defined_address: bool) -> None:
+        self.call_state = call_state
+        self.state_change_states: List[GlobalState] = []
+        self.user_defined_address = user_defined_address
+
+    def __copy__(self):
+        new_annotation = StateChangeCallsAnnotation(
+            self.call_state, self.user_defined_address
+        )
+        new_annotation.state_change_states = self.state_change_states[:]
+        return new_annotation
+
+    def get_issue(
+        self, global_state: GlobalState, detector: DetectionModule
+    ) -> Optional[PotentialIssue]:
+
+        if not self.state_change_states:
+            return None
+        constraints = Constraints()
+        gas = self.call_state.mstate.stack[-1]
+        to = self.call_state.mstate.stack[-2]
+        constraints += [
+            UGT(gas, symbol_factory.BitVecVal(2300, 256)),
+            Or(
+                to > symbol_factory.BitVecVal(16, 256),
+                to == symbol_factory.BitVecVal(0, 256),
+            ),
+        ]
+        if self.user_defined_address:
+            constraints += [to == 0xDEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEF]
+
+        try:
+            solver.get_transaction_sequence(
+                global_state, constraints + global_state.world_state.constraints
+            )
+        except UnsatError:
+            return None
+
+        severity = "Medium" if self.user_defined_address else "Low"
+        address = global_state.get_current_instruction()["address"]
+        logging.debug(
+            "[EXTERNAL_CALLS] Detected state changes at addresses: {}".format(address)
+        )
+        read_or_write = "Write to"
+        if global_state.get_current_instruction()["opcode"] == "SLOAD":
+            read_or_write = "Read of"
+        address_type = "user defined" if self.user_defined_address else "fixed"
+        description_head = "{} persistent state following external call".format(
+            read_or_write
+        )
+        description_tail = (
+            "The contract account state is accessed after an external call to a {} address. "
+            "To prevent reentrancy issues, consider accessing the state only before the call, especially if the callee is untrusted. "
+            "Alternatively, a reentrancy lock can be used to prevent "
+            "untrusted callees from re-entering the contract in an intermediate state.".format(
+                address_type
+            )
+        )
+
+        return PotentialIssue(
+            contract=global_state.environment.active_account.contract_name,
+            function_name=global_state.environment.active_function_name,
+            address=address,
+            title="State access after external call",
+            severity=severity,
+            description_head=description_head,
+            description_tail=description_tail,
+            swc_id=REENTRANCY,
+            bytecode=global_state.environment.code.bytecode,
+            constraints=constraints,
+            detector=detector,
+        )
+
+
+class StateChangeAfterCall(DetectionModule):
+    """This module searches for state change after low level calls (e.g. call.value()) that
+    forward gas to the callee."""
+
+    name = "State change after an external call"
+    swc_id = REENTRANCY
+    description = DESCRIPTION
+    entry_point = EntryPoint.CALLBACK
+    pre_hooks = CALL_LIST + STATE_READ_WRITE_LIST
+
+    def _execute(self, state: GlobalState) -> None:
+        issues = self._analyze_state(state)
+
+        annotation = get_potential_issues_annotation(state)
+        annotation.potential_issues.extend(issues)
+
+    @staticmethod
+    def _add_external_call(global_state: GlobalState) -> None:
+        gas = global_state.mstate.stack[-1]
+        to = global_state.mstate.stack[-2]
+        try:
+            constraints = copy(global_state.world_state.constraints)
+            solver.get_model(
+                constraints
+                + [
+                    UGT(gas, symbol_factory.BitVecVal(2300, 256)),
+                    Or(
+                        to > symbol_factory.BitVecVal(16, 256),
+                        to == symbol_factory.BitVecVal(0, 256),
+                    ),
+                ]
+            )
+
+            # Check whether we can also set the callee address
+            try:
+                constraints += [to == 0xDEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEF]
+                solver.get_model(constraints)
+
+                global_state.annotate(StateChangeCallsAnnotation(global_state, True))
+            except UnsatError:
+                global_state.annotate(StateChangeCallsAnnotation(global_state, False))
+        except UnsatError:
+            pass
+
+    def _analyze_state(self, global_state: GlobalState) -> List[PotentialIssue]:
+
+        if global_state.environment.active_function_name == "constructor":
+            return []
+
+        annotations = cast(
+            List[StateChangeCallsAnnotation],
+            list(global_state.get_annotations(StateChangeCallsAnnotation)),
+        )
+        op_code = global_state.get_current_instruction()["opcode"]
+
+        if len(annotations) == 0 and op_code in STATE_READ_WRITE_LIST:
+            return []
+
+        if op_code in STATE_READ_WRITE_LIST:
+            for annotation in annotations:
+                annotation.state_change_states.append(global_state)
+
+        # Record state changes following from a transfer of ether
+        if op_code in CALL_LIST:
+            value: BitVec = global_state.mstate.stack[-3]
+            if StateChangeAfterCall._balance_change(value, global_state):
+                for annotation in annotations:
+                    annotation.state_change_states.append(global_state)
+
+        # Record external calls
+        if op_code in CALL_LIST:
+            StateChangeAfterCall._add_external_call(global_state)
+
+        # Check for vulnerabilities
+        vulnerabilities = []
+        for annotation in annotations:
+            if not annotation.state_change_states:
+                continue
+            issue = annotation.get_issue(global_state, self)
+            if issue:
+                vulnerabilities.append(issue)
+        return vulnerabilities
+
+    @staticmethod
+    def _balance_change(value: BitVec, global_state: GlobalState) -> bool:
+        if not value.symbolic:
+            assert value.value is not None
+            return value.value > 0
+
+        else:
+            constraints = copy(global_state.world_state.constraints)
+
+            try:
+                solver.get_model(
+                    constraints + [value > symbol_factory.BitVecVal(0, 256)]
+                )
+                return True
+            except UnsatError:
+                return False
+
+
+detector = StateChangeAfterCall()
diff --git a/mythril_sol/analysis/module/modules/suicide.py b/mythril_sol/analysis/module/modules/suicide.py
new file mode 100644
index 0000000000000000000000000000000000000000..9f61164ffba7f0f27757fb5601db24c1d069402e
--- /dev/null
+++ b/mythril_sol/analysis/module/modules/suicide.py
@@ -0,0 +1,126 @@
+from mythril.analysis import solver
+from mythril.analysis.report import Issue
+from mythril.analysis.swc_data import UNPROTECTED_SELFDESTRUCT
+from mythril.exceptions import UnsatError
+from mythril.analysis.issue_annotation import IssueAnnotation
+from mythril.analysis.module.base import DetectionModule, EntryPoint
+from mythril.laser.ethereum.state.global_state import GlobalState
+from mythril.laser.ethereum.transaction.symbolic import ACTORS
+from mythril.laser.smt.bool import And
+from mythril.laser.ethereum.transaction.transaction_models import (
+    ContractCreationTransaction,
+)
+import logging
+from mythril.laser.ethereum.function_managers import keccak_function_manager
+
+
+log = logging.getLogger(__name__)
+
+DESCRIPTION = """
+Check if the contact can be 'accidentally' killed by anyone.
+For kill-able contracts, also check whether it is possible to direct the contract balance to the attacker.
+"""
+
+
+class AccidentallyKillable(DetectionModule):
+    """This module checks if the contact can be 'accidentally' killed by
+    anyone."""
+
+    name = "Contract can be accidentally killed by anyone"
+    swc_id = UNPROTECTED_SELFDESTRUCT
+    description = DESCRIPTION
+    entry_point = EntryPoint.CALLBACK
+    pre_hooks = ["SELFDESTRUCT"]
+
+    def __init__(self):
+        super().__init__()
+        self._cache_address = {}
+
+    def reset_module(self):
+        """
+        Resets the module
+        :return:
+        """
+        super().reset_module()
+
+    def _execute(self, state: GlobalState) -> None:
+        """
+
+        :param state:
+        :return:
+        """
+        return self._analyze_state(state)
+
+    def _analyze_state(self, state):
+        log.info("Suicide module: Analyzing suicide instruction")
+        instruction = state.get_current_instruction()
+
+        to = state.mstate.stack[-1]
+
+        log.debug("SELFDESTRUCT in function %s", state.environment.active_function_name)
+
+        description_head = "Any sender can cause the contract to self-destruct."
+
+        attacker_constraints = []
+
+        for tx in state.world_state.transaction_sequence:
+            if not isinstance(tx, ContractCreationTransaction):
+                attacker_constraints.append(
+                    And(tx.caller == ACTORS.attacker, tx.caller == tx.origin)
+                )
+        try:
+            try:
+                constraints = (
+                    state.world_state.constraints
+                    + [to == ACTORS.attacker]
+                    + attacker_constraints
+                )
+                transaction_sequence = solver.get_transaction_sequence(
+                    state, constraints
+                )
+
+                description_tail = (
+                    "Any sender can trigger execution of the SELFDESTRUCT instruction to destroy this "
+                    "contract account and withdraw its balance to an arbitrary address. Review the transaction trace "
+                    "generated for this issue and make sure that appropriate security controls are in place to prevent "
+                    "unrestricted access."
+                )
+
+            except UnsatError:
+                constraints = state.world_state.constraints + attacker_constraints
+                transaction_sequence = solver.get_transaction_sequence(
+                    state, constraints
+                )
+                description_tail = (
+                    "Any sender can trigger execution of the SELFDESTRUCT instruction to destroy this "
+                    "contract account. Review the transaction trace generated for this issue and make sure that "
+                    "appropriate security controls are in place to prevent unrestricted access."
+                )
+
+            issue = Issue(
+                contract=state.environment.active_account.contract_name,
+                function_name=state.environment.active_function_name,
+                address=instruction["address"],
+                swc_id=UNPROTECTED_SELFDESTRUCT,
+                bytecode=state.environment.code.bytecode,
+                title="Unprotected Selfdestruct",
+                severity="High",
+                description_head=description_head,
+                description_tail=description_tail,
+                transaction_sequence=transaction_sequence,
+                gas_used=(state.mstate.min_gas_used, state.mstate.max_gas_used),
+            )
+            state.annotate(
+                IssueAnnotation(
+                    conditions=[And(*constraints)], issue=issue, detector=self
+                )
+            )
+
+            return [issue]
+        except UnsatError:
+            log.debug("No model found")
+
+        return []
+
+
+detector = AccidentallyKillable()
diff --git a/mythril_sol/analysis/module/modules/unchecked_retval.py b/mythril_sol/analysis/module/modules/unchecked_retval.py
new file mode 100644
index 0000000000000000000000000000000000000000..b6a1e0ecfc89f4d72a74623c43ee57462f0156fe
--- /dev/null
+++ b/mythril_sol/analysis/module/modules/unchecked_retval.py
@@ -0,0 +1,145 @@
+"""This module contains detection code to find occurrences of calls whose
+return value remains unchecked."""
+from copy import copy
+from typing import cast, List
+
+from mythril.analysis import solver
+from mythril.analysis.issue_annotation import IssueAnnotation
+from mythril.analysis.report import Issue
+from mythril.analysis.swc_data import UNCHECKED_RET_VAL
+from mythril.analysis.module.base import DetectionModule, EntryPoint
+from mythril.exceptions import UnsatError
+from mythril.laser.smt import And
+from mythril.laser.smt.bitvec import BitVec
+from mythril.laser.ethereum.state.annotation import StateAnnotation
+from mythril.laser.ethereum.state.global_state import GlobalState
+
+import logging
+from typing_extensions import TypedDict
+
+log = logging.getLogger(__name__)
+
+
+class RetVal(TypedDict):
+    address: int
+    retval: BitVec
+
+
+class UncheckedRetvalAnnotation(StateAnnotation):
+    def __init__(self) -> None:
+        self.retvals: List[RetVal] = []
+
+    def __copy__(self):
+        result = UncheckedRetvalAnnotation()
+        result.retvals = copy(self.retvals)
+        return result
+
+
+class UncheckedRetval(DetectionModule):
+    """A detection module to test whether CALL return value is checked."""
+
+    name = "Return value of an external call is not checked"
+    swc_id = UNCHECKED_RET_VAL
+    description = (
+        "Test whether CALL return value is checked. "
+        "For direct calls, the Solidity compiler auto-generates this check. E.g.:\n"
+        "    Alice c = Alice(address);\n"
+        "    c.ping(42);\n"
+        "Here the CALL will be followed by IZSERO(retval), if retval = ZERO then state is reverted. "
+        "For low-level-calls this check is omitted. E.g.:\n"
+        '    c.call.value(0)(bytes4(sha3("ping(uint256)")),1);'
+    )
+    entry_point = EntryPoint.CALLBACK
+    pre_hooks = ["STOP", "RETURN"]
+    post_hooks = ["CALL", "DELEGATECALL", "STATICCALL", "CALLCODE"]
+
+    def _execute(self, state: GlobalState) -> List[Issue]:
+        """
+
+        :param state:
+        :return:
+        """
+        return self._analyze_state(state)
+
+    def _analyze_state(self, state: GlobalState) -> list:
+        instruction = state.get_current_instruction()
+
+        annotations = cast(
+            List[UncheckedRetvalAnnotation],
+            [a for a in state.get_annotations(UncheckedRetvalAnnotation)],
+        )
+        if len(annotations) == 0:
+            state.annotate(UncheckedRetvalAnnotation())
+            annotations = cast(
+                List[UncheckedRetvalAnnotation],
+                [a for a in state.get_annotations(UncheckedRetvalAnnotation)],
+            )
+
+        retvals = annotations[0].retvals
+
+        if instruction["opcode"] in ("STOP", "RETURN"):
+            issues = []
+            for retval in retvals:
+                try:
+                    """
+                    To check whether retval is unconstrained we are checking it against retval = 0 and retval = 1
+                    """
+                    solver.get_transaction_sequence(
+                        state, state.world_state.constraints + [retval["retval"] == 1]
+                    )
+                    transaction_sequence = solver.get_transaction_sequence(
+                        state, state.world_state.constraints + [retval["retval"] == 0]
+                    )
+                except UnsatError:
+                    continue
+
+                description_tail = (
+                    "External calls return a boolean value. If the callee halts with an exception, 'false' is "
+                    "returned and execution continues in the caller. "
+                    "The caller should check whether an exception happened and react accordingly to avoid unexpected behavior. "
+                    "For example it is often desirable to wrap external calls in require() so the transaction is reverted if the call fails."
+                )
+
+                issue = Issue(
+                    contract=state.environment.active_account.contract_name,
+                    function_name=state.environment.active_function_name,
+                    address=retval["address"],
+                    bytecode=state.environment.code.bytecode,
+                    title="Unchecked return value from external call.",
+                    swc_id=UNCHECKED_RET_VAL,
+                    severity="Medium",
+                    description_head="The return value of a message call is not checked.",
+                    description_tail=description_tail,
+                    gas_used=(state.mstate.min_gas_used, state.mstate.max_gas_used),
+                    transaction_sequence=transaction_sequence,
+                )
+                conditions = [
+                    And(*(state.world_state.constraints + [retval["retval"] == 1])),
+                    And(*(state.world_state.constraints + [retval["retval"] == 0])),
+                ]
+
+                state.annotate(
+                    IssueAnnotation(conditions=conditions, issue=issue, detector=self)
+                )
+
+                issues.append(issue)
+
+            return issues
+        else:
+            log.debug("End of call, extracting retval")
+
+            if state.environment.code.instruction_list[state.mstate.pc - 1][
+                "opcode"
+            ] not in ["CALL", "DELEGATECALL", "STATICCALL", "CALLCODE"]:
+                # Return is pointless with OOG. The pc does not get updated in such cases
+                return []
+
+            return_value = state.mstate.stack[-1]
+            retvals.append(
+                {"address": state.instruction["address"] - 1, "retval": return_value}
+            )
+
+        return []
+
+
+detector = UncheckedRetval()
diff --git a/mythril_sol/analysis/module/modules/user_assertions.py b/mythril_sol/analysis/module/modules/user_assertions.py
new file mode 100644
index 0000000000000000000000000000000000000000..c720725530b252110811b9e6d4ef74f31a0b604e
--- /dev/null
+++ b/mythril_sol/analysis/module/modules/user_assertions.py
@@ -0,0 +1,129 @@
+"""This module contains the detection code for potentially insecure low-level
+calls."""
+
+from mythril.analysis import solver
+from mythril.analysis.issue_annotation import IssueAnnotation
+from mythril.analysis.potential_issues import Issue
+from mythril.analysis.swc_data import ASSERT_VIOLATION
+from mythril.analysis.module.base import DetectionModule, EntryPoint
+from mythril.laser.ethereum.state.global_state import GlobalState
+from mythril.laser.smt import Extract, And
+from mythril.exceptions import UnsatError
+import logging
+import eth_abi
+
+log = logging.getLogger(__name__)
+
+DESCRIPTION = """
+
+Search for reachable user-supplied exceptions.
+Report a warning if an log message is emitted: 'emit AssertionFailed(string)'
+
+"""
+
+assertion_failed_hash = (
+    0xB42604CB105A16C8F6DB8A41E6B00C0C1B4826465E8BC504B3EB3E88B3E6A4A0
+)
+
+mstore_pattern = "0xcafecafecafecafecafecafecafecafecafecafecafecafecafecafecafe"
+
+
+class UserAssertions(DetectionModule):
+    """This module searches for user supplied exceptions: emit AssertionFailed("Error")."""
+
+    name = "A user-defined assertion has been triggered"
+    swc_id = ASSERT_VIOLATION
+    description = DESCRIPTION
+    entry_point = EntryPoint.CALLBACK
+    pre_hooks = ["LOG1", "MSTORE"]
+
+    def _execute(self, state: GlobalState) -> None:
+        """
+
+        :param state:
+        :return:
+        """
+
+        return self._analyze_state(state)
+
+    def _analyze_state(self, state: GlobalState):
+        """
+
+        :param state:
+        :return:
+        """
+        opcode = state.get_current_instruction()["opcode"]
+        message = None
+        if opcode == "MSTORE":
+            value = state.mstate.stack[-2]
+            if value.symbolic:
+                return []
+            if mstore_pattern not in hex(value.value)[:126]:
+                return []
+            message = "Failed property id {}".format(Extract(15, 0, value).value)
+
+        else:
+            topic, size, mem_start = state.mstate.stack[-3:]
+
+            if topic.symbolic or topic.value != assertion_failed_hash:
+                return []
+            if not mem_start.symbolic and not size.symbolic:
+                try:
+                    message = eth_abi.decode_single(
+                        "string",
+                        bytes(
+                            state.mstate.memory[
+                                mem_start.value + 32 : mem_start.value + size.value
+                            ]
+                        ),
+                    )
+                except:
+                    pass
+        try:
+            transaction_sequence = solver.get_transaction_sequence(
+                state, state.world_state.constraints
+            )
+
+            if message:
+                description_tail = (
+                    "A user-provided assertion failed with the message '{}'".format(
+                        message
+                    )
+                )
+
+            else:
+                description_tail = "A user-provided assertion failed."
+
+            log.debug("MythX assertion emitted: {}".format(description_tail))
+
+            address = state.get_current_instruction()["address"]
+
+            issue = Issue(
+                contract=state.environment.active_account.contract_name,
+                function_name=state.environment.active_function_name,
+                address=address,
+                swc_id=ASSERT_VIOLATION,
+                title="Exception State",
+                severity="Medium",
+                description_head="A user-provided assertion failed.",
+                description_tail=description_tail,
+                bytecode=state.environment.code.bytecode,
+                transaction_sequence=transaction_sequence,
+                gas_used=(state.mstate.min_gas_used, state.mstate.max_gas_used),
+            )
+            state.annotate(
+                IssueAnnotation(
+                    detector=self,
+                    issue=issue,
+                    conditions=[And(*state.world_state.constraints)],
+                )
+            )
+            return [issue]
+
+        except UnsatError:
+            log.debug("no model found")
+
+        return []
+
+
+detector = UserAssertions()
diff --git a/mythril_sol/analysis/module/util.py b/mythril_sol/analysis/module/util.py
new file mode 100644
index 0000000000000000000000000000000000000000..a8121f0605997c07fdde034b3875221446bd81d0
--- /dev/null
+++ b/mythril_sol/analysis/module/util.py
@@ -0,0 +1,50 @@
+from collections import defaultdict
+from typing import List, Optional, Callable, Mapping, Dict
+import logging
+
+from mythril.support.opcodes import OPCODES
+from mythril.analysis.module.base import DetectionModule, EntryPoint
+from mythril.analysis.module.loader import ModuleLoader
+
+log = logging.getLogger(__name__)
+OP_CODE_LIST = OPCODES.keys()
+
+
+def get_detection_module_hooks(
+    modules: List[DetectionModule], hook_type="pre"
+) -> Dict[str, List[Callable]]:
+    """Gets a dictionary with the hooks for the passed detection modules
+
+    :param modules: The modules for which to retrieve hooks
+    :param hook_type: The type  of hooks to retrieve (default: "pre")
+    :return: Dictionary with discovered hooks
+    """
+    hook_dict: Mapping[str, List[Callable]] = defaultdict(list)
+    for module in modules:
+
+        hooks = module.pre_hooks if hook_type == "pre" else module.post_hooks
+
+        for op_code in map(lambda x: x.upper(), hooks):
+            # A hook can be either OP_CODE or START*
+            # When an entry like the second is encountered we hook all opcodes that start with START
+            if op_code in OP_CODE_LIST:
+                hook_dict[op_code].append(module.execute)
+            elif op_code.endswith("*"):
+                to_register = filter(lambda x: x.startswith(op_code[:-1]), OP_CODE_LIST)
+                for actual_hook in to_register:
+                    hook_dict[actual_hook].append(module.execute)
+            else:
+                log.error(
+                    "Encountered invalid hook opcode %s in module %s",
+                    op_code,
+                    module.name,
+                )
+
+    return dict(hook_dict)
+
+
+def reset_callback_modules(module_names: Optional[List[str]] = None):
+    """Clean the issue records of every callback-based module."""
+    modules = ModuleLoader().get_detection_modules(EntryPoint.CALLBACK, module_names)
+    for module in modules:
+        module.reset_module()
diff --git a/mythril_sol/analysis/ops.py b/mythril_sol/analysis/ops.py
new file mode 100644
index 0000000000000000000000000000000000000000..c4f6ae17d91d7e0e0923e6a17565a518b25effe6
--- /dev/null
+++ b/mythril_sol/analysis/ops.py
@@ -0,0 +1,93 @@
+"""This module contains various helper methods for dealing with EVM
+operations."""
+from enum import Enum
+
+from mythril.laser.ethereum import util
+from mythril.laser.smt import simplify
+
+
+class VarType(Enum):
+    """An enum denoting whether a value is symbolic or concrete."""
+
+    SYMBOLIC = 1
+    CONCRETE = 2
+
+
+class Variable:
+    """The representation of a variable with value and type."""
+
+    def __init__(self, val, _type):
+        """
+
+        :param val:
+        :param _type:
+        """
+        self.val = val
+        self.type = _type
+
+    def __str__(self):
+        """
+
+        :return:
+        """
+        return str(self.val)
+
+
+def get_variable(i):
+    """
+
+    :param i:
+    :return:
+    """
+    try:
+        return Variable(util.get_concrete_int(i), VarType.CONCRETE)
+    except TypeError:
+        return Variable(simplify(i), VarType.SYMBOLIC)
+
+
+class Op:
+    """The base type for operations referencing current node and state."""
+
+    def __init__(self, node, state, state_index):
+        """
+
+        :param node:
+        :param state:
+        :param state_index:
+        """
+        self.node = node
+        self.state = state
+        self.state_index = state_index
+
+
+class Call(Op):
+    """The representation of a CALL operation."""
+
+    def __init__(
+        self,
+        node,
+        state,
+        state_index,
+        _type,
+        to,
+        gas,
+        value=Variable(0, VarType.CONCRETE),
+        data=None,
+    ):
+        """
+
+        :param node:
+        :param state:
+        :param state_index:
+        :param _type:
+        :param to:
+        :param gas:
+        :param value:
+        :param data:
+        """
+        super().__init__(node, state, state_index)
+        self.to = to
+        self.gas = gas
+        self.type = _type
+        self.value = value
+        self.data = data
diff --git a/mythril_sol/analysis/potential_issues.py b/mythril_sol/analysis/potential_issues.py
new file mode 100644
index 0000000000000000000000000000000000000000..603f8fcc0e1b17e9c66b026bc27ff7c75414eda7
--- /dev/null
+++ b/mythril_sol/analysis/potential_issues.py
@@ -0,0 +1,126 @@
+from mythril.analysis.report import Issue
+from mythril.analysis.issue_annotation import IssueAnnotation
+from mythril.analysis.solver import get_transaction_sequence
+from mythril.exceptions import UnsatError
+from mythril.laser.ethereum.state.annotation import StateAnnotation
+from mythril.laser.ethereum.state.global_state import GlobalState
+from mythril.laser.smt import And
+from mythril.support.support_args import args
+
+
+class PotentialIssue:
+    """Representation of a potential issue"""
+
+    def __init__(
+        self,
+        contract,
+        function_name,
+        address,
+        swc_id,
+        title,
+        bytecode,
+        detector,
+        severity=None,
+        description_head="",
+        description_tail="",
+        constraints=None,
+    ):
+        """
+
+        :param contract: The contract
+        :param function_name: Function name where the issue is detected
+        :param address: The address of the issue
+        :param swc_id: Issue's corresponding swc-id
+        :param title: Title
+        :param bytecode: bytecode of the issue
+        :param detector: The detector the potential issue belongs to
+        :param gas_used: amount of gas used
+        :param severity: The severity of the issue
+        :param description_head: The top part of description
+        :param description_tail: The bottom part of the description
+        :param constraints: The non-path related constraints for the potential issue
+        """
+        self.title = title
+        self.contract = contract
+        self.function_name = function_name
+        self.address = address
+        self.description_head = description_head
+        self.description_tail = description_tail
+        self.severity = severity
+        self.swc_id = swc_id
+        self.bytecode = bytecode
+        self.constraints = constraints or []
+        self.detector = detector
+
+
+class PotentialIssuesAnnotation(StateAnnotation):
+    def __init__(self):
+        self.potential_issues = []
+
+    @property
+    def search_importance(self):
+        return 10 * len(self.potential_issues)
+
+
+def get_potential_issues_annotation(state: GlobalState) -> PotentialIssuesAnnotation:
+    """
+    Returns the potential issues annotation of the given global state, and creates one if
+    one does not already exist.
+
+    :param state: The global state
+    :return:
+    """
+    for annotation in state.annotations:
+        if isinstance(annotation, PotentialIssuesAnnotation):
+            return annotation
+
+    annotation = PotentialIssuesAnnotation()
+    state.annotate(annotation)
+    return annotation
+
+
+def check_potential_issues(state: GlobalState) -> None:
+    """
+    Called at the end of a transaction, checks potential issues, and
+    adds valid issues to the detector.
+
+    :param state: The final global state of a transaction
+    :return:
+    """
+    annotation = get_potential_issues_annotation(state)
+    unsat_potential_issues = []
+    for potential_issue in annotation.potential_issues:
+        try:
+            transaction_sequence = get_transaction_sequence(
+                state, state.world_state.constraints + potential_issue.constraints
+            )
+        except UnsatError:
+            unsat_potential_issues.append(potential_issue)
+            continue
+
+        issue = Issue(
+            contract=potential_issue.contract,
+            function_name=potential_issue.function_name,
+            address=potential_issue.address,
+            title=potential_issue.title,
+            bytecode=potential_issue.bytecode,
+            swc_id=potential_issue.swc_id,
+            gas_used=(state.mstate.min_gas_used, state.mstate.max_gas_used),
+            severity=potential_issue.severity,
+            description_head=potential_issue.description_head,
+            description_tail=potential_issue.description_tail,
+            transaction_sequence=transaction_sequence,
+        )
+        state.annotate(
+            IssueAnnotation(
+                detector=potential_issue.detector,
+                issue=issue,
+                conditions=[
+                    And(*(state.world_state.constraints + potential_issue.constraints))
+                ],
+            )
+        )
+        if args.use_issue_annotations is False:
+            potential_issue.detector.issues.append(issue)
+            potential_issue.detector.update_cache([issue])
+    annotation.potential_issues = unsat_potential_issues
diff --git a/mythril_sol/analysis/report.py b/mythril_sol/analysis/report.py
new file mode 100644
index 0000000000000000000000000000000000000000..9568491f17533df0804c4e6ff382ef8665154d9a
--- /dev/null
+++ b/mythril_sol/analysis/report.py
@@ -0,0 +1,392 @@
+"""This module provides classes that make up an issue report."""
+import logging
+import re
+import json
+import operator
+
+try:
+    from eth_abi import decode
+except ImportError:
+    from eth_abi import decode_abi as decode
+
+from jinja2 import PackageLoader, Environment
+from typing import Dict, List, Any, Optional
+import hashlib
+
+from mythril.laser.execution_info import ExecutionInfo
+from mythril.solidity.soliditycontract import SolidityContract
+from mythril.analysis.swc_data import SWC_TO_TITLE
+from mythril.support.source_support import Source
+from mythril.support.start_time import StartTime
+from mythril.support.support_utils import get_code_hash
+from mythril.support.signatures import SignatureDB
+from time import time
+
+log = logging.getLogger(__name__)
+
+
+class Issue:
+    """Representation of an issue and its location."""
+
+    def __init__(
+        self,
+        contract: str,
+        function_name: str,
+        address: int,
+        swc_id: str,
+        title: str,
+        bytecode: str,
+        gas_used=(None, None),
+        severity=None,
+        description_head="",
+        description_tail="",
+        transaction_sequence=None,
+        source_location=None,
+    ):
+        """
+
+        :param contract: The contract
+        :param function_name: Function name where the issue is detected
+        :param address: The address of the issue
+        :param swc_id: Issue's corresponding swc-id
+        :param title: Title
+        :param bytecode: bytecode of the issue
+        :param gas_used: amount of gas used
+        :param severity: The severity of the issue
+        :param description_head: The top part of description
+        :param description_tail: The bottom part of the description
+        :param transaction_sequence: The transaction sequence
+        """
+        self.title = title
+        self.contract = contract
+        self.function = function_name
+        self.address = address
+        self.description_head = description_head
+        self.description_tail = description_tail
+        self.description = "%s\n%s" % (description_head, description_tail)
+        self.severity = severity
+        self.swc_id = swc_id
+        self.min_gas_used, self.max_gas_used = gas_used
+        self.filename = None
+        self.code = None
+        self.lineno = None
+        self.source_mapping = None
+        self.discovery_time = time() - StartTime().global_start_time
+        self.bytecode_hash = get_code_hash(bytecode)
+        self.transaction_sequence = transaction_sequence
+        self.source_location = source_location
+
+    @property
+    def transaction_sequence_users(self):
+        """Returns the transaction sequence without pre-generated block data"""
+        return self.transaction_sequence
+
+    @property
+    def transaction_sequence_jsonv2(self):
+        """Returns the transaction sequence as a json string with pre-generated block data"""
+        return (
+            self.add_block_data(self.transaction_sequence)
+            if self.transaction_sequence
+            else None
+        )
+
+    @staticmethod
+    def add_block_data(transaction_sequence: Dict):
+        """Adds sane block data to a transaction_sequence"""
+        for step in transaction_sequence["steps"]:
+            step["gasLimit"] = "0x7d000"
+            step["gasPrice"] = "0x773594000"
+            step["blockCoinbase"] = "0xcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcb"
+            step["blockDifficulty"] = "0xa7d7343662e26"
+            step["blockGasLimit"] = "0x7d0000"
+            step["blockNumber"] = "0x66e393"
+            step["blockTime"] = "0x5bfa4639"
+        return transaction_sequence
+
+    @property
+    def as_dict(self):
+        """
+
+        :return:
+        """
+
+        issue = {
+            "title": self.title,
+            "swc-id": self.swc_id,
+            "contract": self.contract,
+            "description": self.description,
+            "function": self.function,
+            "severity": self.severity,
+            "address": self.address,
+            "tx_sequence": self.transaction_sequence,
+            "min_gas_used": self.min_gas_used,
+            "max_gas_used": self.max_gas_used,
+            "sourceMap": self.source_mapping,
+        }
+
+        if self.filename and self.lineno:
+            issue["filename"] = self.filename
+            issue["lineno"] = self.lineno
+
+        if self.code:
+            issue["code"] = self.code
+
+        return issue
+
+    def _set_internal_compiler_error(self):
+        """
+        Adds the false positive to description and changes severity to low
+        """
+        self.severity = "Low"
+        self.description_tail += (
+            " This issue is reported for internal compiler generated code."
+        )
+        self.description = "%s\n%s" % (self.description_head, self.description_tail)
+        self.code = ""
+
+    def add_code_info(self, contract):
+        """
+
+        :param contract:
+        """
+        if self.address and isinstance(contract, SolidityContract):
+            is_constructor = False
+            if self.function == "constructor":
+                is_constructor = True
+
+            if self.source_location:
+                codeinfo = contract.get_source_info(
+                    self.source_location, constructor=is_constructor
+                )
+            else:
+                codeinfo = contract.get_source_info(
+                    self.address, constructor=is_constructor
+                )
+
+            if codeinfo is None:
+                self.source_mapping = self.address
+                self.filename = "Internal File"
+                return
+
+            self.filename = codeinfo.filename
+            self.code = codeinfo.code
+            self.lineno = codeinfo.lineno
+            if self.lineno is None:
+                self._set_internal_compiler_error()
+            self.source_mapping = codeinfo.solc_mapping
+        else:
+            self.source_mapping = self.address
+
+    @staticmethod
+    def decode_bytes(val):
+        if isinstance(val, bytes):
+            return val.decode()
+        elif isinstance(val, list) or isinstance(val, tuple):
+            return [Issue.decode_bytes(x) for x in val]
+        else:
+            return val
+
+    def resolve_function_names(self):
+        """Resolves function names for each step"""
+
+        if (
+            self.transaction_sequence is None
+            or "steps" not in self.transaction_sequence
+        ):
+            return
+
+        signatures = SignatureDB()
+
+        for step in self.transaction_sequence["steps"]:
+            _hash = step["input"][:10]
+
+            try:
+                sig = signatures.get(_hash)
+                # TODO: Check other mythx tools for dependency before supporting multiple possible function names
+                if len(sig) > 0:
+                    step["name"] = sig[0]
+                    step["resolved_input"] = Issue.resolve_input(
+                        step["calldata"], sig[0]
+                    )
+                    if step["resolved_input"] is not None:
+                        step["resolved_input"] = list(step["resolved_input"])
+                        for i, val in enumerate(step["resolved_input"]):
+                            step["resolved_input"][i] = Issue.decode_bytes(val)
+
+                        step["resolved_input"] = tuple(step["resolved_input"])
+
+                else:
+                    step["name"] = "unknown"
+            except ValueError:
+                step["name"] = "unknown"
+
+    @staticmethod
+    def resolve_input(data, function_name):
+        """
+        Adds decoded calldate to the tx sequence.
+        """
+        data = data[10:]
+
+        # Eliminates the first and last brackets
+        # Since signature such as func((bytes32,bytes32,uint8)[],(address[],uint32)) are valid
+        type_info = function_name[function_name.find("(") + 1 : -1]
+        type_info = re.split(r",\s*(?![^()]*\))", type_info)
+
+        if len(data) % 64 > 0:
+            data += "0" * (64 - len(data) % 64)
+        try:
+            decoded_output = decode(type_info, bytes.fromhex(data))
+            return decoded_output
+        except Exception as e:
+            return None
+
+
+class Report:
+    """A report containing the content of multiple issues."""
+
+    environment = Environment(
+        loader=PackageLoader("mythril.analysis"), trim_blocks=True
+    )
+
+    def __init__(
+        self,
+        contracts=None,
+        exceptions=None,
+        execution_info: Optional[List[ExecutionInfo]] = None,
+    ):
+        """
+
+        :param contracts:
+        :param exceptions:
+        """
+        self.issues: Dict[bytes, Issue] = {}
+        self.solc_version = ""
+        self.meta: Dict[str, Any] = {}
+        self.source = Source()
+        self.source.get_source_from_contracts_list(contracts)
+        self.exceptions = exceptions or []
+        self.execution_info = execution_info or []
+
+    def sorted_issues(self):
+        """
+
+        :return:
+        """
+        issue_list = [issue.as_dict for key, issue in self.issues.items()]
+        return sorted(issue_list, key=operator.itemgetter("address", "title"))
+
+    def append_issue(self, issue):
+        """
+
+        :param issue:
+        """
+        m = hashlib.md5()
+        m.update(
+            (issue.contract + issue.function + str(issue.address) + issue.title).encode(
+                "utf-8"
+            )
+        )
+        issue.resolve_function_names()
+        self.issues[m.digest()] = issue
+
+    def as_text(self):
+        """
+
+        :return:
+        """
+        name = self._file_name()
+        template = Report.environment.get_template("report_as_text.jinja2")
+
+        return template.render(filename=name, issues=self.sorted_issues())
+
+    def as_json(self):
+        """
+
+        :return:
+        """
+        result = {"success": True, "error": None, "issues": self.sorted_issues()}
+
+        return json.dumps(result, sort_keys=True)
+
+    def _get_exception_data(self) -> dict:
+        if not self.exceptions:
+            return {}
+        logs: List[Dict] = []
+        for exception in self.exceptions:
+            logs += [{"level": "error", "hidden": True, "msg": exception}]
+        return {"logs": logs}
+
+    def as_swc_standard_format(self):
+        """Format defined for integration and correlation.
+
+        :return:
+        """
+        # Setup issues
+        _issues = []
+
+        for _, issue in self.issues.items():
+
+            idx = self.source.get_source_index(issue.bytecode_hash)
+            try:
+                title = SWC_TO_TITLE[issue.swc_id]
+            except KeyError:
+                title = "Unspecified Security Issue"
+            extra = {"discoveryTime": int(issue.discovery_time * 10**9)}
+            if issue.transaction_sequence_jsonv2:
+                extra["testCases"] = [issue.transaction_sequence_jsonv2]
+
+            _issues.append(
+                {
+                    "swcID": "SWC-" + issue.swc_id,
+                    "swcTitle": title,
+                    "description": {
+                        "head": issue.description_head,
+                        "tail": issue.description_tail,
+                    },
+                    "severity": issue.severity,
+                    "locations": [{"sourceMap": "%d:1:%d" % (issue.address, idx)}],
+                    "extra": extra,
+                }
+            )
+        # Setup meta
+        meta_data = self.meta
+
+        # Add logs to meta
+        meta_data.update(self._get_exception_data())
+
+        # Add execution info to meta
+        analysis_duration = int(
+            round((time() - StartTime().global_start_time) * (10**9))
+        )
+        meta_data["mythril_execution_info"] = {"analysis_duration": analysis_duration}
+        for execution_info in self.execution_info:
+            meta_data["mythril_execution_info"].update(execution_info.as_dict())
+
+        result = [
+            {
+                "issues": _issues,
+                "sourceType": self.source.source_type,
+                "sourceFormat": self.source.source_format,
+                "sourceList": self.source.source_list,
+                "meta": meta_data,
+            }
+        ]
+
+        return json.dumps(result, sort_keys=True)
+
+    def as_markdown(self):
+        """
+
+        :return:
+        """
+        filename = self._file_name()
+        template = Report.environment.get_template("report_as_markdown.jinja2")
+        return template.render(filename=filename, issues=self.sorted_issues())
+
+    def _file_name(self):
+        """
+
+        :return:
+        """
+        if len(self.issues.values()) > 0:
+            return list(self.issues.values())[0].filename
diff --git a/mythril_sol/analysis/security.py b/mythril_sol/analysis/security.py
new file mode 100644
index 0000000000000000000000000000000000000000..cd81fe31ae894dee30c308e80607ffc33da2110d
--- /dev/null
+++ b/mythril_sol/analysis/security.py
@@ -0,0 +1,45 @@
+"""This module contains functionality for hooking in detection modules and
+executing them."""
+
+from mythril.analysis.module import ModuleLoader, reset_callback_modules
+from mythril.analysis.module.base import EntryPoint
+from mythril.analysis.report import Issue
+
+from typing import Optional, List
+import logging
+
+log = logging.getLogger(__name__)
+
+
+def retrieve_callback_issues(white_list: Optional[List[str]] = None) -> List[Issue]:
+    """Get the issues discovered by callback type detection modules"""
+    issues: List[Issue] = []
+    for module in ModuleLoader().get_detection_modules(
+        entry_point=EntryPoint.CALLBACK, white_list=white_list
+    ):
+        log.debug("Retrieving results for " + module.name)
+        issues += module.issues
+
+    reset_callback_modules(module_names=white_list)
+
+    return issues
+
+
+def fire_lasers(statespace, white_list: Optional[List[str]] = None) -> List[Issue]:
+    """Fire lasers at analysed statespace object
+
+    :param statespace: Symbolic statespace to analyze
+    :param white_list: Optionally whitelist modules to use for the analysis
+    :return: Discovered issues
+    """
+    log.info("Starting analysis")
+
+    issues: List[Issue] = []
+    for module in ModuleLoader().get_detection_modules(
+        entry_point=EntryPoint.POST, white_list=white_list
+    ):
+        log.info("Executing " + module.name)
+        issues += module.execute(statespace)
+
+    issues += retrieve_callback_issues(white_list)
+    return issues
diff --git a/mythril_sol/analysis/solver.py b/mythril_sol/analysis/solver.py
new file mode 100644
index 0000000000000000000000000000000000000000..df4d107636f2561698451639c6b88d173b9c8e08
--- /dev/null
+++ b/mythril_sol/analysis/solver.py
@@ -0,0 +1,259 @@
+"""This module contains analysis module helpers to solve path constraints."""
+
+from typing import Dict, List, Tuple, Union, Any
+
+import z3
+import logging
+
+from z3 import FuncInterp
+
+from mythril.exceptions import UnsatError
+from mythril.laser.ethereum.function_managers import (
+    keccak_function_manager,
+)
+
+from mythril.laser.ethereum.state.constraints import Constraints
+from mythril.laser.ethereum.state.global_state import GlobalState
+from mythril.laser.ethereum.transaction import BaseTransaction
+from mythril.laser.ethereum.transaction.transaction_models import (
+    ContractCreationTransaction,
+)
+from mythril.laser.smt import UGE, symbol_factory
+from mythril.support.model import get_model
+
+log = logging.getLogger(__name__)
+z3.set_option(
+    max_args=10000000, max_lines=1000000, max_depth=10000000, max_visited=1000000
+)
+
+
+def pretty_print_model(model):
+    """Pretty prints a z3 model
+
+    :param model:
+    :return:
+    """
+    ret = ""
+
+    for d in model.decls():
+        if isinstance(model[d], FuncInterp):
+            condition = model[d].as_list()
+            ret += "%s: %s\n" % (d.name(), condition)
+            continue
+
+        try:
+            condition = "0x%x" % model[d].as_long()
+        except:
+            condition = str(z3.simplify(model[d]))
+
+        ret += "%s: %s\n" % (d.name(), condition)
+
+    return ret
+
+
+def get_transaction_sequence(
+    global_state: GlobalState, constraints: Constraints
+) -> Dict[str, Any]:
+    """Generate concrete transaction sequence.
+    Note: This function only considers the constraints in constraint argument,
+    which in some cases is expected to differ from global_state's constraints
+
+    :param global_state: GlobalState to generate transaction sequence for
+    :param constraints: list of constraints used to generate transaction sequence
+    """
+    transaction_sequence = global_state.world_state.transaction_sequence
+    concrete_transactions = []
+    tx_constraints, minimize = _set_minimisation_constraints(
+        transaction_sequence, constraints.copy(), [], 5000, global_state.world_state
+    )
+
+    try:
+        model = get_model(tx_constraints, minimize=minimize)
+    except UnsatError:
+        raise UnsatError
+
+    if isinstance(transaction_sequence[0], ContractCreationTransaction):
+        initial_world_state = transaction_sequence[0].prev_world_state
+    else:
+        initial_world_state = transaction_sequence[0].world_state
+
+    initial_accounts = initial_world_state.accounts
+
+    for transaction in transaction_sequence:
+        concrete_transaction = _get_concrete_transaction(model, transaction)
+        concrete_transactions.append(concrete_transaction)
+
+    min_price_dict: Dict[str, int] = {}
+    for address in initial_accounts.keys():
+        min_price_dict[address] = model.eval(
+            initial_world_state.starting_balances[
+                symbol_factory.BitVecVal(address, 256)
+            ].raw,
+            model_completion=True,
+        ).as_long()
+
+    concrete_initial_state = _get_concrete_state(initial_accounts, min_price_dict)
+    if isinstance(transaction_sequence[0], ContractCreationTransaction):
+        code = transaction_sequence[0].code
+        _replace_with_actual_sha(concrete_transactions, model, code)
+    else:
+        _replace_with_actual_sha(concrete_transactions, model)
+    _add_calldata_placeholder(concrete_transactions, transaction_sequence)
+    steps = {"initialState": concrete_initial_state, "steps": concrete_transactions}
+
+    return steps
+
+
+def _add_calldata_placeholder(
+    concrete_transactions: List[Dict[str, str]],
+    transaction_sequence: List[BaseTransaction],
+):
+    """
+    Adds a calldata placeholder into the concrete transactions
+    :param concrete_transactions:
+    :param transaction_sequence:
+    :return:
+    """
+    for tx in concrete_transactions:
+        tx["calldata"] = tx["input"]
+    if not isinstance(transaction_sequence[0], ContractCreationTransaction):
+        return
+
+    if isinstance(transaction_sequence[0].code.bytecode, tuple):
+        code_len = len(transaction_sequence[0].code.bytecode) * 2
+    else:
+        code_len = len(transaction_sequence[0].code.bytecode)
+    concrete_transactions[0]["calldata"] = concrete_transactions[0]["input"][
+        code_len + 2 :
+    ]
+
+
+def _replace_with_actual_sha(
+    concrete_transactions: List[Dict[str, str]], model: z3.Model, code=None
+):
+    concrete_hashes = keccak_function_manager.get_concrete_hash_data(model)
+    for tx in concrete_transactions:
+        if keccak_function_manager.hash_matcher not in tx["input"]:
+            continue
+        if code is not None and code.bytecode in tx["input"]:
+            s_index = len(code.bytecode) + 2
+        else:
+            s_index = 10
+        for i in range(s_index, len(tx["input"])):
+            data_slice = tx["input"][i : i + 64]
+            if (
+                keccak_function_manager.hash_matcher not in data_slice
+                or len(data_slice) != 64
+            ):
+                continue
+            find_input = symbol_factory.BitVecVal(int(data_slice, 16), 256)
+            input_ = None
+            for size in concrete_hashes:
+                _, inverse = keccak_function_manager.store_function[size]
+                if find_input.value not in concrete_hashes[size]:
+                    continue
+                input_ = symbol_factory.BitVecVal(
+                    model.eval(inverse(find_input).raw).as_long(), size
+                )
+
+            if input_ is None:
+                continue
+            keccak = keccak_function_manager.find_concrete_keccak(input_)
+            hex_keccak = hex(keccak.value)[2:]
+            if len(hex_keccak) != 64:
+                hex_keccak = "0" * (64 - len(hex_keccak)) + hex_keccak
+            tx["input"] = tx["input"][:s_index] + tx["input"][s_index:].replace(
+                tx["input"][i : 64 + i], hex_keccak
+            )
+
+
+def _get_concrete_state(
+    initial_accounts: Dict, min_price_dict: Dict[str, int]
+) -> Dict[str, Dict]:
+    """Gets a concrete state"""
+    accounts = {}
+    for address, account in initial_accounts.items():
+        # Skip empty default account
+
+        data: Dict[str, Union[int, str]] = {}
+        data["nonce"] = account.nonce
+        data["code"] = account.serialised_code()
+        data["storage"] = str(account.storage)
+        data["balance"] = hex(min_price_dict.get(address, 0))
+        accounts[hex(address)] = data
+    return {"accounts": accounts}
+
+
+def _get_concrete_transaction(model: z3.Model, transaction: BaseTransaction):
+    """Gets a concrete transaction from a transaction and z3 model"""
+    # Get concrete values from transaction
+    address = hex(transaction.callee_account.address.value)
+    value = model.eval(transaction.call_value.raw, model_completion=True).as_long()
+    caller = "0x" + (
+        "%x" % model.eval(transaction.caller.raw, model_completion=True).as_long()
+    ).zfill(40)
+
+    input_ = ""
+    if isinstance(transaction, ContractCreationTransaction):
+        address = ""
+        input_ += transaction.code.bytecode
+
+    input_ += "".join(
+        [
+            hex(b)[2:] if len(hex(b)) % 2 == 0 else "0" + hex(b)[2:]
+            for b in transaction.call_data.concrete(model)
+        ]
+    )
+
+    # Create concrete transaction dict
+    concrete_transaction: Dict[str, str] = dict()
+    concrete_transaction["input"] = "0x" + input_
+    concrete_transaction["value"] = "0x%x" % value
+    # Fixme: base origin assignment on origin symbol
+    concrete_transaction["origin"] = caller
+    concrete_transaction["address"] = "%s" % address
+
+    return concrete_transaction
+
+
+def _set_minimisation_constraints(
+    transaction_sequence, constraints, minimize, max_size, world_state
+) -> Tuple[Constraints, tuple]:
+    """Set constraints that minimise key transaction values
+
+    Constraints generated:
+    - Upper bound on calldata size
+    - Minimisation of call value's and calldata sizes
+
+    :param transaction_sequence: Transaction for which the constraints should be applied
+    :param constraints: The constraints array which should contain any added constraints
+    :param minimize: The minimisation array which should contain any variables that should be minimised
+    :param max_size: The max size of the calldata array
+    :return: updated constraints, minimize
+    """
+    for transaction in transaction_sequence:
+        # Set upper bound on calldata size
+        max_calldata_size = symbol_factory.BitVecVal(max_size, 256)
+        constraints.append(UGE(max_calldata_size, transaction.call_data.calldatasize))
+
+        # Minimize
+        minimize.append(transaction.call_data.calldatasize)
+        minimize.append(transaction.call_value)
+        constraints.append(
+            UGE(
+                symbol_factory.BitVecVal(1000000000000000000000, 256),
+                world_state.starting_balances[transaction.caller],
+            )
+        )
+
+    for account in world_state.accounts.values():
+        # Lazy way to prevent overflows and to ensure "reasonable" balances
+        # Each account starts with less than 100 ETH
+        constraints.append(
+            UGE(
+                symbol_factory.BitVecVal(100000000000000000000, 256),
+                world_state.starting_balances[account.address],
+            )
+        )
+
+    return constraints, tuple(minimize)
diff --git a/mythril_sol/analysis/swc_data.py b/mythril_sol/analysis/swc_data.py
new file mode 100644
index 0000000000000000000000000000000000000000..fc6c451de6b1a269a8abf2290f51b0f6fe2943b4
--- /dev/null
+++ b/mythril_sol/analysis/swc_data.py
@@ -0,0 +1,67 @@
+"""This module maps SWC IDs to their registry equivalents."""
+
+DEFAULT_FUNCTION_VISIBILITY = "100"
+INTEGER_OVERFLOW_AND_UNDERFLOW = "101"
+OUTDATED_COMPILER_VERSION = "102"
+FLOATING_PRAGMA = "103"
+UNCHECKED_RET_VAL = "104"
+UNPROTECTED_ETHER_WITHDRAWAL = "105"
+UNPROTECTED_SELFDESTRUCT = "106"
+REENTRANCY = "107"
+DEFAULT_STATE_VARIABLE_VISIBILITY = "108"
+UNINITIALIZED_STORAGE_POINTER = "109"
+ASSERT_VIOLATION = "110"
+DEPRECATED_FUNCTIONS_USAGE = "111"
+DELEGATECALL_TO_UNTRUSTED_CONTRACT = "112"
+MULTIPLE_SENDS = "113"
+TX_ORDER_DEPENDENCE = "114"
+TX_ORIGIN_USAGE = "115"
+TIMESTAMP_DEPENDENCE = "116"
+SIGNATURE_MALLEABILITY = "117"
+INCORRECT_CONSTRUCTOR_NAME = "118"
+SHADOWING_STATE_VARIABLES = "119"
+WEAK_RANDOMNESS = "120"
+SIGNATURE_REPLAY = "121"
+IMPROPER_VERIFICATION_BASED_ON_MSG_SENDER = "122"
+REQUIREMENT_VIOLATION = "123"
+WRITE_TO_ARBITRARY_STORAGE = "124"
+INCORRECT_INHERITANCE_ORDER = "125"
+ARBITRARY_JUMP = "127"
+DOS_WITH_BLOCK_GAS_LIMIT = "128"
+TYPOGRAPHICAL_ERROR = "129"
+UNEXPECTED_ETHER_BALANCE = "132"
+EFFECT_FREE_CODE = "135"
+
+SWC_TO_TITLE = {
+    "100": "Function Default Visibility",
+    "101": "Integer Overflow and Underflow",
+    "102": "Outdated Compiler Version",
+    "103": "Floating Pragma",
+    "104": "Unchecked Call Return Value",
+    "105": "Unprotected Ether Withdrawal",
+    "106": "Unprotected SELFDESTRUCT Instruction",
+    "107": "Reentrancy",
+    "108": "State Variable Default Visibility",
+    "109": "Uninitialized Storage Pointer",
+    "110": "Assert Violation",
+    "111": "Use of Deprecated Solidity Functions",
+    "112": "Delegatecall to Untrusted Callee",
+    "113": "DoS with Failed Call",
+    "114": "Transaction Order Dependence",
+    "115": "Authorization through tx.origin",
+    "116": "Timestamp Dependence",
+    "117": "Signature Malleability",
+    "118": "Incorrect Constructor Name",
+    "119": "Shadowing State Variables",
+    "120": "Weak Sources of Randomness from Chain Attributes",
+    "121": "Missing Protection against Signature Replay Attacks",
+    "122": "Lack of Proper Signature Verification",
+    "123": "Requirement Violation",
+    "124": "Write to Arbitrary Storage Location",
+    "125": "Incorrect Inheritance Order",
+    "127": "Arbitrary Jump with Function Type Variable",
+    "128": "DoS With Block Gas Limit",
+    "129": "Typographical Error",
+    "132": "Unexpected Ether Balance",
+    "135": "Effect Free Code",
+}
diff --git a/mythril_sol/analysis/symbolic.py b/mythril_sol/analysis/symbolic.py
new file mode 100644
index 0000000000000000000000000000000000000000..e7cb4bd5f4fd550097a69c97ef770686d79d4cca
--- /dev/null
+++ b/mythril_sol/analysis/symbolic.py
@@ -0,0 +1,325 @@
+"""This module contains a wrapper around LASER for extended analysis
+purposes."""
+
+from mythril.analysis.module import EntryPoint, ModuleLoader, get_detection_module_hooks
+from mythril.laser.execution_info import ExecutionInfo
+from mythril.laser.ethereum import svm
+from mythril.laser.ethereum.state.account import Account
+from mythril.laser.ethereum.state.world_state import WorldState
+from mythril.laser.ethereum.strategy.basic import (
+    BreadthFirstSearchStrategy,
+    DepthFirstSearchStrategy,
+    ReturnRandomNaivelyStrategy,
+    ReturnWeightedRandomStrategy,
+    BasicSearchStrategy,
+)
+from mythril.laser.ethereum.strategy.constraint_strategy import DelayConstraintStrategy
+from mythril.laser.ethereum.strategy.beam import BeamSearch
+from mythril.laser.ethereum.natives import PRECOMPILE_COUNT
+from mythril.laser.ethereum.transaction.symbolic import ACTORS
+from mythril.laser.ethereum.tx_prioritiser import RfTxPrioritiser
+
+from mythril.laser.plugin.loader import LaserPluginLoader
+from mythril.laser.plugin.plugins import (
+    MutationPrunerBuilder,
+    DependencyPrunerBuilder,
+    CoveragePluginBuilder,
+    CallDepthLimitBuilder,
+    InstructionProfilerBuilder,
+)
+from mythril.laser.ethereum.strategy.extensions.bounded_loops import (
+    BoundedLoopsStrategy,
+)
+from mythril.laser.smt import symbol_factory, BitVec
+from mythril.support.support_args import args
+from typing import Union, List, Type, Optional
+from mythril.solidity.soliditycontract import EVMContract, SolidityContract
+from .ops import Call, VarType, get_variable
+
+
+class SymExecWrapper:
+    """Wrapper class for the LASER Symbolic virtual machine.
+
+    Symbolically executes the code and does a bit of pre-analysis for
+    convenience.
+    """
+
+    def __init__(
+        self,
+        contract,
+        address: Union[int, str, BitVec],
+        strategy: str,
+        dynloader=None,
+        max_depth: int = 22,
+        execution_timeout: Optional[int] = None,
+        loop_bound: int = 3,
+        create_timeout: Optional[int] = None,
+        transaction_count: int = 2,
+        modules: Optional[List[str]] = None,
+        compulsory_statespace: bool = True,
+        disable_dependency_pruning: bool = False,
+        run_analysis_modules: bool = True,
+        custom_modules_directory: str = "",
+    ):
+        """
+
+        :param contract: Contract to symbolically execute
+        :param address: Address of the contract to symbolically execute
+        :param strategy: Execution strategy to use (bfs, dfs, etc)
+        :param dynloader: Dynamic Loader
+        :param max_depth: Max analysis depth
+        :param execution_timeout: Timeout for the entire analysis
+        :param create_timeout: Timeout for the creation transaction
+        :param transaction_count: Number of transactions to symbolically execute
+        :param modules: Analysis modules to run during analysis
+        :param compulsory_statespace: Boolean indicating whether or not the statespace should be saved
+        :param iprof: Instruction Profiler
+        :param disable_dependency_pruning: Boolean indicating whether dependency pruning should be disabled
+        :param run_analysis_modules: Boolean indicating whether analysis modules should be executed
+        :param enable_coverage_strategy: Boolean indicating whether the coverage strategy should be enabled
+        :param custom_modules_directory: The directory to read custom analysis modules from
+        """
+        if isinstance(address, str):
+            address = symbol_factory.BitVecVal(int(address, 16), 256)
+        if isinstance(address, int):
+            address = symbol_factory.BitVecVal(address, 256)
+        beam_width = None
+        if strategy == "dfs":
+            s_strategy: Type[BasicSearchStrategy] = DepthFirstSearchStrategy
+        elif strategy == "bfs":
+            s_strategy = BreadthFirstSearchStrategy
+        elif strategy == "naive-random":
+            s_strategy = ReturnRandomNaivelyStrategy
+        elif strategy == "weighted-random":
+            s_strategy = ReturnWeightedRandomStrategy
+        elif "beam-search: " in strategy:
+            beam_width = int(strategy.split("beam-search: ")[1])
+            s_strategy = BeamSearch
+        elif "pending" in strategy:
+            s_strategy = DelayConstraintStrategy
+        else:
+            raise ValueError("Invalid strategy argument supplied")
+
+        if args.incremental_txs is False:
+            tx_strategy = RfTxPrioritiser(contract)
+        else:
+            tx_strategy = None
+
+        creator_account = Account(
+            hex(ACTORS.creator.value), "", dynamic_loader=None, contract_name=None
+        )
+        attacker_account = Account(
+            hex(ACTORS.attacker.value), "", dynamic_loader=None, contract_name=None
+        )
+
+        requires_statespace = (
+            compulsory_statespace
+            or len(ModuleLoader().get_detection_modules(EntryPoint.POST, modules)) > 0
+        )
+        if not contract.creation_code:
+            self.accounts = {hex(ACTORS.attacker.value): attacker_account}
+        else:
+            self.accounts = {
+                hex(ACTORS.creator.value): creator_account,
+                hex(ACTORS.attacker.value): attacker_account,
+            }
+
+        self.laser = svm.LaserEVM(
+            dynamic_loader=dynloader,
+            max_depth=max_depth,
+            execution_timeout=execution_timeout,
+            strategy=s_strategy,
+            create_timeout=create_timeout,
+            transaction_count=transaction_count,
+            requires_statespace=requires_statespace,
+            beam_width=beam_width,
+            tx_strategy=tx_strategy,
+        )
+
+        if loop_bound is not None:
+            self.laser.extend_strategy(
+                BoundedLoopsStrategy, loop_bound=loop_bound, beam_width=beam_width
+            )
+
+        plugin_loader = LaserPluginLoader()
+        if not args.disable_coverage_strategy:
+            plugin_loader.load(CoveragePluginBuilder())
+        if not args.disable_mutation_pruner:
+            plugin_loader.load(MutationPrunerBuilder())
+        if not args.disable_iprof:
+            plugin_loader.load(InstructionProfilerBuilder())
+
+        plugin_loader.load(CallDepthLimitBuilder())
+        plugin_loader.add_args(
+            "call-depth-limit", call_depth_limit=args.call_depth_limit
+        )
+
+        if not disable_dependency_pruning:
+            plugin_loader.load(DependencyPrunerBuilder())
+
+        plugin_loader.instrument_virtual_machine(self.laser, None)
+
+        world_state = WorldState()
+        for account in self.accounts.values():
+            world_state.put_account(account)
+
+        if run_analysis_modules:
+            analysis_modules = ModuleLoader().get_detection_modules(
+                EntryPoint.CALLBACK, modules
+            )
+            self.laser.register_hooks(
+                hook_type="pre",
+                hook_dict=get_detection_module_hooks(analysis_modules, hook_type="pre"),
+            )
+            self.laser.register_hooks(
+                hook_type="post",
+                hook_dict=get_detection_module_hooks(
+                    analysis_modules, hook_type="post"
+                ),
+            )
+
+        if isinstance(contract, SolidityContract) and create_timeout != 0:
+            self.laser.sym_exec(
+                creation_code=contract.creation_code,
+                contract_name=contract.name,
+                world_state=world_state,
+            )
+        elif isinstance(contract, EVMContract) and contract.creation_code:
+            self.laser.sym_exec(
+                creation_code=contract.creation_code,
+                contract_name=contract.name,
+                world_state=world_state,
+            )
+        else:
+            account = Account(
+                address,
+                contract.disassembly,
+                dynamic_loader=dynloader,
+                contract_name=contract.name,
+                balances=world_state.balances,
+                concrete_storage=True
+                if (dynloader is not None and dynloader.active)
+                else False,
+            )  # concrete_storage can get overridden by global args
+
+            if dynloader is not None:
+                if isinstance(address, int):
+                    try:
+                        _balance = dynloader.read_balance(
+                            "{0:#0{1}x}".format(address, 42)
+                        )
+                        account.set_balance(_balance)
+                    except:
+                        # Initial balance will be a symbolic variable
+                        pass
+                elif isinstance(address, str):
+                    try:
+                        _balance = dynloader.read_balance(address)
+                        account.set_balance(_balance)
+                    except:
+                        # Initial balance will be a symbolic variable
+                        pass
+                elif isinstance(address, BitVec):
+                    try:
+                        _balance = dynloader.read_balance(
+                            "{0:#0{1}x}".format(address.value, 42)
+                        )
+                        account.set_balance(_balance)
+                    except:
+                        # Initial balance will be a symbolic variable
+                        pass
+
+            world_state.put_account(account)
+            self.laser.sym_exec(world_state=world_state, target_address=address.value)
+
+        if not requires_statespace:
+            return
+
+        self.nodes = self.laser.nodes
+        self.edges = self.laser.edges
+
+        # Parse calls to make them easily accessible
+
+        self.calls: List[Call] = []
+
+        for key in self.nodes:
+
+            state_index = 0
+
+            for state in self.nodes[key].states:
+
+                instruction = state.get_current_instruction()
+
+                op = instruction["opcode"]
+
+                if op in ("CALL", "CALLCODE", "DELEGATECALL", "STATICCALL"):
+
+                    stack = state.mstate.stack
+
+                    if op in ("CALL", "CALLCODE"):
+                        gas, to, value, meminstart, meminsz, _, _ = (
+                            get_variable(stack[-1]),
+                            get_variable(stack[-2]),
+                            get_variable(stack[-3]),
+                            get_variable(stack[-4]),
+                            get_variable(stack[-5]),
+                            get_variable(stack[-6]),
+                            get_variable(stack[-7]),
+                        )
+
+                        if (
+                            to.type == VarType.CONCRETE
+                            and 0 < to.val <= PRECOMPILE_COUNT
+                        ):
+                            # ignore prebuilts
+                            continue
+
+                        if (
+                            meminstart.type == VarType.CONCRETE
+                            and meminsz.type == VarType.CONCRETE
+                        ):
+                            self.calls.append(
+                                Call(
+                                    self.nodes[key],
+                                    state,
+                                    state_index,
+                                    op,
+                                    to,
+                                    gas,
+                                    value,
+                                    state.mstate.memory[
+                                        meminstart.val : meminsz.val + meminstart.val
+                                    ],
+                                )
+                            )
+                        else:
+                            self.calls.append(
+                                Call(
+                                    self.nodes[key],
+                                    state,
+                                    state_index,
+                                    op,
+                                    to,
+                                    gas,
+                                    value,
+                                )
+                            )
+                    else:
+                        gas, to, meminstart, meminsz, _, _ = (
+                            get_variable(stack[-1]),
+                            get_variable(stack[-2]),
+                            get_variable(stack[-3]),
+                            get_variable(stack[-4]),
+                            get_variable(stack[-5]),
+                            get_variable(stack[-6]),
+                        )
+
+                        self.calls.append(
+                            Call(self.nodes[key], state, state_index, op, to, gas)
+                        )
+
+                state_index += 1
+
+    @property
+    def execution_info(self) -> List[ExecutionInfo]:
+        return self.laser.execution_info
diff --git a/mythril_sol/analysis/templates/callgraph.html b/mythril_sol/analysis/templates/callgraph.html
new file mode 100644
index 0000000000000000000000000000000000000000..807ecfc6f8f8530920cbea2cd9a6173e3163fcca
--- /dev/null
+++ b/mythril_sol/analysis/templates/callgraph.html
@@ -0,0 +1,78 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>Call Graph</title>
+    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.css" integrity="sha256-iq5ygGJ7021Pi7H5S+QAUXCPUfaBzfqeplbg/KlEssg=" crossorigin="anonymous" />
+    <script src="https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.js" integrity="sha256-JuQeAGbk9rG/EoRMixuy5X8syzICcvB0dj3KindZkY0=" crossorigin="anonymous"></script>
+
+    {% if not phrackify %}
+    <style type="text/css">
+        #mynetwork {
+          height: 100%;
+            background-color: #232625;
+        }
+        body {
+            background-color: #232625;
+            color: #ffffff;
+            font-size: 10px;
+        }
+        html, body {
+          height: 95%;
+        }
+    </style>
+    {% else %}
+    <style type="text/css">
+        #mynetwork {
+            height: 100%;
+            background-color: #ffffff;
+        }
+        body {
+            background-color: #ffffff;
+            color: #000000;
+            font-size: 10px;
+            font-family: "courier new";
+        }
+        html, body {
+          height: 95%;
+        }
+    </style>
+    {% endif %}
+
+    <script>
+        var options = {{opts | tojson}};
+        var nodes = {{nodes | tojson}};
+        var edges = {{edges | tojson}};
+    </script>
+</head>
+<body>
+<p>{{ title }}</p>
+<div id="mynetwork"></div>
+<script type="text/javascript">
+    var container = document.getElementById('mynetwork');
+
+    var nodesSet = new vis.DataSet(nodes);
+    var edgesSet = new vis.DataSet(edges);
+    var data = {'nodes': nodesSet, 'edges': edgesSet}
+
+    var gph = new vis.Network(container, data, options);
+    gph.on("click", function (params) {
+        // parse node id
+        var nodeID = params['nodes']['0'];
+        if (nodeID) {
+            var clickedNode = nodesSet.get(nodeID);
+
+            if(clickedNode.isExpanded) {
+                clickedNode.label = clickedNode.truncLabel;
+            }
+            else {
+                clickedNode.label = clickedNode.fullLabel;
+            }
+
+            clickedNode.isExpanded = !clickedNode.isExpanded;
+
+            nodesSet.update(clickedNode);
+        }
+    });
+</script>
+</body>
+</html>
diff --git a/mythril_sol/analysis/templates/report_as_markdown.jinja2 b/mythril_sol/analysis/templates/report_as_markdown.jinja2
new file mode 100644
index 0000000000000000000000000000000000000000..ea329a388d596762335fb4e9660bc992d27eedf9
--- /dev/null
+++ b/mythril_sol/analysis/templates/report_as_markdown.jinja2
@@ -0,0 +1,55 @@
+# Analysis results for {{ filename }}
+{% if issues %}
+{% for issue in issues %}
+
+## {{ issue.title }}
+- SWC ID: {{ issue['swc-id'] }}
+- Severity: {{ issue.severity }}
+- Contract: {{ issue.contract | default("Unknown") }}
+{% if issue.function %}
+- Function name: `{{ issue.function }}`
+{% endif %}
+- PC address: {{ issue.address }}
+{% if issue.min_gas_used or issue.max_gas_used %}
+- Estimated Gas Usage: {{ issue.min_gas_used }} - {{ issue.max_gas_used }}
+{% endif %}
+
+### Description
+
+{{ issue.description.rstrip() }}
+{% if issue.filename and issue.lineno %}
+In file: {{ issue.filename }}:{{ issue.lineno }}
+{% elif issue.filename %}
+In file: {{ issue.filename }}
+{% endif %}
+{% if issue.code %}
+
+### Code
+
+```
+{{ issue.code }}
+```
+{% endif %}
+{% if issue.tx_sequence %}
+
+### Initial State:
+
+{% for key, value in issue.tx_sequence.initialState.accounts.items() %}
+Account: {% if key == "0xaffeaffeaffeaffeaffeaffeaffeaffeaffeaffe" %}[CREATOR]{% elif key == "0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef" %}[ATTACKER]{% else %}[SOMEGUY]{% endif %}, balance: {{value.balance}}, nonce:{{value.nonce}}, storage:{{value.storage}}
+{% endfor %}
+
+### Transaction Sequence
+
+{% for step in issue.tx_sequence.steps %}
+{% if step == issue.tx_sequence.steps[0] and step.input != "0x" and step.origin == "0xaffeaffeaffeaffeaffeaffeaffeaffeaffeaffe" %}
+Caller: [CREATOR], calldata: {{ step.calldata }}, {% if step.resolved_input is not none %}decoded_data: {{ step.resolved_input }}, {% endif %}value: {{ step.value }}
+{% else %}
+Caller: {% if step.origin == "0xaffeaffeaffeaffeaffeaffeaffeaffeaffeaffe" %}[CREATOR]{% elif step.origin == "0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef" %}[ATTACKER]{% else %}[SOMEGUY]{% endif %}, function: {{ step.name }}, txdata: {{ step.input }}, {% if step.resolved_input is not none %}decoded_data: {{ step.resolved_input }}, {% endif %}value: {{ step.value }}
+{% endif %}
+{% endfor %}
+{% endif %}
+
+{% endfor %}
+{% else %}
+The analysis was completed successfully. No issues were detected.
+{% endif %}
diff --git a/mythril_sol/analysis/templates/report_as_text.jinja2 b/mythril_sol/analysis/templates/report_as_text.jinja2
new file mode 100644
index 0000000000000000000000000000000000000000..7149a37e5be41d4d9bd3656f4af728339a3e5d12
--- /dev/null
+++ b/mythril_sol/analysis/templates/report_as_text.jinja2
@@ -0,0 +1,46 @@
+{% if issues %}
+{% for issue in issues %}
+==== {{ issue.title }} ====
+SWC ID: {{ issue['swc-id'] }}
+Severity: {{ issue.severity }}
+Contract: {{ issue.contract | default("Unknown") }}
+{% if issue.function %}
+Function name: {{ issue.function }}
+{% endif %}
+PC address: {{ issue.address }}
+{% if issue.min_gas_used or issue.max_gas_used %}
+Estimated Gas Usage: {{ issue.min_gas_used }} - {{ issue.max_gas_used }}
+{% endif %}
+{{ issue.description }}
+--------------------
+{% if issue.filename and issue.lineno %}
+In file: {{ issue.filename }}:{{ issue.lineno }}
+{% endif %}
+{% if issue.code %}
+
+{{ issue.code }}
+
+--------------------
+{% endif %}
+{% if issue.tx_sequence %}
+Initial State:
+
+{% for key, value in issue.tx_sequence.initialState.accounts.items() %}
+Account: {% if key == "0xaffeaffeaffeaffeaffeaffeaffeaffeaffeaffe" %}[CREATOR]{% elif key == "0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef" %}[ATTACKER]{% else %}[SOMEGUY]{% endif %}, balance: {{value.balance}}, nonce:{{value.nonce}}, storage:{{value.storage}}
+{% endfor %}
+
+Transaction Sequence:
+
+{% for step in issue.tx_sequence.steps %}
+{% if step == issue.tx_sequence.steps[0] and step.address == "" and step.origin == "0xaffeaffeaffeaffeaffeaffeaffeaffeaffeaffe" %}
+Caller: [CREATOR], calldata: {{ step.calldata }}, {% if step.resolved_input is not none %}decoded_data: {{ step.resolved_input }}, {% endif %}value: {{ step.value }}
+{% else %}
+Caller: {% if step.origin == "0xaffeaffeaffeaffeaffeaffeaffeaffeaffeaffe" %}[CREATOR]{% elif step.origin == "0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef" %}[ATTACKER]{% else %}[SOMEGUY]{% endif %}, function: {{ step.name }}, txdata: {{ step.input }}, {% if step.resolved_input is not none %}decoded_data: {{ step.resolved_input }}, {% endif %}value: {{ step.value }}
+{% endif %}
+{% endfor %}
+{% endif %}
+
+{% endfor %}
+{% else %}
+The analysis was completed successfully. No issues were detected.
+{% endif %}
diff --git a/mythril_sol/analysis/traceexplore.py b/mythril_sol/analysis/traceexplore.py
new file mode 100644
index 0000000000000000000000000000000000000000..fbc5befc29ff87652003b82ebdfbf79a14cbf97c
--- /dev/null
+++ b/mythril_sol/analysis/traceexplore.py
@@ -0,0 +1,163 @@
+"""This module provides a function to convert a state space into a set of state
+nodes and transition edges."""
+from z3 import Z3Exception
+from mythril.laser.smt import simplify
+from mythril.laser.ethereum.svm import NodeFlags
+import re
+
+colors = [
+    {
+        "border": "#26996f",
+        "background": "#2f7e5b",
+        "highlight": {"border": "#fff", "background": "#28a16f"},
+    },
+    {
+        "border": "#9e42b3",
+        "background": "#842899",
+        "highlight": {"border": "#fff", "background": "#933da6"},
+    },
+    {
+        "border": "#b82323",
+        "background": "#991d1d",
+        "highlight": {"border": "#fff", "background": "#a61f1f"},
+    },
+    {
+        "border": "#4753bf",
+        "background": "#3b46a1",
+        "highlight": {"border": "#fff", "background": "#424db3"},
+    },
+    {
+        "border": "#26996f",
+        "background": "#2f7e5b",
+        "highlight": {"border": "#fff", "background": "#28a16f"},
+    },
+    {
+        "border": "#9e42b3",
+        "background": "#842899",
+        "highlight": {"border": "#fff", "background": "#933da6"},
+    },
+    {
+        "border": "#b82323",
+        "background": "#991d1d",
+        "highlight": {"border": "#fff", "background": "#a61f1f"},
+    },
+    {
+        "border": "#4753bf",
+        "background": "#3b46a1",
+        "highlight": {"border": "#fff", "background": "#424db3"},
+    },
+]
+
+
+def get_serializable_statespace(statespace):
+    """
+
+    :param statespace:
+    :return:
+    """
+    nodes = []
+    edges = []
+
+    color_map = {}
+    i = 0
+    for k in statespace.accounts:
+        color_map[statespace.accounts[k].contract_name] = colors[i]
+        i += 1
+
+    for node_key in statespace.nodes:
+
+        node = statespace.nodes[node_key]
+
+        code = node.get_cfg_dict()["code"]
+        code = re.sub("([0-9a-f]{8})[0-9a-f]+", lambda m: m.group(1) + "(...)", code)
+
+        if NodeFlags.FUNC_ENTRY in node.flags:
+            code = re.sub("JUMPDEST", node.function_name, code)
+
+        code_split = code.split("\\n")
+
+        truncated_code = (
+            code
+            if (len(code_split) < 7)
+            else "\\n".join(code_split[:6]) + "\\n(click to expand +)"
+        )
+        try:
+            color = color_map[node.get_cfg_dict()["contract_name"]]
+        except KeyError:
+            color = colors[i]
+            i += 1
+            color_map[node.get_cfg_dict()["contract_name"]] = color
+
+        def get_state_accounts(node_state):
+            """
+
+            :param node_state:
+            :return:
+            """
+            state_accounts = []
+            for key in node_state.accounts:
+                account = node_state.accounts[key].as_dict
+                account.pop("code", None)
+                account["balance"] = str(account["balance"])
+
+                storage = {}
+                for storage_key in account["storage"].printable_storage:
+                    storage[str(storage_key)] = str(account["storage"][storage_key])
+
+                state_accounts.append({"address": key, "storage": storage})
+            return state_accounts
+
+        states = [
+            {"machine": x.mstate.as_dict, "accounts": get_state_accounts(x)}
+            for x in node.states
+        ]
+
+        for state in states:
+            state["machine"]["stack"] = [str(s) for s in state["machine"]["stack"]]
+            state["machine"]["memory"] = [
+                str(m)
+                for m in state["machine"]["memory"][: len(state["machine"]["memory"])]
+            ]
+
+        truncated_code = truncated_code.replace("\\n", "\n")
+        code = code.replace("\\n", "\n")
+
+        s_node = {
+            "id": str(node_key),
+            "func": str(node.function_name),
+            "label": truncated_code,
+            "code": code,
+            "truncated": truncated_code,
+            "states": states,
+            "color": color,
+            "instructions": code.split("\n"),
+        }
+
+        nodes.append(s_node)
+
+    for edge in statespace.edges:
+
+        if edge.condition is None:
+            label = ""
+        else:
+
+            try:
+                label = str(simplify(edge.condition)).replace("\n", "")
+            except Z3Exception:
+                label = str(edge.condition).replace("\n", "")
+
+        label = re.sub(
+            "([^_])([\d]{2}\d+)", lambda m: m.group(1) + hex(int(m.group(2))), label
+        )
+
+        s_edge = {
+            "from": str(edge.as_dict["from"]),
+            "to": str(edge.as_dict["to"]),
+            "arrows": "to",
+            "label": label,
+            "smooth": {"type": "cubicBezier"},
+        }
+
+        edges.append(s_edge)
+
+    return {"edges": edges, "nodes": nodes}
diff --git a/mythril_sol/concolic/__init__.py b/mythril_sol/concolic/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..5f9fa52336346e2ce87d8ef0464cfdf649a41bac
--- /dev/null
+++ b/mythril_sol/concolic/__init__.py
@@ -0,0 +1,2 @@
+from mythril.concolic.concolic_execution import concolic_execution
+from mythril.concolic.find_trace import concrete_execution
diff --git a/mythril_sol/concolic/concolic_execution.py b/mythril_sol/concolic/concolic_execution.py
new file mode 100644
index 0000000000000000000000000000000000000000..6d44d004506ef55bf334d2a06c75f7bb4cefe05e
--- /dev/null
+++ b/mythril_sol/concolic/concolic_execution.py
@@ -0,0 +1,86 @@
+import json
+import binascii
+
+from datetime import datetime, timedelta
+from typing import Dict, List, Any
+from copy import deepcopy
+
+from mythril.concolic.concrete_data import ConcreteData
+from mythril.concolic.find_trace import concrete_execution
+from mythril.disassembler.disassembly import Disassembly
+from mythril.laser.ethereum.strategy.concolic import ConcolicStrategy
+from mythril.laser.ethereum.svm import LaserEVM
+from mythril.laser.ethereum.state.world_state import WorldState
+from mythril.laser.ethereum.state.account import Account
+from mythril.laser.ethereum.transaction.symbolic import execute_transaction
+from mythril.laser.ethereum.transaction.transaction_models import tx_id_manager
+from mythril.laser.smt import Expression, BitVec, symbol_factory
+from mythril.laser.ethereum.time_handler import time_handler
+from mythril.support.support_args import args
+
+
+def flip_branches(
+    init_state: WorldState,
+    concrete_data: ConcreteData,
+    jump_addresses: List[str],
+    trace: List,
+) -> List[Dict[str, Dict[str, Any]]]:
+    """
+    Flips branches and prints the input required for branch flip
+
+    :param concrete_data: Concrete data
+    :param jump_addresses: Jump addresses to flip
+    :param trace: trace to follow
+    """
+    tx_id_manager.restart_counter()
+    output_list = []
+    laser_evm = LaserEVM(
+        execution_timeout=600, use_reachability_check=False, transaction_count=10
+    )
+    laser_evm.open_states = [deepcopy(init_state)]
+    laser_evm.strategy = ConcolicStrategy(
+        work_list=laser_evm.work_list,
+        max_depth=100,
+        trace=trace,
+        flip_branch_addresses=jump_addresses,
+    )
+
+    time_handler.start_execution(laser_evm.execution_timeout)
+    laser_evm.time = datetime.now()
+
+    for transaction in concrete_data["steps"]:
+        execute_transaction(
+            laser_evm,
+            callee_address=transaction["address"],
+            caller_address=symbol_factory.BitVecVal(
+                int(transaction["origin"], 16), 256
+            ),
+            data=transaction["input"][2:],
+        )
+
+    if laser_evm.strategy.results:
+        for addr in jump_addresses:
+            output_list.append(laser_evm.strategy.results[addr])
+    return output_list
+
+
+def concolic_execution(
+    concrete_data: ConcreteData, jump_addresses: List, solver_timeout=100000
+) -> List[Dict[str, Dict[str, Any]]]:
+    """
+    Executes codes and prints input required to cover the branch flips
+    :param input_file: Input file
+    :param jump_addresses: Jump addresses to flip
+    :param solver_timeout: Solver timeout
+
+    """
+
+    init_state, trace = concrete_execution(concrete_data)
+    args.solver_timeout = solver_timeout
+    output_list = flip_branches(
+        init_state=init_state,
+        concrete_data=concrete_data,
+        jump_addresses=jump_addresses,
+        trace=trace,
+    )
+    return output_list
diff --git a/mythril_sol/concolic/concrete_data.py b/mythril_sol/concolic/concrete_data.py
new file mode 100644
index 0000000000000000000000000000000000000000..c2c4f02f4ac6879de7d43aaed28587915e1b8d11
--- /dev/null
+++ b/mythril_sol/concolic/concrete_data.py
@@ -0,0 +1,34 @@
+from typing import Dict, List
+from typing_extensions import TypedDict
+
+
+class AccountData(TypedDict):
+    balance: str
+    code: str
+    nonce: int
+    storage: dict
+
+
+class InitialState(TypedDict):
+    accounts: Dict[str, AccountData]
+
+
+class TransactionData(TypedDict):
+    address: str
+    blockCoinbase: str
+    blockDifficulty: str
+    blockGasLimit: str
+    blockNumber: str
+    blockTime: str
+    calldata: str
+    gasLimit: str
+    gasPrice: str
+    input: str
+    name: str
+    origin: str
+    value: str
+
+
+class ConcreteData(TypedDict):
+    initialState: InitialState
+    steps: List[TransactionData]
diff --git a/mythril_sol/concolic/find_trace.py b/mythril_sol/concolic/find_trace.py
new file mode 100644
index 0000000000000000000000000000000000000000..5700f4be505fe328f5e701214111bc3a0c704aa5
--- /dev/null
+++ b/mythril_sol/concolic/find_trace.py
@@ -0,0 +1,80 @@
+import json
+import binascii
+
+from copy import deepcopy
+from datetime import datetime
+from typing import Dict, List, Tuple
+
+from mythril.concolic.concrete_data import ConcreteData
+
+from mythril.disassembler.disassembly import Disassembly
+from mythril.laser.ethereum.svm import LaserEVM
+from mythril.laser.ethereum.state.world_state import WorldState
+from mythril.laser.ethereum.state.account import Account
+from mythril.laser.ethereum.time_handler import time_handler
+from mythril.laser.ethereum.transaction.concolic import execute_transaction
+from mythril.laser.plugin.loader import LaserPluginLoader
+from mythril.laser.smt import Expression, BitVec, symbol_factory
+from mythril.laser.ethereum.transaction.transaction_models import tx_id_manager
+from mythril.plugin.discovery import PluginDiscovery
+
+
+def setup_concrete_initial_state(concrete_data: ConcreteData) -> WorldState:
+    """
+    Sets up concrete initial state
+    :param concrete_data: Concrete data
+    :return: initialised world state
+    """
+    world_state = WorldState()
+    for address, details in concrete_data["initialState"]["accounts"].items():
+        account = Account(address, concrete_storage=True)
+        account.code = Disassembly(details["code"][2:])
+        account.nonce = details["nonce"]
+        if isinstance(type(details["storage"]), str):
+            details["storage"] = eval(details["storage"])  # type: ignore
+        for key, value in details["storage"].items():
+            key_bitvec = symbol_factory.BitVecVal(int(key, 16), 256)
+            account.storage[key_bitvec] = symbol_factory.BitVecVal(int(value, 16), 256)
+
+        world_state.put_account(account)
+        account.set_balance(int(details["balance"], 16))
+    return world_state
+
+
+def concrete_execution(concrete_data: ConcreteData) -> Tuple[WorldState, List]:
+    """
+    Executes code concretely to find the path to be followed by concolic executor
+    :param concrete_data: Concrete data
+    :return: path trace
+    """
+    tx_id_manager.restart_counter()
+    init_state = setup_concrete_initial_state(concrete_data)
+    laser_evm = LaserEVM(execution_timeout=1000)
+    laser_evm.open_states = [deepcopy(init_state)]
+    plugin_loader = LaserPluginLoader()
+    assert PluginDiscovery().is_installed("myth_concolic_execution")
+    trace_plugin = PluginDiscovery().installed_plugins["myth_concolic_execution"]()
+    time_handler.start_execution(laser_evm.execution_timeout)
+
+    plugin_loader.load(trace_plugin)
+    laser_evm.time = datetime.now()
+    plugin_loader.instrument_virtual_machine(laser_evm, None)
+    for transaction in concrete_data["steps"]:
+        execute_transaction(
+            laser_evm,
+            callee_address=transaction["address"],
+            caller_address=symbol_factory.BitVecVal(
+                int(transaction["origin"], 16), 256
+            ),
+            origin_address=symbol_factory.BitVecVal(
+                int(transaction["origin"], 16), 256
+            ),
+            gas_limit=int(transaction.get("gasLimit", "0x9999999999999999999999"), 16),
+            data=binascii.a2b_hex(transaction["input"][2:]),
+            gas_price=int(transaction.get("gasPrice", "0x773594000"), 16),
+            value=int(transaction["value"], 16),
+            track_gas=False,
+        )
+
+    tx_id_manager.restart_counter()
+    return init_state, plugin_loader.plugin_list["MythX Trace Finder"].tx_trace  # type: ignore
diff --git a/mythril_sol/config.ini b/mythril_sol/config.ini
new file mode 100644
index 0000000000000000000000000000000000000000..e8b1f34bf4c36914940b4d8bd4b3705dad2ff1c4
--- /dev/null
+++ b/mythril_sol/config.ini
@@ -0,0 +1,4 @@
+[defaults]
+dynamic_loading = infura
+infura_id = 
+
diff --git a/mythril_sol/disassembler/__init__.py b/mythril_sol/disassembler/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/mythril_sol/disassembler/asm.py b/mythril_sol/disassembler/asm.py
new file mode 100644
index 0000000000000000000000000000000000000000..c05197ff99178c95df4def4b1f414c2fb05974cd
--- /dev/null
+++ b/mythril_sol/disassembler/asm.py
@@ -0,0 +1,148 @@
+"""This module contains various helper classes and functions to deal with EVM
+code disassembly."""
+
+import re
+
+try:
+    from collections.abc import Generator
+except ImportError:
+    from collections import Generator
+
+from functools import lru_cache
+
+from mythril.ethereum import util
+from mythril.support.opcodes import OPCODES, ADDRESS, ADDRESS_OPCODE_MAPPING
+
+regex_PUSH = re.compile(r"^PUSH(\d*)$")
+
+
+class EvmInstruction:
+    """Model to hold the information of the disassembly."""
+
+    def __init__(self, address, op_code, argument=None):
+        self.address = address
+        self.op_code = op_code
+        self.argument = argument
+
+    def to_dict(self) -> dict:
+        """
+
+        :return:
+        """
+        result = {"address": self.address, "opcode": self.op_code}
+        if self.argument:
+            result["argument"] = self.argument
+        return result
+
+
+def instruction_list_to_easm(instruction_list: list) -> str:
+    """Convert a list of instructions into an easm op code string.
+
+    :param instruction_list:
+    :return:
+    """
+    result = ""
+
+    for instruction in instruction_list:
+        result += "{} {}".format(instruction["address"], instruction["opcode"])
+        if "argument" in instruction:
+            result += " " + instruction["argument"]
+        result += "\n"
+
+    return result
+
+
+def get_opcode_from_name(operation_name: str) -> int:
+    """Get an op code based on its name.
+
+    :param operation_name:
+    :return:
+    """
+    if operation_name in OPCODES:
+        return OPCODES[operation_name][ADDRESS]
+    raise RuntimeError("Unknown opcode")
+
+
+def find_op_code_sequence(pattern: list, instruction_list: list) -> Generator:
+    """Returns all indices in instruction_list that point to instruction
+    sequences following a pattern.
+
+    :param pattern: The pattern to look for, e.g. [["PUSH1", "PUSH2"], ["EQ"]] where ["PUSH1", "EQ"] satisfies pattern
+    :param instruction_list: List of instructions to look in
+    :return: Indices to the instruction sequences
+    """
+    for i in range(0, len(instruction_list) - len(pattern) + 1):
+        if is_sequence_match(pattern, instruction_list, i):
+            yield i
+
+
+def is_sequence_match(pattern: list, instruction_list: list, index: int) -> bool:
+    """Checks if the instructions starting at index follow a pattern.
+
+    :param pattern: List of lists describing a pattern, e.g. [["PUSH1", "PUSH2"], ["EQ"]] where ["PUSH1", "EQ"] satisfies pattern
+    :param instruction_list: List of instructions
+    :param index: Index to check for
+    :return: Pattern matched
+    """
+    for index, pattern_slot in enumerate(pattern, start=index):
+        try:
+            if not instruction_list[index]["opcode"] in pattern_slot:
+                return False
+        except IndexError:
+            return False
+    return True
+
+
+lru_cache(maxsize=2**10)
+
+
+def disassemble(bytecode) -> list:
+    """Disassembles evm bytecode and returns a list of instructions.
+
+    :param bytecode:
+    :return:
+    """
+    instruction_list = []
+    address = 0
+    length = len(bytecode)
+
+    if isinstance(bytecode, str):
+        bytecode = util.safe_decode(bytecode)
+        length = len(bytecode)
+        part_code = bytecode[-43:]
+    else:
+        try:
+            part_code = bytes(bytecode[-43:])
+        except TypeError:
+            part_code = ""
+    try:
+        if "bzzr" in str(part_code):
+            # ignore swarm hash
+            length -= 43
+    except ValueError:
+        pass
+
+    while address < length:
+        try:
+            op_code = ADDRESS_OPCODE_MAPPING[bytecode[address]]
+        except KeyError:
+            instruction_list.append(EvmInstruction(address, "INVALID"))
+            address += 1
+            continue
+
+        current_instruction = EvmInstruction(address, op_code)
+
+        match = re.search(regex_PUSH, op_code)
+        if match:
+            argument_bytes = bytecode[address + 1 : address + 1 + int(match.group(1))]
+            if isinstance(argument_bytes, bytes):
+                current_instruction.argument = "0x" + argument_bytes.hex()
+            else:
+                current_instruction.argument = argument_bytes
+            address += int(match.group(1))
+
+        instruction_list.append(current_instruction)
+        address += 1
+
+    # We use a to_dict() here for compatibility reasons
+    return [element.to_dict() for element in instruction_list]
diff --git a/mythril_sol/disassembler/disassembly.py b/mythril_sol/disassembler/disassembly.py
new file mode 100644
index 0000000000000000000000000000000000000000..99b2709d9b04b3e1a7f525571f152d774d5d3f0e
--- /dev/null
+++ b/mythril_sol/disassembler/disassembly.py
@@ -0,0 +1,114 @@
+"""This module contains the class used to represent disassembly code."""
+from mythril.ethereum import util
+from mythril.disassembler import asm
+from mythril.support.signatures import SignatureDB
+
+from typing import Dict, List, Tuple
+
+
+class Disassembly(object):
+    """Disassembly class.
+
+    Stores bytecode, and its disassembly.
+    Additionally it will gather the following information on the existing functions in the disassembled code:
+    - function hashes
+    - function name to entry point mapping
+    - function entry point to function name mapping
+    """
+
+    def __init__(self, code: str, enable_online_lookup: bool = False) -> None:
+        """
+
+        :param code:
+        :param enable_online_lookup:
+        """
+        self.bytecode = code
+        if isinstance(code, str):
+            self.instruction_list = asm.disassemble(util.safe_decode(code))
+        else:
+            self.instruction_list = asm.disassemble(code)
+        self.func_hashes: List[str] = []
+        self.function_name_to_address: Dict[str, int] = {}
+        self.address_to_function_name: Dict[int, str] = {}
+        self.enable_online_lookup = enable_online_lookup
+        self.assign_bytecode(bytecode=code)
+
+    def assign_bytecode(self, bytecode):
+        self.bytecode = bytecode
+        # open from default locations
+        # control if you want to have online signature hash lookups
+        signatures = SignatureDB(enable_online_lookup=self.enable_online_lookup)
+        self.instruction_list = asm.disassemble(bytecode)
+        # Need to take from PUSH1 to PUSH4 because solc seems to remove excess 0s at the beginning for optimizing
+        jump_table_indices = asm.find_op_code_sequence(
+            [("PUSH1", "PUSH2", "PUSH3", "PUSH4"), ("EQ",)], self.instruction_list
+        )
+
+        for index in jump_table_indices:
+            function_hash, jump_target, function_name = get_function_info(
+                index, self.instruction_list, signatures
+            )
+            self.func_hashes.append(function_hash)
+            if jump_target is not None and function_name is not None:
+                self.function_name_to_address[function_name] = jump_target
+                self.address_to_function_name[jump_target] = function_name
+
+    def get_easm(self):
+        """
+
+        :return:
+        """
+        return asm.instruction_list_to_easm(self.instruction_list)
+
+
+def get_function_info(
+    index: int, instruction_list: list, signature_database: SignatureDB
+) -> Tuple[str, int, str]:
+    """Finds the function information for a call table entry Solidity uses the
+    first 4 bytes of the calldata to indicate which function the message call
+    should execute The generated code that directs execution to the correct
+    function looks like this:
+
+    - PUSH function_hash
+    - EQ
+    - PUSH entry_point
+    - JUMPI
+
+    This function takes an index that points to the first instruction, and from that finds out the function hash,
+    function entry and the function name.
+
+    :param index: Start of the entry pattern
+    :param instruction_list: Instruction list for the contract that is being analyzed
+    :param signature_database: Database used to map function hashes to their respective function names
+    :return: function hash, function entry point, function name
+    """
+
+    # Append with missing 0s at the beginning
+    if isinstance(instruction_list[index]["argument"], tuple):
+        try:
+            function_hash = "0x" + bytes(
+                instruction_list[index]["argument"]
+            ).hex().rjust(8, "0")
+        except AttributeError:
+            raise ValueError(
+                "Mythril currently does not support symbolic function signatures"
+            )
+    else:
+        function_hash = "0x" + instruction_list[index]["argument"][2:].rjust(8, "0")
+
+    function_names = signature_database.get(function_hash)
+
+    if len(function_names) > 0:
+        function_name = " or ".join(set(function_names))
+    else:
+        function_name = "_function_" + function_hash
+
+    try:
+        offset = instruction_list[index + 2]["argument"]
+        if isinstance(offset, tuple):
+            offset = bytes(offset).hex()
+        entry_point = int(offset, 16)
+    except (KeyError, IndexError):
+        return function_hash, None, None
+
+    return function_hash, entry_point, function_name
diff --git a/mythril_sol/ethereum/__init__.py b/mythril_sol/ethereum/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/mythril_sol/ethereum/evmcontract.py b/mythril_sol/ethereum/evmcontract.py
new file mode 100644
index 0000000000000000000000000000000000000000..2d80d6113c06aa7de78268333ea354f4bbf9142f
--- /dev/null
+++ b/mythril_sol/ethereum/evmcontract.py
@@ -0,0 +1,119 @@
+"""This module contains the class representing EVM contracts, aka Smart
+Contracts."""
+import re
+import logging
+import persistent
+
+from mythril.support.support_utils import sha3
+from mythril.disassembler.disassembly import Disassembly
+from mythril.support.support_utils import get_code_hash
+
+log = logging.getLogger(__name__)
+
+
+class EVMContract(persistent.Persistent):
+    """This class represents an address with associated code (Smart
+    Contract)."""
+
+    def __init__(
+        self, code="", creation_code="", name="Unknown", enable_online_lookup=False
+    ):
+        """Create a new contract.
+
+        Workaround: We currently do not support compile-time linking.
+        Dynamic contract addresses of the format __[contract-name]_____________ are replaced with a generic address
+        Apply this for creation_code & code
+
+        :param code:
+        :param creation_code:
+        :param name:
+        :param enable_online_lookup:
+        """
+        creation_code = re.sub(r"(_{2}.{38})", "aa" * 20, creation_code)
+        code = re.sub(r"(_{2}.{38})", "aa" * 20, code)
+        self.creation_code = creation_code
+        self.name = name
+        self.code = code
+        self.disassembly = Disassembly(code, enable_online_lookup=enable_online_lookup)
+
+        self.creation_disassembly = Disassembly(
+            creation_code, enable_online_lookup=enable_online_lookup
+        )
+
+    @property
+    def bytecode_hash(self):
+        """
+
+        :return: runtime bytecode hash
+        """
+        return get_code_hash(self.code)
+
+    @property
+    def creation_bytecode_hash(self):
+        """
+
+        :return: Creation bytecode hash
+        """
+        return get_code_hash(self.creation_code)
+
+    def as_dict(self):
+        """
+
+        :return:
+        """
+        return {
+            "name": self.name,
+            "code": self.code,
+            "creation_code": self.creation_code,
+            "disassembly": self.disassembly,
+        }
+
+    def get_easm(self):
+        """
+
+        :return:
+        """
+        return self.disassembly.get_easm()
+
+    def get_creation_easm(self):
+        """
+
+        :return:
+        """
+        return self.creation_disassembly.get_easm()
+
+    def matches_expression(self, expression):
+        """
+
+        :param expression:
+        :return:
+        """
+        str_eval = ""
+        easm_code = None
+
+        tokens = re.split("\s+(and|or|not)\s+", expression, re.IGNORECASE)
+
+        for token in tokens:
+
+            if token in ("and", "or", "not"):
+                str_eval += " " + token + " "
+                continue
+
+            m = re.match(r"^code#([a-zA-Z0-9\s,\[\]]+)#", token)
+
+            if m:
+                if easm_code is None:
+                    easm_code = self.get_easm()
+
+                code = m.group(1).replace(",", "\\n")
+                str_eval += '"' + code + '" in easm_code'
+                continue
+
+            m = re.match(r"^func#([a-zA-Z0-9\s_,(\\)\[\]]+)#$", token)
+
+            if m:
+
+                sign_hash = "0x" + sha3(m.group(1))[:4].hex()
+                str_eval += '"' + sign_hash + '" in self.disassembly.func_hashes'
+
+        return eval(str_eval.strip())
diff --git a/mythril_sol/ethereum/interface/__init__.py b/mythril_sol/ethereum/interface/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/mythril_sol/ethereum/interface/rpc/__init__.py b/mythril_sol/ethereum/interface/rpc/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/mythril_sol/ethereum/interface/rpc/base_client.py b/mythril_sol/ethereum/interface/rpc/base_client.py
new file mode 100644
index 0000000000000000000000000000000000000000..a1240502e23e330cb0e1ade2d8d9c396e8c372e5
--- /dev/null
+++ b/mythril_sol/ethereum/interface/rpc/base_client.py
@@ -0,0 +1,102 @@
+"""This module provides a basic RPC interface client.
+
+This code is adapted from: https://github.com/ConsenSys/ethjsonrpc
+"""
+
+from abc import abstractmethod
+
+from .constants import BLOCK_TAG_LATEST, BLOCK_TAGS
+from .utils import hex_to_dec, validate_block
+
+GETH_DEFAULT_RPC_PORT = 8545
+ETH_DEFAULT_RPC_PORT = 8545
+PARITY_DEFAULT_RPC_PORT = 8545
+PYETHAPP_DEFAULT_RPC_PORT = 4000
+MAX_RETRIES = 3
+JSON_MEDIA_TYPE = "application/json"
+
+
+class BaseClient(object):
+    """The base RPC client class."""
+
+    @abstractmethod
+    def _call(self, method, params=None, _id=1):
+        """TODO: documentation
+
+        :param method:
+        :param params:
+        :param _id:
+        :return:
+        """
+
+        pass
+
+    def eth_coinbase(self):
+        """TODO: documentation
+
+        https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_coinbase
+
+        TESTED
+        """
+        return self._call("eth_coinbase")
+
+    def eth_blockNumber(self):
+        """TODO: documentation
+
+        https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_blocknumber
+
+        TESTED
+        """
+        return hex_to_dec(self._call("eth_blockNumber"))
+
+    def eth_getBalance(self, address=None, block=BLOCK_TAG_LATEST):
+        """TODO: documentation
+
+        https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_getbalance
+
+        TESTED
+        """
+        address = address or self.eth_coinbase()
+        block = validate_block(block)
+        return hex_to_dec(self._call("eth_getBalance", [address, block]))
+
+    def eth_getStorageAt(self, address=None, position=0, block=BLOCK_TAG_LATEST):
+        """TODO: documentation
+
+        https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_getstorageat
+
+        TESTED
+        """
+        block = validate_block(block)
+        return self._call("eth_getStorageAt", [address, hex(position), block])
+
+    def eth_getCode(self, address, default_block=BLOCK_TAG_LATEST):
+        """TODO: documentation
+
+        https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_getcode
+
+        NEEDS TESTING
+        """
+        if isinstance(default_block, str):
+            if default_block not in BLOCK_TAGS:
+                raise ValueError
+        return self._call("eth_getCode", [address, default_block])
+
+    def eth_getBlockByNumber(self, block=BLOCK_TAG_LATEST, tx_objects=True):
+        """TODO: documentation
+
+        https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_getblockbynumber
+
+        TESTED
+        """
+        block = validate_block(block)
+        return self._call("eth_getBlockByNumber", [block, tx_objects])
+
+    def eth_getTransactionReceipt(self, tx_hash):
+        """TODO: documentation
+
+        https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_gettransactionreceipt
+
+        TESTED
+        """
+        return self._call("eth_getTransactionReceipt", [tx_hash])
diff --git a/mythril_sol/ethereum/interface/rpc/client.py b/mythril_sol/ethereum/interface/rpc/client.py
new file mode 100644
index 0000000000000000000000000000000000000000..65864d21e41a8d64d8c0759306b66ea22d7705be
--- /dev/null
+++ b/mythril_sol/ethereum/interface/rpc/client.py
@@ -0,0 +1,88 @@
+"""This module contains a basic Ethereum RPC client.
+
+This code is adapted from: https://github.com/ConsenSys/ethjsonrpc
+"""
+import json
+import logging
+
+import requests
+from requests.adapters import HTTPAdapter
+from requests.exceptions import ConnectionError as RequestsConnectionError
+
+from .base_client import BaseClient
+from .exceptions import (
+    BadJsonError,
+    BadResponseError,
+    BadStatusCodeError,
+    ConnectionError,
+)
+
+log = logging.getLogger(__name__)
+
+GETH_DEFAULT_RPC_PORT = 8545
+ETH_DEFAULT_RPC_PORT = 8545
+PARITY_DEFAULT_RPC_PORT = 8545
+PYETHAPP_DEFAULT_RPC_PORT = 4000
+MAX_RETRIES = 3
+JSON_MEDIA_TYPE = "application/json"
+
+
+class EthJsonRpc(BaseClient):
+    """Ethereum JSON-RPC client class."""
+
+    def __init__(self, host="localhost", port=GETH_DEFAULT_RPC_PORT, tls=False):
+        """
+
+        :param host:
+        :param port:
+        :param tls:
+        """
+        self.host = host
+        self.port = port
+        self.tls = tls
+        self.session = requests.Session()
+        self.session.mount(self.host, HTTPAdapter(max_retries=MAX_RETRIES))
+
+    def _call(self, method, params=None, _id=1):
+        """
+
+        :param method:
+        :param params:
+        :param _id:
+        :return:
+        """
+        params = params or []
+        data = {"jsonrpc": "2.0", "method": method, "params": params, "id": _id}
+        scheme = "http"
+        if self.tls:
+            scheme += "s"
+        if self.host:
+            if self.port:
+                url = "{}://{}:{}".format(scheme, self.host, self.port)
+            else:
+                url = "{}://{}".format(scheme, self.host)
+
+        else:
+            url = "{}".format(scheme)
+
+        headers = {"Content-Type": JSON_MEDIA_TYPE}
+        log.debug("rpc send: %s" % json.dumps(data))
+        try:
+            r = self.session.post(url, headers=headers, data=json.dumps(data))
+        except RequestsConnectionError:
+            raise ConnectionError
+        if r.status_code / 100 != 2:
+            raise BadStatusCodeError(r.status_code)
+        try:
+            response = r.json()
+            log.debug("rpc response: %s" % response)
+        except ValueError:
+            raise BadJsonError(r.text)
+        try:
+            return response["result"]
+        except KeyError:
+            raise BadResponseError(response)
+
+    def close(self):
+        """Close the RPC client's session."""
+        self.session.close()
diff --git a/mythril_sol/ethereum/interface/rpc/constants.py b/mythril_sol/ethereum/interface/rpc/constants.py
new file mode 100644
index 0000000000000000000000000000000000000000..183bd1d39de303a043bc004eaf3457a84f2a606a
--- /dev/null
+++ b/mythril_sol/ethereum/interface/rpc/constants.py
@@ -0,0 +1,6 @@
+"""This file contains constants used used by the Ethereum JSON RPC
+interface."""
+BLOCK_TAG_EARLIEST = "earliest"
+BLOCK_TAG_LATEST = "latest"
+BLOCK_TAG_PENDING = "pending"
+BLOCK_TAGS = (BLOCK_TAG_EARLIEST, BLOCK_TAG_LATEST, BLOCK_TAG_PENDING)
diff --git a/mythril_sol/ethereum/interface/rpc/exceptions.py b/mythril_sol/ethereum/interface/rpc/exceptions.py
new file mode 100644
index 0000000000000000000000000000000000000000..3b5cccd55db04c626fc40d042fdc68a6addf7b76
--- /dev/null
+++ b/mythril_sol/ethereum/interface/rpc/exceptions.py
@@ -0,0 +1,35 @@
+"""This module contains exceptions regarding JSON-RPC communication."""
+
+
+class EthJsonRpcError(Exception):
+    """The JSON-RPC base exception type."""
+
+    pass
+
+
+class ConnectionError(EthJsonRpcError):
+    """An RPC exception denoting there was an error in connecting to the RPC
+    instance."""
+
+    pass
+
+
+class BadStatusCodeError(EthJsonRpcError):
+    """An RPC exception denoting a bad status code returned by the RPC
+    instance."""
+
+    pass
+
+
+class BadJsonError(EthJsonRpcError):
+    """An RPC exception denoting that the RPC instance returned a bad JSON
+    object."""
+
+    pass
+
+
+class BadResponseError(EthJsonRpcError):
+    """An RPC exception denoting that the RPC instance returned a bad
+    response."""
+
+    pass
diff --git a/mythril_sol/ethereum/interface/rpc/utils.py b/mythril_sol/ethereum/interface/rpc/utils.py
new file mode 100644
index 0000000000000000000000000000000000000000..c9a4e380e94717b7ed87416056c5ef5064956520
--- /dev/null
+++ b/mythril_sol/ethereum/interface/rpc/utils.py
@@ -0,0 +1,54 @@
+"""This module contains various utility functions regarding the RPC data format
+and validation."""
+from .constants import BLOCK_TAGS
+
+
+def hex_to_dec(x):
+    """Convert hex to decimal.
+
+    :param x:
+    :return:
+    """
+    return int(x, 16)
+
+
+def clean_hex(d):
+    """Convert decimal to hex and remove the "L" suffix that is appended to
+    large numbers.
+
+    :param d:
+    :return:
+    """
+    return hex(d).rstrip("L")
+
+
+def validate_block(block):
+    """
+
+    :param block:
+    :return:
+    """
+    if isinstance(block, str):
+        if block not in BLOCK_TAGS:
+            raise ValueError("invalid block tag")
+    if isinstance(block, int):
+        block = hex(block)
+    return block
+
+
+def wei_to_ether(wei):
+    """Convert wei to ether.
+
+    :param wei:
+    :return:
+    """
+    return 1.0 * wei / 10**18
+
+
+def ether_to_wei(ether):
+    """Convert ether to wei.
+
+    :param ether:
+    :return:
+    """
+    return ether * 10**18
diff --git a/mythril_sol/ethereum/util.py b/mythril_sol/ethereum/util.py
new file mode 100644
index 0000000000000000000000000000000000000000..f5d0383b30fefeae9978fc3705e4a194c9f5bc1c
--- /dev/null
+++ b/mythril_sol/ethereum/util.py
@@ -0,0 +1,229 @@
+"""This module contains various utility functions regarding unit conversion and
+solc integration."""
+import binascii
+import json
+import sys
+import os
+import platform
+import logging
+import solc
+import re
+import typing
+
+from pathlib import Path
+from requests.exceptions import ConnectionError
+from subprocess import PIPE, Popen
+from typing import Tuple
+
+from json.decoder import JSONDecodeError
+import semantic_version as semver
+from semantic_version import Version, NpmSpec
+from pyparsing import Word, Group, Optional, ZeroOrMore, oneOf, Regex, Combine
+
+from mythril.exceptions import CompilerError
+from mythril.support.support_args import args
+
+import solcx
+
+log = logging.getLogger(__name__)
+
+
+def safe_decode(hex_encoded_string):
+    """
+
+    :param hex_encoded_string:
+    :return:
+    """
+    if hex_encoded_string.startswith("0x"):
+        return bytes.fromhex(hex_encoded_string[2:])
+    else:
+        return bytes.fromhex(hex_encoded_string)
+
+
+def get_solc_json(file, solc_binary="solc", solc_settings_json=None):
+    """
+
+    :param file:
+    :param solc_binary:
+    :param solc_settings_json:
+    :return:
+    """
+    if args.solc_args is None:
+        cmd = [solc_binary, "--standard-json", "--allow-paths", ".,/"]
+    else:
+        cmd = [solc_binary, "--standard-json"] + args.solc_args.split()
+
+    settings = {}
+    if solc_settings_json:
+        with open(solc_settings_json) as f:
+            settings = json.load(f)
+    if "optimizer" not in settings:
+        settings.update({"optimizer": {"enabled": False}})
+
+    settings.update(
+        {
+            "outputSelection": {
+                "*": {
+                    "": ["ast"],
+                    "*": [
+                        "metadata",
+                        "evm.bytecode",
+                        "evm.deployedBytecode",
+                        "evm.methodIdentifiers",
+                    ],
+                }
+            },
+        }
+    )
+
+    input_json = json.dumps(
+        {
+            "language": "Solidity",
+            "sources": {file: {"urls": [file]}},
+            "settings": settings,
+        }
+    )
+
+    try:
+        p = Popen(cmd, stdin=PIPE, stdout=PIPE, stderr=PIPE)
+        stdout, stderr = p.communicate(bytes(input_json, "utf8"))
+
+    except FileNotFoundError:
+        raise CompilerError(
+            "Compiler not found. Make sure that solc is installed and in PATH, or set the SOLC environment variable."
+        )
+
+    out = stdout.decode("UTF-8")
+
+    try:
+        result = json.loads(out)
+    except JSONDecodeError as e:
+        log.error(f"Encountered a decode error.\n stdout:{out}\n stderr: {stderr}")
+        raise e
+
+    for error in result.get("errors", []):
+        if error["severity"] == "error":
+            raise CompilerError(
+                "Solc experienced a fatal error.\n\n%s" % error["formattedMessage"]
+            )
+
+    return result
+
+
+def get_random_address():
+    """
+
+    :return:
+    """
+    return binascii.b2a_hex(os.urandom(20)).decode("UTF-8")
+
+
+def get_indexed_address(index):
+    """
+
+    :param index:
+    :return:
+    """
+    return "0x" + (hex(index)[2:] * 40)
+
+
+def solc_exists(version):
+    """
+
+    :param version:
+    :return:
+    """
+
+    default_binary = "/usr/bin/solc"
+    if platform.system() == "Darwin":
+        solcx.import_installed_solc()
+    solcx.install_solc("v" + version)
+    solcx.set_solc_version("v" + version)
+    solc_binary = solcx.install.get_executable()
+    return solc_binary
+
+
+def parse_pragma(solidity_code):
+    lt = Word("<")
+    gtr = Word(">")
+    eq = Word("=")
+    carrot = Word("^")
+    version = Regex(r"\s*[0-9]+\s*\.\s*[0-9]+\s*(\.\s*[0-9]+)?")
+    inequality = Optional(
+        eq | (Combine(gtr + Optional(eq)) | Combine(lt + Optional(eq)))
+    )
+    min_version = Optional(carrot | inequality) + version
+    max_version = Optional(inequality + version)
+    pragma = Word("pragma") + Word("solidity") + min_version + Optional(max_version)
+    result = pragma.parseString(solidity_code)
+    min_inequality = result[2] if result[2] in [">", "<", ">=", "<=", "="] else ""
+    min_carrot = result[2] if result[2] == "^" else ""
+    min_version = result[3] if min_carrot != "" or min_inequality != "" else result[2]
+    return {
+        "min_carrot": min_carrot,
+        "min_inequality": min_inequality,
+        "min_version": min_version,
+        "max_inequality": result[4] if len(result) > 4 else None,
+        "max_version": result[5] if len(result) > 5 else None,
+    }
+
+
+try:
+    all_versions = solcx.get_installable_solc_versions()
+except ConnectionError:
+    # No internet, trying to proceed with installed compilers
+    all_versions = solcx.get_installed_solc_versions()
+
+
+def extract_version(file: typing.Optional[str]):
+    if file is None:
+        return None
+    version_line = None
+    for line in file.split("\n"):
+        if "pragma solidity" not in line:
+            continue
+        version_line = line.rstrip()
+        break
+    if version_line is None:
+        return None
+
+    assert "pragma solidity" in version_line
+    if version_line[-1] == ";":
+        version_line = version_line[:-1]
+    version_line = version_line[version_line.find("pragma") :]
+    pragma_dict = parse_pragma(version_line)
+
+    min_inequality = pragma_dict.get("min_inequality", None)
+    max_inequality = pragma_dict.get("max_inequality", None)
+    min_version = pragma_dict.get("min_version", None)
+    if min_version is not None:
+        min_version = min_version.replace(" ", "").replace("\t", "")
+    max_version = pragma_dict.get("max_version", None)
+    if max_version is not None:
+        max_version = max_version.replace(" ", "").replace("\t", "")
+
+    version_spec = (
+        f"{min_inequality}{min_version},{max_inequality}{max_version}"
+        if max_version
+        else min_version
+    )
+    version_constraint = semver.SimpleSpec(version_spec)
+
+    for version in all_versions:
+        if version in version_constraint:
+            if "0.5.17" in str(version):
+                # Solidity 0.5.17 Does not compile in a lot of cases.
+                continue
+            return str(version)
+
+
+def extract_binary(file: str) -> Tuple[str, str]:
+    file_data = None
+    with open(file) as f:
+        file_data = f.read()
+
+    version = extract_version(file_data)
+
+    if version is None:
+        return os.environ.get("SOLC") or "solc", version
+    return solc_exists(version), version
diff --git a/mythril_sol/exceptions.py b/mythril_sol/exceptions.py
new file mode 100644
index 0000000000000000000000000000000000000000..782c16892ea696214acc5ffe2213e42e1c9c308c
--- /dev/null
+++ b/mythril_sol/exceptions.py
@@ -0,0 +1,54 @@
+"""This module contains general exceptions used by Mythril."""
+
+
+class MythrilBaseException(Exception):
+    """The Mythril exception base type."""
+
+    pass
+
+
+class CompilerError(MythrilBaseException):
+    """A Mythril exception denoting an error during code compilation."""
+
+    pass
+
+
+class UnsatError(MythrilBaseException):
+    """A Mythril exception denoting the unsatisfiability of a series of
+    constraints."""
+
+    pass
+
+
+class SolverTimeOutException(UnsatError):
+    """A Mythril exception denoting the unsatisfiability of a series of
+    constraints."""
+
+    pass
+
+
+class NoContractFoundError(MythrilBaseException):
+    """A Mythril exception denoting that a given contract file was not
+    found."""
+
+    pass
+
+
+class CriticalError(MythrilBaseException):
+    """A Mythril exception denoting an unknown critical error has been
+    encountered."""
+
+    pass
+
+
+class DetectorNotFoundError(MythrilBaseException):
+    """A Mythril exception denoting attempted usage of a non-existant
+    detection module."""
+
+    pass
+
+
+class IllegalArgumentError(ValueError):
+    """The argument used does not exist"""
+
+    pass
diff --git a/mythril_sol/interfaces/__init__.py b/mythril_sol/interfaces/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/mythril_sol/interfaces/cli.py b/mythril_sol/interfaces/cli.py
new file mode 100644
index 0000000000000000000000000000000000000000..1cb5f479d9dc0f2a79011dadeecab24b06c82aae
--- /dev/null
+++ b/mythril_sol/interfaces/cli.py
@@ -0,0 +1,977 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+"""mythril.py: Bug hunting on the Ethereum blockchain
+
+   http://www.github.com/ConsenSys/mythril
+"""
+
+import argparse
+import json
+import logging
+import os
+import sys
+
+import coloredlogs
+import traceback
+from ast import literal_eval
+
+import mythril.support.signatures as sigs
+from argparse import ArgumentParser, Namespace, RawTextHelpFormatter
+from mythril.concolic import concolic_execution
+from mythril.exceptions import (
+    DetectorNotFoundError,
+    CriticalError,
+)
+from mythril.laser.ethereum.transaction.symbolic import ACTORS
+from mythril.plugin.discovery import PluginDiscovery
+from mythril.plugin.loader import MythrilPluginLoader
+
+from mythril.mythril import MythrilAnalyzer, MythrilDisassembler, MythrilConfig
+
+from mythril.analysis.module import ModuleLoader
+from mythril.analysis.report import Report
+
+from mythril.__version__ import __version__ as VERSION
+
+# Initialise core Mythril Component
+_ = MythrilPluginLoader()
+
+ANALYZE_LIST = ("analyze", "a")
+DISASSEMBLE_LIST = ("disassemble", "d")
+FOUNDRY_LIST = ("foundry", "f")
+
+CONCOLIC_LIST = ("concolic", "c")
+SAFE_FUNCTIONS_COMMAND = "safe-functions"
+READ_STORAGE_COMNAND = "read-storage"
+FUNCTION_TO_HASH_COMMAND = "function-to-hash"
+HASH_TO_ADDRESS_COMMAND = "hash-to-address"
+LIST_DETECTORS_COMMAND = "list-detectors"
+VERSION_COMMAND = "version"
+HELP_COMMAND = "help"
+
+log = logging.getLogger(__name__)
+
+COMMAND_LIST = (
+    ANALYZE_LIST
+    + DISASSEMBLE_LIST
+    + FOUNDRY_LIST
+    + CONCOLIC_LIST
+    + (
+        READ_STORAGE_COMNAND,
+        SAFE_FUNCTIONS_COMMAND,
+        FUNCTION_TO_HASH_COMMAND,
+        HASH_TO_ADDRESS_COMMAND,
+        LIST_DETECTORS_COMMAND,
+        VERSION_COMMAND,
+        HELP_COMMAND,
+    )
+)
+
+
+def exit_with_error(format_, message):
+    """
+    Exits with error
+    :param format_: The format of the message
+    :param message: message
+    """
+    if format_ == "text" or format_ == "markdown":
+        log.error(message)
+    elif format_ == "json":
+        result = {"success": False, "error": str(message), "issues": []}
+        print(json.dumps(result))
+    else:
+        result = [
+            {
+                "issues": [],
+                "sourceType": "",
+                "sourceFormat": "",
+                "sourceList": [],
+                "meta": {"logs": [{"level": "error", "hidden": True, "msg": message}]},
+            }
+        ]
+        print(json.dumps(result))
+    sys.exit()
+
+
+def get_runtime_input_parser() -> ArgumentParser:
+    """
+    Returns Parser which handles input
+    :return: Parser which handles input
+    """
+    parser = ArgumentParser(add_help=False)
+    parser.add_argument(
+        "-a",
+        "--address",
+        help="pull contract from the blockchain",
+        metavar="CONTRACT_ADDRESS",
+    )
+    parser.add_argument(
+        "--bin-runtime",
+        action="store_true",
+        help="Only when -c or -f is used. Consider the input bytecode as binary runtime code, default being the contract creation bytecode.",
+    )
+    return parser
+
+
+def get_creation_input_parser() -> ArgumentParser:
+    """
+    Returns Parser which handles input
+    :return: Parser which handles input
+    """
+    parser = ArgumentParser(add_help=False)
+    parser.add_argument(
+        "-c",
+        "--code",
+        help='hex-encoded bytecode string ("6060604052...")',
+        metavar="BYTECODE",
+    )
+    parser.add_argument(
+        "-f",
+        "--codefile",
+        help="file containing hex-encoded bytecode string",
+        metavar="BYTECODEFILE",
+        type=argparse.FileType("r"),
+    )
+    return parser
+
+
+def get_safe_functions_parser() -> ArgumentParser:
+    """
+    Returns Parser which handles checking for safe functions
+    :return: Parser which handles checking for safe functions
+    """
+    parser = ArgumentParser(add_help=False)
+    parser.add_argument(
+        "-c",
+        "--code",
+        help='hex-encoded bytecode string ("6060604052...")',
+        metavar="BYTECODE",
+    )
+    parser.add_argument(
+        "-f",
+        "--codefile",
+        help="file containing hex-encoded bytecode string",
+        metavar="BYTECODEFILE",
+        type=argparse.FileType("r"),
+    )
+    return parser
+
+
+def get_output_parser() -> ArgumentParser:
+    """
+    Get parser which handles output
+    :return: Parser which handles output
+    """
+    parser = argparse.ArgumentParser(add_help=False)
+    parser.add_argument(
+        "-o",
+        "--outform",
+        choices=["text", "markdown", "json", "jsonv2"],
+        default="text",
+        help="report output format",
+        metavar="<text/markdown/json/jsonv2>",
+    )
+    return parser
+
+
+def get_rpc_parser() -> ArgumentParser:
+    """
+    Get parser which handles RPC flags
+    :return: Parser which handles rpc inputs
+    """
+    parser = argparse.ArgumentParser(add_help=False)
+    parser.add_argument(
+        "--rpc",
+        help="custom RPC settings",
+        metavar="HOST:PORT / ganache / infura-[network_name]",
+        default="infura-mainnet",
+    )
+    parser.add_argument(
+        "--rpctls", type=bool, default=False, help="RPC connection over TLS"
+    )
+    parser.add_argument("--infura-id", help="set infura id for onchain analysis")
+
+    return parser
+
+
+def get_utilities_parser() -> ArgumentParser:
+    """
+    Get parser which handles utilities flags
+    :return: Parser which handles utility flags
+    """
+    parser = argparse.ArgumentParser(add_help=False)
+    parser.add_argument(
+        "--solc-json",
+        help="Json for the optional 'settings' parameter of solc's standard-json input",
+    )
+    parser.add_argument(
+        "--solc-args",
+        help="""Provide solc args, example: --solc-args "--allow-paths --include-path /root_folder/node_modules --base-path /home/contracts" """,
+        type=str,
+    )
+    parser.add_argument(
+        "--solv",
+        help="specify solidity compiler version. If not present, will try to install it (Experimental)",
+        metavar="SOLV",
+    )
+    return parser
+
+
+def create_concolic_parser(parser: ArgumentParser) -> ArgumentParser:
+    """
+    Get parser which handles arguments for concolic branch flipping
+    """
+    parser.add_argument(
+        "input",
+        help="The input jsonv2 file with concrete data",
+    )
+    parser.add_argument(
+        "--branches",
+        help="branch addresses to be flipped. usage: --branches 34,6f8,16a",
+        required=True,
+        metavar="BRANCH",
+    )
+    parser.add_argument(
+        "--solver-timeout",
+        type=int,
+        default=100000,
+        help="The maximum amount of time(in milli seconds) the solver spends for queries from analysis modules",
+    )
+    return parser
+
+
+def main() -> None:
+    """The main CLI interface entry point."""
+
+    rpc_parser = get_rpc_parser()
+    utilities_parser = get_utilities_parser()
+    runtime_input_parser = get_runtime_input_parser()
+    creation_input_parser = get_creation_input_parser()
+    output_parser = get_output_parser()
+
+    parser = argparse.ArgumentParser(
+        description="Security analysis of Ethereum smart contracts"
+    )
+    parser.add_argument("--epic", action="store_true", help=argparse.SUPPRESS)
+    parser.add_argument(
+        "-v", type=int, help="log level (0-5)", metavar="LOG_LEVEL", default=2
+    )
+
+    subparsers = parser.add_subparsers(dest="command", help="Commands")
+    safe_function_parser = subparsers.add_parser(
+        SAFE_FUNCTIONS_COMMAND,
+        help="Check functions which are completely safe using symbolic execution",
+        parents=[
+            rpc_parser,
+            utilities_parser,
+            creation_input_parser,
+            runtime_input_parser,
+            output_parser,
+        ],
+        formatter_class=RawTextHelpFormatter,
+    )
+    analyzer_parser = subparsers.add_parser(
+        ANALYZE_LIST[0],
+        help="Triggers the analysis of the smart contract",
+        parents=[
+            rpc_parser,
+            utilities_parser,
+            creation_input_parser,
+            runtime_input_parser,
+            output_parser,
+        ],
+        aliases=ANALYZE_LIST[1:],
+        formatter_class=RawTextHelpFormatter,
+    )
+    create_safe_functions_parser(safe_function_parser)
+    create_analyzer_parser(analyzer_parser)
+
+    disassemble_parser = subparsers.add_parser(
+        DISASSEMBLE_LIST[0],
+        help="Disassembles the smart contract",
+        aliases=DISASSEMBLE_LIST[1:],
+        parents=[
+            rpc_parser,
+            utilities_parser,
+            creation_input_parser,
+            runtime_input_parser,
+        ],
+        formatter_class=RawTextHelpFormatter,
+    )
+    create_disassemble_parser(disassemble_parser)
+
+    if PluginDiscovery().is_installed("myth_concolic_execution"):
+        concolic_parser = subparsers.add_parser(
+            CONCOLIC_LIST[0],
+            help="Runs concolic execution to flip the desired branches",
+            aliases=CONCOLIC_LIST[1:],
+            parents=[],
+            formatter_class=RawTextHelpFormatter,
+        )
+        create_concolic_parser(concolic_parser)
+
+    foundry_parser = subparsers.add_parser(
+        FOUNDRY_LIST[0],
+        help="Triggers the analysis of the smart contract",
+        parents=[
+            rpc_parser,
+            utilities_parser,
+            output_parser,
+        ],
+        aliases=FOUNDRY_LIST[1:],
+        formatter_class=RawTextHelpFormatter,
+    )
+
+    _ = subparsers.add_parser(
+        LIST_DETECTORS_COMMAND,
+        parents=[output_parser],
+        help="Lists available detection modules",
+    )
+    read_storage_parser = subparsers.add_parser(
+        READ_STORAGE_COMNAND,
+        help="Retrieves storage slots from a given address through rpc",
+        parents=[rpc_parser],
+    )
+    contract_func_to_hash = subparsers.add_parser(
+        FUNCTION_TO_HASH_COMMAND, help="Returns the hash signature of the function"
+    )
+    contract_hash_to_addr = subparsers.add_parser(
+        HASH_TO_ADDRESS_COMMAND,
+        help="converts the hashes in the blockchain to ethereum address",
+    )
+    subparsers.add_parser(
+        VERSION_COMMAND, parents=[output_parser], help="Outputs the version"
+    )
+
+    create_read_storage_parser(read_storage_parser)
+    create_hash_to_addr_parser(contract_hash_to_addr)
+    create_func_to_hash_parser(contract_func_to_hash)
+    create_foundry_parser(foundry_parser)
+    subparsers.add_parser(HELP_COMMAND, add_help=False)
+
+    # Get config values
+
+    args = parser.parse_args()
+    parse_args_and_execute(parser=parser, args=args)
+
+
+def create_disassemble_parser(parser: ArgumentParser):
+    """
+    Modify parser to handle disassembly
+    :param parser:
+    :return:
+    """
+    # Using nargs=* would the implementation below for getting code for both disassemble and analyze
+    parser.add_argument(
+        "solidity_files",
+        nargs="*",
+        help="Inputs file name and contract name. Currently supports a single contract\n"
+        "usage: file1.sol:OptionalContractName",
+    )
+
+
+def create_read_storage_parser(read_storage_parser: ArgumentParser):
+    """
+    Modify parser to handle storage slots
+    :param read_storage_parser:
+    :return:
+    """
+
+    read_storage_parser.add_argument(
+        "storage_slots",
+        help="read state variables from storage index",
+        metavar="INDEX,NUM_SLOTS,[array] / mapping,INDEX,[KEY1, KEY2...]",
+    )
+    read_storage_parser.add_argument(
+        "address", help="contract address", metavar="ADDRESS"
+    )
+
+
+def create_func_to_hash_parser(parser: ArgumentParser):
+    """
+    Modify parser to handle func_to_hash command
+    :param parser:
+    :return:
+    """
+    parser.add_argument(
+        "func_name", help="calculate function signature hash", metavar="SIGNATURE"
+    )
+
+
+def create_hash_to_addr_parser(hash_parser: ArgumentParser):
+    """
+    Modify parser to handle hash_to_addr command
+    :param hash_parser:
+    :return:
+    """
+    hash_parser.add_argument(
+        "hash", help="Find the address from hash", metavar="FUNCTION_NAME"
+    )
+
+
+def add_graph_commands(parser: ArgumentParser):
+    commands = parser.add_argument_group("commands")
+    commands.add_argument("-g", "--graph", help="generate a control flow graph")
+    commands.add_argument(
+        "-j",
+        "--statespace-json",
+        help="dumps the statespace json",
+        metavar="OUTPUT_FILE",
+    )
+
+
+def create_safe_functions_parser(parser: ArgumentParser):
+    """
+    The duplication exists between safe-functions and analyze as some of them have different default values.
+    :param parser: Parser
+    """
+    parser.add_argument(
+        "solidity_files",
+        nargs="*",
+        help="Inputs file name and contract name. \n"
+        "usage: file1.sol:OptionalContractName file2.sol file3.sol:OptionalContractName",
+    )
+
+    options = parser.add_argument_group("options")
+    add_analysis_args(options)
+
+
+def add_analysis_args(options):
+    """
+    Adds arguments for analysis
+
+    :param options: Analysis Options
+    """
+
+    options.add_argument(
+        "-m",
+        "--modules",
+        help="Comma-separated list of security analysis modules",
+        metavar="MODULES",
+    )
+    options.add_argument(
+        "--max-depth",
+        type=int,
+        default=128,
+        help="Maximum recursion depth for symbolic execution",
+    )
+    options.add_argument(
+        "--call-depth-limit",
+        type=int,
+        default=3,
+        help="Maximum call depth limit for symbolic execution",
+    )
+
+    options.add_argument(
+        "--strategy",
+        choices=["dfs", "bfs", "naive-random", "weighted-random", "pending"],
+        default="bfs",
+        help="Symbolic execution strategy",
+    )
+    options.add_argument(
+        "--transaction-sequences",
+        type=str,
+        default=None,
+        help="The possible transaction sequences to be executed. "
+        "Like [[func_hash1, func_hash2], [func_hash2, func_hash3]] where the first transaction is constrained "
+        "with func_hash1 and func_hash2, and the second tx is constrained with func_hash2 and func_hash3. Use -1 as a proxy for fallback() function and -2 for receive() function.",
+    )
+    options.add_argument(
+        "--beam-search",
+        type=int,
+        default=None,
+        help="Beam search with with",
+    )
+    options.add_argument(
+        "-b",
+        "--loop-bound",
+        type=int,
+        default=3,
+        help="Bound loops at n iterations",
+        metavar="N",
+    )
+    options.add_argument(
+        "-t",
+        "--transaction-count",
+        type=int,
+        default=2,
+        help="Maximum number of transactions issued by laser",
+    )
+    options.add_argument(
+        "--execution-timeout",
+        type=int,
+        default=3600,
+        help="The amount of seconds to spend on symbolic execution",
+    )
+    options.add_argument(
+        "--solver-timeout",
+        type=int,
+        default=25000,
+        help="The maximum amount of time(in milli seconds) the solver spends for queries from analysis modules",
+    )
+    options.add_argument(
+        "--create-timeout",
+        type=int,
+        default=30,
+        help="The amount of seconds to spend on the initial contract creation",
+    )
+    options.add_argument(
+        "--parallel-solving",
+        action="store_true",
+        help="Enable solving z3 queries in parallel",
+    )
+    options.add_argument(
+        "--solver-log",
+        help="Path to the directory for solver log",
+        metavar="SOLVER_LOG",
+    )
+    options.add_argument(
+        "--no-onchain-data",
+        action="store_true",
+        help="Don't attempt to retrieve contract code, variables and balances from the blockchain",
+    )
+    options.add_argument(
+        "--pruning-factor",
+        type=float,
+        default=None,
+        help="Checks for reachability at the rate of <pruning-factor> (range 0-1.0). Where 1.0 would mean checking for every execution",
+    )
+    options.add_argument(
+        "--unconstrained-storage",
+        action="store_true",
+        help="Default storage value is symbolic, turns off the on-chain storage loading",
+    )
+
+    options.add_argument(
+        "--phrack", action="store_true", help="Phrack-style call graph"
+    )
+    options.add_argument(
+        "--enable-physics", action="store_true", help="Enable graph physics simulation"
+    )
+    options.add_argument(
+        "-q",
+        "--query-signature",
+        action="store_true",
+        help="Lookup function signatures through www.4byte.directory",
+    )
+    options.add_argument(
+        "--disable-iprof", action="store_true", help="Disable the instruction profiler"
+    )
+    options.add_argument(
+        "--disable-dependency-pruning",
+        action="store_true",
+        help="Deactivate dependency-based pruning",
+    )
+    options.add_argument(
+        "--disable-coverage-strategy",
+        action="store_true",
+        help="Disable coverage based search strategy",
+    )
+    options.add_argument(
+        "--disable-mutation-pruner",
+        action="store_true",
+        help="Disable mutation pruner",
+    )
+    options.add_argument(
+        "--custom-modules-directory",
+        help="Designates a separate directory to search for custom analysis modules",
+        metavar="CUSTOM_MODULES_DIRECTORY",
+    )
+    options.add_argument(
+        "--attacker-address",
+        help="Designates a specific attacker address to use during analysis",
+        metavar="ATTACKER_ADDRESS",
+    )
+    options.add_argument(
+        "--creator-address",
+        help="Designates a specific creator address to use during analysis",
+        metavar="CREATOR_ADDRESS",
+    )
+
+
+def create_analyzer_parser(analyzer_parser: ArgumentParser):
+    """
+    Modify parser to handle analyze command
+    :param analyzer_parser:
+    :return:
+    """
+    analyzer_parser.add_argument(
+        "solidity_files",
+        nargs="*",
+        help="Inputs file name and contract name. \n"
+        "usage: file1.sol:OptionalContractName file2.sol file3.sol:OptionalContractName",
+    )
+    add_graph_commands(analyzer_parser)
+    options = analyzer_parser.add_argument_group("options")
+    add_analysis_args(options)
+
+
+def create_foundry_parser(foundry_parser: ArgumentParser):
+    add_graph_commands(foundry_parser)
+    options = foundry_parser.add_argument_group("options")
+    add_analysis_args(options)
+
+
+def validate_args(args: Namespace):
+    """
+    Validate cli args
+    :param args:
+    :return:
+    """
+    if hasattr(args, "v"):
+        if 0 <= args.v < 6:
+            log_levels = [
+                logging.NOTSET,
+                logging.CRITICAL,
+                logging.ERROR,
+                logging.WARNING,
+                logging.INFO,
+                logging.DEBUG,
+            ]
+            coloredlogs.install(
+                fmt="%(name)s [%(levelname)s]: %(message)s", level=log_levels[args.v]
+            )
+        else:
+            exit_with_error(
+                args.outform, "Invalid -v value, you can find valid values in usage"
+            )
+
+    if args.command in DISASSEMBLE_LIST and len(args.solidity_files) > 1:
+        exit_with_error("text", "Only a single arg is supported for using disassemble")
+
+    if getattr(args, "transaction_sequences", None):
+        if getattr(args, "disable_dependency_pruning", False) is False:
+            log.warning(
+                "It is advised to disable dependency pruning (use the flag --disable-dependency-pruning) when specifying transaction sequences."
+            )
+        try:
+            args.transaction_sequences = literal_eval(str(args.transaction_sequences))
+        except ValueError:
+            exit_with_error(
+                args.outform,
+                "The transaction sequence is in incorrect format, It should be "
+                "[list of possible function hashes in 1st transaction, "
+                "list of possible func hashes in 2nd tx, ...] "
+                "If any list is empty then all possible functions are considered for that transaction."
+                "Use -1 as a proxy for fallback() and -2 for receive() function.",
+            )
+        if len(args.transaction_sequences) != args.transaction_count:
+            args.transaction_count = len(args.transaction_sequences)
+
+    if args.command in ANALYZE_LIST:
+        if args.query_signature and sigs.ethereum_input_decoder is None:
+            exit_with_error(
+                args.outform,
+                "The --query-signature function requires the python package ethereum-input-decoder",
+            )
+
+
+def set_config(args: Namespace):
+    """
+    Set config based on args
+    :param args:
+    :return: modified config
+    """
+    config = MythrilConfig()
+    if getattr(args, "infura_id", None):
+        config.set_api_infura_id(args.infura_id)
+    if (args.command in ANALYZE_LIST and not args.no_onchain_data) and not (
+        args.rpc or args.i
+    ):
+        config.set_api_from_config_path()
+
+    if getattr(args, "rpc", None):
+        # Establish RPC connection if necessary
+        config.set_api_rpc(rpc=args.rpc, rpctls=args.rpctls)
+
+    return config
+
+
+def load_code(disassembler: MythrilDisassembler, args: Namespace):
+    """
+    Loads code into disassembly and returns address
+    :param disassembler:
+    :param args:
+    :return: Address
+    """
+
+    address = None
+    if getattr(args, "code", None):
+        # Load from bytecode
+        code = args.code[2:] if args.code.startswith("0x") else args.code
+        address, _ = disassembler.load_from_bytecode(code, args.bin_runtime)
+    elif getattr(args, "codefile", None):
+        bytecode = "".join([l.strip() for l in args.codefile if len(l.strip()) > 0])
+        bytecode = bytecode[2:] if bytecode.startswith("0x") else bytecode
+        address, _ = disassembler.load_from_bytecode(bytecode, args.bin_runtime)
+    elif getattr(args, "address", None):
+        # Get bytecode from a contract address
+        address, _ = disassembler.load_from_address(args.address)
+    elif getattr(args, "solidity_files", None):
+        # Compile Solidity source file(s)
+        if args.command in ANALYZE_LIST and args.graph and len(args.solidity_files) > 1:
+            exit_with_error(
+                args.outform,
+                "Cannot generate call graphs from multiple input files. Please do it one at a time.",
+            )
+        address, _ = disassembler.load_from_solidity(
+            args.solidity_files
+        )  # list of files
+    elif args.command in FOUNDRY_LIST:
+        address, _ = disassembler.load_from_foundry()
+
+    else:
+        exit_with_error(
+            getattr(args, "outform", "text"),
+            "No input bytecode. Please provide EVM code via -c BYTECODE, -a ADDRESS, -f BYTECODE_FILE or <SOLIDITY_FILE>",
+        )
+    return address
+
+
+def print_function_report(myth_disassembler: MythrilDisassembler, report: Report):
+    """
+    Prints the function report
+    :param report: Mythril's report
+    :return:
+    """
+    contract_data = {}
+    for contract in myth_disassembler.contracts:
+        contract_data[contract.name] = list(
+            set(contract.disassembly.address_to_function_name.values())
+        )
+
+    for issue in report.issues.values():
+        if issue.function in contract_data[issue.contract]:
+            contract_data[issue.contract].remove(issue.function)
+
+    for contract, function_list in contract_data.items():
+        print(f"Contract {contract}: \n")
+        print(
+            f"""{len(function_list)} functions are deemed safe in this contract: {", ".join(function_list)}\n\n"""
+        )
+
+
+def execute_command(
+    disassembler: MythrilDisassembler,
+    address: str,
+    parser: ArgumentParser,
+    args: Namespace,
+):
+    """
+    Execute command
+    :param disassembler:
+    :param address:
+    :param parser:
+    :param args:
+    :return:
+    """
+    if getattr(args, "beam_search", None):
+        strategy = f"beam-search: {args.beam_search}"
+    else:
+        strategy = getattr(args, "strategy", "dfs")
+
+    if args.command == READ_STORAGE_COMNAND:
+        storage = disassembler.get_state_variable_from_storage(
+            address=address,
+            params=[a.strip() for a in args.storage_slots.strip().split(",")],
+        )
+        print(storage)
+
+    elif args.command in DISASSEMBLE_LIST:
+        if disassembler.contracts[0].code:
+            print("Runtime Disassembly: \n" + disassembler.contracts[0].get_easm())
+        if disassembler.contracts[0].creation_code:
+            print("Disassembly: \n" + disassembler.contracts[0].get_creation_easm())
+
+    elif args.command == SAFE_FUNCTIONS_COMMAND:
+        args.unconstrained_storage = True
+        args.pruning_factor = 1
+        args.disable_dependency_pruning = True
+        args.no_onchain_data = True
+        function_analyzer = MythrilAnalyzer(
+            strategy=strategy, disassembler=disassembler, address=address, cmd_args=args
+        )
+        try:
+            report = function_analyzer.fire_lasers(
+                modules=[m.strip() for m in args.modules.strip().split(",")]
+                if args.modules
+                else None,
+                transaction_count=1,
+            )
+            print_function_report(disassembler, report)
+        except DetectorNotFoundError as e:
+            exit_with_error("text", format(e))
+        except CriticalError as e:
+            exit_with_error("text", "Analysis error encountered: " + format(e))
+
+    elif args.command in ANALYZE_LIST + FOUNDRY_LIST:
+        analyzer = MythrilAnalyzer(
+            strategy=strategy, disassembler=disassembler, address=address, cmd_args=args
+        )
+
+        if not disassembler.contracts:
+            exit_with_error(
+                args.outform, "input files do not contain any valid contracts"
+            )
+
+        if args.attacker_address:
+            try:
+                ACTORS["ATTACKER"] = args.attacker_address
+            except ValueError:
+                exit_with_error(args.outform, "Attacker address is invalid")
+
+        if args.creator_address:
+            try:
+                ACTORS["CREATOR"] = args.creator_address
+            except ValueError:
+                exit_with_error(args.outform, "Creator address is invalid")
+
+        if args.graph:
+            html = analyzer.graph_html(
+                contract=analyzer.contracts[0],
+                enable_physics=args.enable_physics,
+                phrackify=args.phrack,
+                transaction_count=args.transaction_count,
+            )
+
+            try:
+                with open(args.graph, "w") as f:
+                    f.write(html)
+            except Exception as e:
+                exit_with_error(args.outform, "Error saving graph: " + str(e))
+
+        elif args.statespace_json:
+
+            if not analyzer.contracts:
+                exit_with_error(
+                    args.outform, "input files do not contain any valid contracts"
+                )
+
+            statespace = analyzer.dump_statespace(contract=analyzer.contracts[0])
+
+            try:
+                with open(args.statespace_json, "w") as f:
+                    json.dump(statespace, f)
+            except Exception as e:
+                exit_with_error(args.outform, "Error saving json: " + str(e))
+
+        else:
+            try:
+                report = analyzer.fire_lasers(
+                    modules=[m.strip() for m in args.modules.strip().split(",")]
+                    if args.modules
+                    else None,
+                    transaction_count=args.transaction_count,
+                )
+
+                outputs = {
+                    "json": report.as_json(),
+                    "jsonv2": report.as_swc_standard_format(),
+                    "text": report.as_text(),
+                    "markdown": report.as_markdown(),
+                }
+                print(outputs[args.outform])
+                if len(report.issues) > 0:
+                    exit(1)
+                else:
+                    exit(0)
+            except DetectorNotFoundError as e:
+                exit_with_error(args.outform, format(e))
+            except CriticalError as e:
+                exit_with_error(
+                    args.outform, "Analysis error encountered: " + format(e)
+                )
+
+    else:
+        parser.print_help()
+
+
+def contract_hash_to_address(args: Namespace):
+    """
+    prints the hash from function signature
+    :param args:
+    :return:
+    """
+    print(MythrilDisassembler.hash_for_function_signature(args.func_name))
+    sys.exit()
+
+
+def parse_args_and_execute(parser: ArgumentParser, args: Namespace) -> None:
+    """
+    Parses the arguments
+    :param parser: The parser
+    :param args: The args
+    """
+
+    if args.epic:
+        path = os.path.dirname(os.path.realpath(__file__))
+        sys.argv.remove("--epic")
+        os.system(" ".join(sys.argv) + " | python3 " + path + "/epic.py")
+        sys.exit()
+
+    if args.command not in COMMAND_LIST or args.command is None:
+        parser.print_help()
+        sys.exit()
+
+    if args.command == VERSION_COMMAND:
+        if args.outform == "json":
+            print(json.dumps({"version_str": VERSION}))
+        else:
+            print("Mythril version {}".format(VERSION))
+        sys.exit()
+
+    if args.command == LIST_DETECTORS_COMMAND:
+        modules = []
+        for module in ModuleLoader().get_detection_modules():
+            modules.append({"classname": type(module).__name__, "title": module.name})
+        if args.outform == "json":
+            print(json.dumps(modules))
+        else:
+            for module_data in modules:
+                print("{}: {}".format(module_data["classname"], module_data["title"]))
+        sys.exit()
+
+    if args.command == HELP_COMMAND:
+        parser.print_help()
+        sys.exit()
+
+    if args.command in CONCOLIC_LIST:
+        _ = MythrilConfig.init_mythril_dir()
+        with open(args.input) as f:
+            concrete_data = json.load(f)
+        output_list = concolic_execution(
+            concrete_data, args.branches.split(","), args.solver_timeout
+        )
+        json.dump(output_list, sys.stdout, indent=4)
+        sys.exit()
+
+    # Parse cmdline args
+    validate_args(args)
+    try:
+        if args.command == FUNCTION_TO_HASH_COMMAND:
+            contract_hash_to_address(args)
+        config = set_config(args)
+        query_signature = getattr(args, "query_signature", None)
+        solc_json = getattr(args, "solc_json", None)
+        solv = getattr(args, "solv", None)
+        solc_args = getattr(args, "solc_args", None)
+        disassembler = MythrilDisassembler(
+            eth=config.eth,
+            solc_version=solv,
+            solc_settings_json=solc_json,
+            enable_online_lookup=query_signature,
+            solc_args=solc_args,
+        )
+
+        address = load_code(disassembler, args)
+        execute_command(
+            disassembler=disassembler, address=address, parser=parser, args=args
+        )
+    except CriticalError as ce:
+        exit_with_error(getattr(args, "outform", "text"), str(ce))
+    except Exception:
+        exit_with_error(getattr(args, "outform", "text"), traceback.format_exc())
+
+
+if __name__ == "__main__":
+    main()
diff --git a/mythril_sol/interfaces/epic.py b/mythril_sol/interfaces/epic.py
new file mode 100755
index 0000000000000000000000000000000000000000..a8cc7b53b8cccb1038d9188263b67e3585eb0e37
--- /dev/null
+++ b/mythril_sol/interfaces/epic.py
@@ -0,0 +1,286 @@
+"""Don't ask."""
+#!/usr/bin/env python
+#
+# "THE BEER-WARE LICENSE" (Revision 43~maze)
+#
+# <maze@pyth0n.org> wrote these files. As long as you retain this notice you
+# can do whatever you want with this stuff. If we meet some day, and you think
+# this stuff is worth it, you can buy me a beer in return.
+
+# https://github.com/tehmaze/lolcat
+
+import atexit
+import math
+import os
+import random
+import re
+import sys
+import time
+import argparse
+
+PY3 = sys.version_info >= (3,)
+
+# Reset terminal colors at exit
+def reset():
+    """"""
+    sys.stdout.write("\x1b[0m")
+    sys.stdout.flush()
+
+
+atexit.register(reset)
+
+
+STRIP_ANSI = re.compile(r"\x1b\[(\d+)(;\d+)?(;\d+)?[m|K]")
+COLOR_ANSI = (
+    (0x00, 0x00, 0x00),
+    (0xCD, 0x00, 0x00),
+    (0x00, 0xCD, 0x00),
+    (0xCD, 0xCD, 0x00),
+    (0x00, 0x00, 0xEE),
+    (0xCD, 0x00, 0xCD),
+    (0x00, 0xCD, 0xCD),
+    (0xE5, 0xE5, 0xE5),
+    (0x7F, 0x7F, 0x7F),
+    (0xFF, 0x00, 0x00),
+    (0x00, 0xFF, 0x00),
+    (0xFF, 0xFF, 0x00),
+    (0x5C, 0x5C, 0xFF),
+    (0xFF, 0x00, 0xFF),
+    (0x00, 0xFF, 0xFF),
+    (0xFF, 0xFF, 0xFF),
+)
+
+
+class LolCat(object):
+    """Cats lel."""
+
+    def __init__(self, mode=256, output=sys.stdout):
+        self.mode = mode
+        self.output = output
+
+    def _distance(self, rgb1, rgb2):
+        return sum(map(lambda c: (c[0] - c[1]) ** 2, zip(rgb1, rgb2)))
+
+    def ansi(self, rgb):
+        """
+
+        :param rgb:
+        :return:
+        """
+        r, g, b = rgb
+
+        if self.mode in (8, 16):
+            colors = COLOR_ANSI[: self.mode]
+            matches = [
+                (self._distance(c, map(int, rgb)), i) for i, c in enumerate(colors)
+            ]
+            matches.sort()
+            color = matches[0][1]
+
+            return "3%d" % (color,)
+        else:
+            gray_possible = True
+            sep = 2.5
+
+            while gray_possible:
+                if r < sep or g < sep or b < sep:
+                    gray = r < sep and g < sep and b < sep
+                    gray_possible = False
+
+                sep += 42.5
+
+            if gray:
+                color = 232 + int(float(sum(rgb) / 33.0))
+            else:
+                color = sum(
+                    [16]
+                    + [
+                        int(6 * float(val) / 256) * mod
+                        for val, mod in zip(rgb, [36, 6, 1])
+                    ]
+                )
+
+            return "38;5;%d" % (color,)
+
+    def wrap(self, *codes):
+        """
+
+        :param codes:
+        :return:
+        """
+        return "\x1b[%sm" % ("".join(codes),)
+
+    def rainbow(self, freq, i):
+        """
+
+        :param freq:
+        :param i:
+        :return:
+        """
+        r = math.sin(freq * i) * 127 + 128
+        g = math.sin(freq * i + 2 * math.pi / 3) * 127 + 128
+        b = math.sin(freq * i + 4 * math.pi / 3) * 127 + 128
+        return [r, g, b]
+
+    def cat(self, fd, options):
+        """
+
+        :param fd:
+        :param options:
+        """
+        if options.animate:
+            self.output.write("\x1b[?25l")
+
+        for line in fd:
+            options.os += 1
+            self.println(line, options)
+
+        if options.animate:
+            self.output.write("\x1b[?25h")
+
+    def println(self, s, options):
+        """
+
+        :param s:
+        :param options:
+        """
+        s = s.rstrip()
+        if options.force or self.output.isatty():
+            s = STRIP_ANSI.sub("", s)
+
+        if options.animate:
+            self.println_ani(s, options)
+        else:
+            self.println_plain(s, options)
+
+        self.output.write("\n")
+        self.output.flush()
+
+    def println_ani(self, s, options):
+        """
+
+        :param s:
+        :param options:
+        :return:
+        """
+        if not s:
+            return
+
+        for _ in range(1, options.duration):
+            self.output.write("\x1b[%dD" % (len(s),))
+            self.output.flush()
+            options.os += options.spread
+            self.println_plain(s, options)
+            time.sleep(1.0 / options.speed)
+
+    def println_plain(self, s, options):
+        """
+
+        :param s:
+        :param options:
+        """
+        for i, c in enumerate(s if PY3 else s.decode(options.charset_py2, "replace")):
+            rgb = self.rainbow(options.freq, options.os + i / options.spread)
+            self.output.write(
+                "".join(
+                    [
+                        self.wrap(self.ansi(rgb)),
+                        c if PY3 else c.encode(options.charset_py2, "replace"),
+                    ]
+                )
+            )
+
+
+def detect_mode(term_hint="xterm-256color"):
+    """Poor-mans color mode detection."""
+    if "ANSICON" in os.environ:
+        return 16
+    elif os.environ.get("ConEmuANSI", "OFF") == "ON":
+        return 256
+    else:
+        term = os.environ.get("TERM", term_hint)
+        if term.endswith("-256color") or term in ("xterm", "screen"):
+            return 256
+        elif term.endswith("-color") or term in ("rxvt",):
+            return 16
+        else:
+            return 256  # optimistic default
+
+
+def run():
+    """Main entry point."""
+
+    parser = argparse.ArgumentParser(usage=r"%prog [<options>] [file ...]")
+    parser.add_argument(
+        "-p", "--spread", type=float, default=3.0, help="Rainbow spread"
+    )
+    parser.add_argument(
+        "-F", "--freq", type=float, default=0.1, help="Rainbow frequency"
+    )
+    parser.add_argument("-S", "--seed", type=int, default=0, help="Rainbow seed")
+    parser.add_argument(
+        "-a",
+        "--animate",
+        action="store_true",
+        default=False,
+        help="Enable psychedelics",
+    )
+    parser.add_argument(
+        "-d", "--duration", type=int, default=12, help="Animation duration"
+    )
+    parser.add_argument(
+        "-s", "--speed", type=float, default=20.0, help="Animation speed"
+    )
+    parser.add_argument(
+        "-f",
+        "--force",
+        action="store_true",
+        default=False,
+        help="Force colour even when stdout is not a tty",
+    )
+
+    parser.add_argument(
+        "-3", action="store_const", dest="mode", const=8, help="Force 3 bit colour mode"
+    )
+    parser.add_argument(
+        "-4",
+        action="store_const",
+        dest="mode",
+        const=16,
+        help="Force 4 bit colour mode",
+    )
+    parser.add_argument(
+        "-8",
+        action="store_const",
+        dest="mode",
+        const=256,
+        help="Force 8 bit colour mode",
+    )
+
+    parser.add_argument(
+        "-c",
+        "--charset-py2",
+        default="utf-8",
+        help="Manually set a charset to convert from, for python 2.7",
+    )
+
+    options = parser.parse_args()
+    options.os = random.randint(0, 256) if options.seed == 0 else options.seed
+    options.mode = options.mode or detect_mode()
+
+    lolcat = LolCat(mode=options.mode)
+    args = ["-"]
+
+    for filename in args:
+        if filename == "-":
+            lolcat.cat(sys.stdin, options)
+        else:
+            try:
+                with open(filename, "r") as handle:
+                    lolcat.cat(handle, options)
+            except IOError as error:
+                sys.stderr.write(str(error) + "\n")
+
+
+if __name__ == "__main__":
+    sys.exit(run())
diff --git a/mythril_sol/laser/__init__.py b/mythril_sol/laser/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/mythril_sol/laser/ethereum/__init__.py b/mythril_sol/laser/ethereum/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/mythril_sol/laser/ethereum/call.py b/mythril_sol/laser/ethereum/call.py
new file mode 100644
index 0000000000000000000000000000000000000000..6c09fe454db7e6e53120df93bc748ff41a5152ae
--- /dev/null
+++ b/mythril_sol/laser/ethereum/call.py
@@ -0,0 +1,257 @@
+"""This module contains the business logic used by Instruction in
+instructions.py to get the necessary elements from the stack and determine the
+parameters for the new global state."""
+
+import logging
+import re
+from typing import Union, List, cast, Optional
+from eth.constants import GAS_CALLSTIPEND
+
+import mythril.laser.ethereum.util as util
+from mythril.laser.ethereum.util import insert_ret_val
+from mythril.laser.ethereum import natives
+from mythril.laser.ethereum.cheat_code import handle_cheat_codes, hevm_cheat_code
+from mythril.laser.ethereum.instruction_data import calculate_native_gas
+from mythril.laser.ethereum.state.account import Account
+from mythril.laser.ethereum.natives import PRECOMPILE_COUNT, PRECOMPILE_FUNCTIONS
+from mythril.laser.ethereum.state.calldata import (
+    BaseCalldata,
+    SymbolicCalldata,
+    ConcreteCalldata,
+)
+from mythril.laser.ethereum.state.global_state import GlobalState
+from mythril.laser.smt import BitVec, If
+from mythril.laser.smt import simplify, Expression, symbol_factory
+from mythril.support.loader import DynLoader
+
+"""
+This module contains the business logic used by Instruction in instructions.py
+to get the necessary elements from the stack and determine the parameters for the new global state.
+"""
+
+log = logging.getLogger(__name__)
+SYMBOLIC_CALLDATA_SIZE = 320  # Used when copying symbolic calldata
+
+
+def get_call_parameters(
+    global_state: GlobalState, dynamic_loader: DynLoader, with_value=False
+):
+    """Gets call parameters from global state Pops the values from the stack
+    and determines output parameters.
+
+
+    :param global_state: state to look in
+    :param dynamic_loader: dynamic loader to use
+    :param with_value: whether to pop the value argument from the stack
+    :return: callee_account, call_data, value, call_data_type, gas
+    """
+    gas, to = global_state.mstate.pop(2)
+    value = global_state.mstate.pop() if with_value else 0
+    (
+        memory_input_offset,
+        memory_input_size,
+        memory_out_offset,
+        memory_out_size,
+    ) = global_state.mstate.pop(4)
+
+    callee_address = get_callee_address(global_state, dynamic_loader, to)
+
+    callee_account = None
+    call_data = get_call_data(global_state, memory_input_offset, memory_input_size)
+    if isinstance(callee_address, BitVec) or (
+        isinstance(callee_address, str)
+        and (int(callee_address, 16) > PRECOMPILE_COUNT or int(callee_address, 16) == 0)
+    ):
+        callee_account = get_callee_account(
+            global_state, callee_address, dynamic_loader
+        )
+
+    gas = gas + If(value > 0, symbol_factory.BitVecVal(GAS_CALLSTIPEND, gas.size()), 0)
+    return (
+        callee_address,
+        callee_account,
+        call_data,
+        value,
+        gas,
+        memory_out_offset,
+        memory_out_size,
+    )
+
+
+def _get_padded_hex_address(address: int) -> str:
+    hex_address = hex(address)[2:]
+    return "0x{}{}".format("0" * (40 - len(hex_address)), hex_address)
+
+
+def get_callee_address(
+    global_state: GlobalState,
+    dynamic_loader: DynLoader,
+    symbolic_to_address: Expression,
+):
+    """Gets the address of the callee.
+
+    :param global_state: state to look in
+    :param dynamic_loader:  dynamic loader to use
+    :param symbolic_to_address: The (symbolic) callee address
+    :return: Address of the callee
+    """
+    environment = global_state.environment
+    try:
+        callee_address = _get_padded_hex_address(
+            util.get_concrete_int(symbolic_to_address)
+        )
+    except TypeError:
+        log.debug("Symbolic call encountered")
+
+        match = re.search(r"Storage\[(\d+)\]", str(simplify(symbolic_to_address)))
+
+        if match is None or dynamic_loader is None:
+            return symbolic_to_address
+
+        index = int(match.group(1))
+        log.debug("Dynamic contract address at storage index {}".format(index))
+
+        # attempt to read the contract address from instance storage
+        try:
+            callee_address = dynamic_loader.read_storage(
+                "0x{:040X}".format(environment.active_account.address.value), index
+            )
+        # TODO: verify whether this happens or not
+        except:
+            return symbolic_to_address
+
+        # testrpc simply returns the address, geth response is more elaborate.
+        if not re.match(r"^0x[0-9a-f]{40}$", callee_address):
+            callee_address = "0x" + callee_address[26:]
+
+    return callee_address
+
+
+def get_callee_account(
+    global_state: GlobalState,
+    callee_address: Union[str, BitVec],
+    dynamic_loader: DynLoader,
+):
+    """Gets the callees account from the global_state.
+
+    :param global_state: state to look in
+    :param callee_address: address of the callee
+    :param dynamic_loader: dynamic loader to use
+    :return: Account belonging to callee
+    """
+    if isinstance(callee_address, BitVec):
+        if callee_address.symbolic:
+            return Account(callee_address, balances=global_state.world_state.balances)
+        else:
+            callee_address = hex(callee_address.value)[2:]
+
+    return global_state.world_state.accounts_exist_or_load(
+        callee_address, dynamic_loader
+    )
+
+
+def get_call_data(
+    global_state: GlobalState,
+    memory_start: Union[int, BitVec],
+    memory_size: Union[int, BitVec],
+):
+    """Gets call_data from the global_state.
+
+    :param global_state: state to look in
+    :param memory_start: Start index
+    :param memory_size: Size
+    :return: Tuple containing: call_data array from memory or empty array if symbolic, type found
+    """
+    state = global_state.mstate
+    transaction_id = "{}_internalcall".format(global_state.current_transaction.id)
+
+    memory_start = cast(
+        BitVec,
+        (
+            symbol_factory.BitVecVal(memory_start, 256)
+            if isinstance(memory_start, int)
+            else memory_start
+        ),
+    )
+    memory_size = cast(
+        BitVec,
+        (
+            symbol_factory.BitVecVal(memory_size, 256)
+            if isinstance(memory_size, int)
+            else memory_size
+        ),
+    )
+
+    if memory_size.symbolic:
+        memory_size = SYMBOLIC_CALLDATA_SIZE
+    try:
+        calldata_from_mem = state.memory[
+            util.get_concrete_int(memory_start) : util.get_concrete_int(
+                memory_start + memory_size
+            )
+        ]
+        return ConcreteCalldata(transaction_id, calldata_from_mem)
+    except TypeError:
+        log.debug("Unsupported symbolic memory offset and size")
+        return SymbolicCalldata(transaction_id)
+
+
+def native_call(
+    global_state: GlobalState,
+    callee_address: Union[str, BitVec],
+    call_data: BaseCalldata,
+    memory_out_offset: Union[int, Expression],
+    memory_out_size: Union[int, Expression],
+) -> Optional[List[GlobalState]]:
+
+    if isinstance(callee_address, BitVec) or not (
+        0 < int(callee_address, 16) <= PRECOMPILE_COUNT
+        or hevm_cheat_code.is_cheat_address(callee_address)
+    ):
+        return None
+    if hevm_cheat_code.is_cheat_address(callee_address):
+        log.info("HEVM cheat code address triggered")
+        handle_cheat_codes(
+            global_state, callee_address, call_data, memory_out_offset, memory_out_size
+        )
+        return [global_state]
+
+    log.debug("Native contract called: " + callee_address)
+    try:
+        mem_out_start = util.get_concrete_int(memory_out_offset)
+        mem_out_sz = util.get_concrete_int(memory_out_size)
+    except TypeError:
+        insert_ret_val(global_state)
+        log.debug("CALL with symbolic start or offset not supported")
+        return [global_state]
+
+    call_address_int = int(callee_address, 16)
+    native_gas_min, native_gas_max = calculate_native_gas(
+        global_state.mstate.calculate_extension_size(mem_out_start, mem_out_sz),
+        PRECOMPILE_FUNCTIONS[call_address_int - 1].__name__,
+    )
+    global_state.mstate.min_gas_used += native_gas_min
+    global_state.mstate.max_gas_used += native_gas_max
+    global_state.mstate.mem_extend(mem_out_start, mem_out_sz)
+
+    try:
+        data = natives.native_contracts(call_address_int, call_data)
+    except natives.NativeContractException:
+        for i in range(mem_out_sz):
+            global_state.mstate.memory[mem_out_start + i] = global_state.new_bitvec(
+                PRECOMPILE_FUNCTIONS[call_address_int - 1].__name__
+                + "("
+                + str(call_data)
+                + ")",
+                8,
+            )
+        insert_ret_val(global_state)
+        return [global_state]
+
+    for i in range(
+        min(len(data), mem_out_sz)
+    ):  # If more data is used then it's chopped off
+        global_state.mstate.memory[mem_out_start + i] = data[i]
+
+    insert_ret_val(global_state)
+    return [global_state]
diff --git a/mythril_sol/laser/ethereum/cfg.py b/mythril_sol/laser/ethereum/cfg.py
new file mode 100644
index 0000000000000000000000000000000000000000..2317b5d318465eb2863eace67cc9aa8f03097eb2
--- /dev/null
+++ b/mythril_sol/laser/ethereum/cfg.py
@@ -0,0 +1,116 @@
+"""This module."""
+from enum import Enum
+from typing import Dict, List, TYPE_CHECKING
+
+from mythril.laser.ethereum.state.constraints import Constraints
+from flags import Flags
+
+if TYPE_CHECKING:
+    from mythril.laser.ethereum.state.global_state import GlobalState
+
+
+class JumpType(Enum):
+    """An enum to represent the types of possible JUMP scenarios."""
+
+    CONDITIONAL = 1
+    UNCONDITIONAL = 2
+    CALL = 3
+    RETURN = 4
+    Transaction = 5
+
+
+class NodeFlags(Flags):
+    """A collection of flags to denote the type a call graph node can have."""
+
+    def __or__(self, other) -> "NodeFlags":
+        return super().__or__(other)
+
+    FUNC_ENTRY = 1
+    CALL_RETURN = 2
+
+
+class Node:
+    """The representation of a call graph node."""
+
+    def __init__(
+        self,
+        contract_name: str,
+        start_addr=0,
+        constraints=None,
+        function_name="unknown",
+    ) -> None:
+        """
+
+        :param contract_name:
+        :param start_addr:
+        :param constraints:
+        """
+        constraints = constraints if constraints else Constraints()
+        self.contract_name = contract_name
+        self.start_addr = start_addr
+        self.states: List[GlobalState] = []
+        self.constraints = constraints
+        self.function_name = function_name
+        self.flags = NodeFlags()
+
+        self.uid = hash(self)
+
+    def get_cfg_dict(self) -> Dict:
+        """
+
+        :return:
+        """
+        code = ""
+        for state in self.states:
+            instruction = state.get_current_instruction()
+
+            code += str(instruction["address"]) + " " + instruction["opcode"]
+            if instruction["opcode"].startswith("PUSH"):
+                code += " " + "".join(str(instruction["argument"]))
+
+            code += "\\n"
+
+        return dict(
+            contract_name=self.contract_name,
+            start_addr=self.start_addr,
+            function_name=self.function_name,
+            code=code,
+        )
+
+
+class Edge:
+    """The representation of a call graph edge."""
+
+    def __init__(
+        self,
+        node_from: int,
+        node_to: int,
+        edge_type=JumpType.UNCONDITIONAL,
+        condition=None,
+    ) -> None:
+        """
+
+        :param node_from:
+        :param node_to:
+        :param edge_type:
+        :param condition:
+        """
+        self.node_from = node_from
+        self.node_to = node_to
+        self.type = edge_type
+        self.condition = condition
+
+    def __str__(self) -> str:
+        """
+
+        :return:
+        """
+        return str(self.as_dict)
+
+    @property
+    def as_dict(self) -> Dict[str, int]:
+        """
+
+        :return:
+        """
+        return {"from": self.node_from, "to": self.node_to}
diff --git a/mythril_sol/laser/ethereum/cheat_code.py b/mythril_sol/laser/ethereum/cheat_code.py
new file mode 100644
index 0000000000000000000000000000000000000000..be1205853a28c325f985d3a996767cf96ff26e4d
--- /dev/null
+++ b/mythril_sol/laser/ethereum/cheat_code.py
@@ -0,0 +1,56 @@
+import logging
+import re
+from typing import Union, List, cast, Optional
+from eth.constants import GAS_CALLSTIPEND
+
+import mythril.laser.ethereum.util as util
+from mythril.laser.ethereum.util import insert_ret_val
+from mythril.laser.ethereum import natives
+from mythril.laser.ethereum.instruction_data import calculate_native_gas
+from mythril.laser.ethereum.state.account import Account
+from mythril.laser.ethereum.natives import PRECOMPILE_COUNT, PRECOMPILE_FUNCTIONS
+from mythril.laser.ethereum.state.calldata import (
+    BaseCalldata,
+    SymbolicCalldata,
+    ConcreteCalldata,
+)
+from mythril.laser.ethereum.state.global_state import GlobalState
+from mythril.laser.smt import BitVec, If
+from mythril.laser.smt import simplify, Expression, symbol_factory
+from mythril.support.loader import DynLoader
+
+
+class hevm_cheat_code:
+    # https://github.com/dapphub/ds-test/blob/cd98eff28324bfac652e63a239a60632a761790b/src/test.sol
+
+    address = 0x7109709ECFA91A80626FF3989D68F67F5B1DD12D
+
+    fail_payload = int(
+        "70ca10bb"
+        + "0000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d"
+        + "6661696c65640000000000000000000000000000000000000000000000000000"
+        + "0000000000000000000000000000000000000000000000000000000000000001",
+        16,
+    )
+
+    assume_sig = 0x4C63E562
+
+    @staticmethod
+    def is_cheat_address(address):
+        if int(address, 16) == int("0x7109709ECfa91a80626fF3989D68f67F5b1DD12D", 16):
+            return True
+        if int(address, 16) == int("0x72c68108a82e82617b93d1be0d7975d762035015", 16):
+            return True
+        return False
+
+
+def handle_cheat_codes(
+    global_state: GlobalState,
+    callee_address: Union[str, BitVec],
+    call_data: BaseCalldata,
+    memory_out_offset: Union[int, Expression],
+    memory_out_size: Union[int, Expression],
+):
+
+    insert_ret_val(global_state)
+    pass
diff --git a/mythril_sol/laser/ethereum/evm_exceptions.py b/mythril_sol/laser/ethereum/evm_exceptions.py
new file mode 100644
index 0000000000000000000000000000000000000000..647c52e476b266f99bfa2f8c595a82d91902b042
--- /dev/null
+++ b/mythril_sol/laser/ethereum/evm_exceptions.py
@@ -0,0 +1,43 @@
+"""This module contains EVM exception types used by LASER."""
+
+
+class VmException(Exception):
+    """The base VM exception type."""
+
+    pass
+
+
+class StackUnderflowException(IndexError, VmException):
+    """A VM exception regarding stack underflows."""
+
+    pass
+
+
+class StackOverflowException(VmException):
+    """A VM exception regarding stack overflows."""
+
+    pass
+
+
+class InvalidJumpDestination(VmException):
+    """A VM exception regarding JUMPs to invalid destinations."""
+
+    pass
+
+
+class InvalidInstruction(VmException):
+    """A VM exception denoting an invalid op code has been encountered."""
+
+    pass
+
+
+class OutOfGasException(VmException):
+    """A VM exception denoting the current execution has run out of gas."""
+
+    pass
+
+
+class WriteProtection(VmException):
+    """A VM exception denoting that a write operation is executed on a write protected environment"""
+
+    pass
diff --git a/mythril_sol/laser/ethereum/function_managers/__init__.py b/mythril_sol/laser/ethereum/function_managers/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..056b4cf31bc7d4c6b0aebcaa19bc51c502de8709
--- /dev/null
+++ b/mythril_sol/laser/ethereum/function_managers/__init__.py
@@ -0,0 +1,2 @@
+from .exponent_function_manager import exponent_function_manager
+from .keccak_function_manager import keccak_function_manager, KeccakFunctionManager
diff --git a/mythril_sol/laser/ethereum/function_managers/exponent_function_manager.py b/mythril_sol/laser/ethereum/function_managers/exponent_function_manager.py
new file mode 100644
index 0000000000000000000000000000000000000000..d88aa47dc990f8f7e2650517fcc964a910316b06
--- /dev/null
+++ b/mythril_sol/laser/ethereum/function_managers/exponent_function_manager.py
@@ -0,0 +1,63 @@
+import logging
+from typing import Tuple
+
+
+from mythril.laser.smt import And, BitVec, Bool, Function, URem, symbol_factory
+
+log = logging.getLogger(__name__)
+
+
+class ExponentFunctionManager:
+    """
+    Uses an uninterpreted function for exponentiation with the following properties:
+    1) power(a, b) > 0
+    2) if a = 256 => forall i if b = i then power(a, b) = (256 ^ i) % (2^256)
+
+    Only these two properties are added as to handle indexing of boolean arrays.
+    Caution should be exercised when increasing the conditions since it severely affects
+    the solving time.
+    """
+
+    def __init__(self):
+        power = Function("Power", [256, 256], 256)
+        NUMBER_256 = symbol_factory.BitVecVal(256, 256)
+        self.concrete_constraints = And(
+            *[
+                power(NUMBER_256, symbol_factory.BitVecVal(i, 256))
+                == symbol_factory.BitVecVal(256**i, 256)
+                for i in range(0, 32)
+            ]
+        )
+
+    def create_condition(self, base: BitVec, exponent: BitVec) -> Tuple[BitVec, Bool]:
+        """
+        Creates a condition for exponentiation
+        :param base: The base of exponentiation
+        :param exponent: The exponent of the exponentiation
+        :return: Tuple of condition and the exponentiation result
+        """
+        power = Function("Power", [256, 256], 256)
+        exponentiation = power(base, exponent)
+
+        if exponent.symbolic is False and base.symbolic is False:
+            const_exponentiation = symbol_factory.BitVecVal(
+                pow(base.value, exponent.value, 2**256),
+                256,
+                annotations=base.annotations.union(exponent.annotations),
+            )
+            constraint = const_exponentiation == exponentiation
+            return const_exponentiation, constraint
+
+        constraint = exponentiation > 0
+        constraint = And(constraint, self.concrete_constraints)
+        if base.value == 256:
+            constraint = And(
+                constraint,
+                power(base, URem(exponent, symbol_factory.BitVecVal(32, 256)))
+                == power(base, exponent),
+            )
+
+        return exponentiation, constraint
+
+
+exponent_function_manager = ExponentFunctionManager()
diff --git a/mythril_sol/laser/ethereum/function_managers/keccak_function_manager.py b/mythril_sol/laser/ethereum/function_managers/keccak_function_manager.py
new file mode 100644
index 0000000000000000000000000000000000000000..a04fad10e873d7a9ca716d28bec408f4c9a16c4f
--- /dev/null
+++ b/mythril_sol/laser/ethereum/function_managers/keccak_function_manager.py
@@ -0,0 +1,182 @@
+from mythril.laser.smt import (
+    BitVec,
+    Function,
+    URem,
+    symbol_factory,
+    ULE,
+    And,
+    ULT,
+    Bool,
+    Or,
+)
+
+from mythril.support.support_utils import sha3
+from typing import Dict, Tuple, List, Optional
+
+import logging
+
+
+TOTAL_PARTS = 10**40
+PART = (2**256 - 1) // TOTAL_PARTS
+INTERVAL_DIFFERENCE = 10**30
+log = logging.getLogger(__name__)
+
+
+class KeccakFunctionManager:
+    """
+    A bunch of uninterpreted functions are considered like keccak256_160 ,...
+    where keccak256_160 means the input of keccak256() is 160 bit number.
+    the range of these functions are constrained to some mutually disjoint intervals
+    All the hashes modulo 64 are 0 as we need a spread among hashes for array type data structures
+    All the functions are kind of one to one due to constraint of the existence of inverse
+    for each encountered input.
+    For more info https://files.sri.inf.ethz.ch/website/papers/sp20-verx.pdf
+    """
+
+    hash_matcher = "fffffff"  # This is usually the prefix for the hash in the output
+
+    def __init__(self):
+        self.store_function: Dict[int, Tuple[Function, Function]] = {}
+        self.interval_hook_for_size: Dict[int, int] = {}
+        self._index_counter = TOTAL_PARTS - 34534
+        self.hash_result_store: Dict[int, List[BitVec]] = {}
+
+        self.quick_inverse: Dict[BitVec, BitVec] = {}  # This is for VMTests
+        self.concrete_hashes: Dict[BitVec, BitVec] = {}
+        self.symbolic_inputs: Dict[int, List[BitVec]] = {}
+
+    def reset(self):
+        self.store_function = {}
+        self.interval_hook_for_size = {}
+        self.hash_result_store: Dict[int, List[BitVec]] = {}
+        self.quick_inverse = {}
+        self.concrete_hashes = {}
+        self.symbolic_inputs = {}
+
+    @staticmethod
+    def find_concrete_keccak(data: BitVec) -> BitVec:
+        """
+        Calculates concrete keccak
+        :param data: input bitvecval
+        :return: concrete keccak output
+        """
+        keccak = symbol_factory.BitVecVal(
+            int.from_bytes(
+                sha3(data.value.to_bytes(data.size() // 8, byteorder="big")), "big"
+            ),
+            256,
+        )
+        return keccak
+
+    def get_function(self, length: int) -> Tuple[Function, Function]:
+        """
+        Returns the keccak functions for the corresponding length
+        :param length: input size
+        :return: tuple of keccak and it's inverse
+        """
+        try:
+            func, inverse = self.store_function[length]
+        except KeyError:
+            func = Function("keccak256_{}".format(length), [length], 256)
+            inverse = Function("keccak256_{}-1".format(length), [256], length)
+            self.store_function[length] = (func, inverse)
+            self.hash_result_store[length] = []
+        return func, inverse
+
+    @staticmethod
+    def get_empty_keccak_hash() -> BitVec:
+        """
+        returns sha3("")
+        :return:
+        """
+        val = 89477152217924674838424037953991966239322087453347756267410168184682657981552
+        return symbol_factory.BitVecVal(val, 256)
+
+    def create_keccak(self, data: BitVec) -> BitVec:
+        """
+        Creates Keccak of the data
+        :param data: input
+        :return: Tuple of keccak and the condition it should satisfy
+        """
+        length = data.size()
+        func, _ = self.get_function(length)
+
+        if data.symbolic is False:
+            concrete_hash = self.find_concrete_keccak(data)
+            self.concrete_hashes[data] = concrete_hash
+            return concrete_hash
+
+        if length not in self.symbolic_inputs:
+            self.symbolic_inputs[length] = []
+
+        self.symbolic_inputs[length].append(data)
+        self.hash_result_store[length].append(func(data))
+        return func(data)
+
+    def create_conditions(self) -> Bool:
+        condition = symbol_factory.Bool(True)
+        for inputs_list in self.symbolic_inputs.values():
+            for symbolic_input in inputs_list:
+                condition = And(
+                    condition, self._create_condition(func_input=symbolic_input)
+                )
+        for concrete_input, concrete_hash in self.concrete_hashes.items():
+            func, inverse = self.get_function(concrete_input.size())
+            condition = And(
+                condition,
+                func(concrete_input) == concrete_hash,
+                inverse(func(concrete_input)) == concrete_input,
+            )
+        return condition
+
+    def get_concrete_hash_data(self, model) -> Dict[int, List[Optional[int]]]:
+        """
+        returns concrete values of hashes in the self.hash_result_store
+        :param model: The z3 model to query for concrete values
+        :return: A dictionary with concrete hashes { <hash_input_size> : [<concrete_hash>, <concrete_hash>]}
+        """
+        concrete_hashes: Dict[int, List[Optional[int]]] = {}
+        for size in self.hash_result_store:
+            concrete_hashes[size] = []
+            for val in self.hash_result_store[size]:
+                eval_ = model.eval(val.raw)
+                try:
+                    concrete_val = eval_.as_long()
+                    concrete_hashes[size].append(concrete_val)
+                except AttributeError:
+                    continue
+        return concrete_hashes
+
+    def _create_condition(self, func_input: BitVec) -> Bool:
+        """
+        Creates the constraints for hash
+        :param func_input: input of the hash
+        :return: condition
+        """
+        length = func_input.size()
+        func, inv = self.get_function(length)
+        try:
+            index = self.interval_hook_for_size[length]
+        except KeyError:
+            self.interval_hook_for_size[length] = self._index_counter
+            index = self._index_counter
+            self._index_counter -= INTERVAL_DIFFERENCE
+
+        lower_bound = index * PART
+        upper_bound = lower_bound + PART
+
+        cond = And(
+            inv(func(func_input)) == func_input,
+            ULE(symbol_factory.BitVecVal(lower_bound, 256), func(func_input)),
+            ULT(func(func_input), symbol_factory.BitVecVal(upper_bound, 256)),
+            URem(func(func_input), symbol_factory.BitVecVal(64, 256)) == 0,
+        )
+        concrete_cond = symbol_factory.Bool(False)
+        for key, keccak in self.concrete_hashes.items():
+            if key.size() == func_input.size():
+                hash_eq = And(func(func_input) == keccak, key == func_input)
+                concrete_cond = Or(concrete_cond, hash_eq)
+        return And(inv(func(func_input)) == func_input, Or(cond, concrete_cond))
+
+
+keccak_function_manager = KeccakFunctionManager()
diff --git a/mythril_sol/laser/ethereum/instruction_data.py b/mythril_sol/laser/ethereum/instruction_data.py
new file mode 100644
index 0000000000000000000000000000000000000000..074f4d85f1af2735a5f114de4b1b8a8710847054
--- /dev/null
+++ b/mythril_sol/laser/ethereum/instruction_data.py
@@ -0,0 +1,56 @@
+from eth._utils.numeric import ceil32
+from typing import Tuple
+from mythril.support.opcodes import OPCODES, STACK, GAS
+from eth.constants import (
+    GAS_ECRECOVER,
+    GAS_SHA256WORD,
+    GAS_SHA256,
+    GAS_RIPEMD160,
+    GAS_RIPEMD160WORD,
+    GAS_IDENTITY,
+    GAS_IDENTITYWORD,
+    GAS_SHA3WORD,
+    GAS_SHA3,
+)
+
+
+def calculate_sha3_gas(length: int):
+    """
+
+    :param length:
+    :return:
+    """
+    gas_val = GAS_SHA3 + GAS_SHA3WORD * (ceil32(length) // 32)
+    return gas_val, gas_val
+
+
+def calculate_native_gas(size: int, contract: str):
+    """
+
+    :param size:
+    :param contract:
+    :return:
+    """
+    gas_value = 0
+    word_num = ceil32(size) // 32
+    if contract == "ecrecover":
+        gas_value = GAS_ECRECOVER
+    elif contract == "sha256":
+        gas_value = GAS_SHA256 + word_num * GAS_SHA256WORD
+    elif contract == "ripemd160":
+        gas_value = GAS_RIPEMD160 + word_num * GAS_RIPEMD160WORD
+    elif contract == "identity":
+        gas_value = GAS_IDENTITY + word_num * GAS_IDENTITYWORD
+    else:
+        # TODO: Add gas for other precompiles, computation should be shifted to natives.py
+        #  as some data isn't available here
+        pass
+    return gas_value, gas_value
+
+
+def get_opcode_gas(opcode: str) -> Tuple[int, int]:
+    return OPCODES[opcode][GAS]
+
+
+def get_required_stack_elements(opcode: str) -> int:
+    return OPCODES[opcode][STACK][0]
diff --git a/mythril_sol/laser/ethereum/instructions.py b/mythril_sol/laser/ethereum/instructions.py
new file mode 100644
index 0000000000000000000000000000000000000000..6fad49ef34333a5493f205bdd365d4225b3d0db8
--- /dev/null
+++ b/mythril_sol/laser/ethereum/instructions.py
@@ -0,0 +1,2560 @@
+"""This module contains a representation class for EVM instructions and
+transitions between them."""
+import logging
+
+from copy import copy, deepcopy
+from typing import cast, Callable, List, Union, Tuple
+
+from mythril.exceptions import UnsatError
+from mythril.laser.smt import (
+    Extract,
+    Expression,
+    UDiv,
+    simplify,
+    Concat,
+    ULT,
+    UGT,
+    BitVec,
+    is_false,
+    URem,
+    SRem,
+    If,
+    Bool,
+    Not,
+    LShR,
+    UGE,
+)
+from mythril.laser.smt import symbol_factory
+
+from mythril.disassembler.disassembly import Disassembly
+
+from mythril.laser.ethereum.state.calldata import ConcreteCalldata, SymbolicCalldata
+
+import mythril.laser.ethereum.util as helper
+from mythril.laser.ethereum import util
+from mythril.laser.ethereum.function_managers import (
+    keccak_function_manager,
+    exponent_function_manager,
+)
+
+from mythril.laser.ethereum.call import (
+    get_call_parameters,
+    native_call,
+    get_call_data,
+    SYMBOLIC_CALLDATA_SIZE,
+)
+from mythril.laser.ethereum.evm_exceptions import (
+    VmException,
+    StackUnderflowException,
+    InvalidJumpDestination,
+    InvalidInstruction,
+    OutOfGasException,
+    WriteProtection,
+)
+from mythril.laser.ethereum.instruction_data import get_opcode_gas, calculate_sha3_gas
+from mythril.laser.ethereum.state.global_state import GlobalState
+from mythril.laser.ethereum.state.return_data import ReturnData
+
+from mythril.laser.ethereum.transaction import (
+    MessageCallTransaction,
+    TransactionStartSignal,
+    ContractCreationTransaction,
+    tx_id_manager,
+)
+from mythril.support.model import get_model
+from mythril.support.support_utils import get_code_hash
+
+from mythril.support.loader import DynLoader
+
+log = logging.getLogger(__name__)
+
+TT256 = symbol_factory.BitVecVal(0, 256)
+TT256M1 = symbol_factory.BitVecVal(2**256 - 1, 256)
+
+
+def transfer_ether(
+    global_state: GlobalState,
+    sender: BitVec,
+    receiver: BitVec,
+    value: Union[int, BitVec],
+):
+    """
+    Perform an Ether transfer between two accounts
+
+    :param global_state: The global state in which the Ether transfer occurs
+    :param sender: The sender of the Ether
+    :param receiver: The recipient of the Ether
+    :param value: The amount of Ether to send
+    :return:
+    """
+    value = value if isinstance(value, BitVec) else symbol_factory.BitVecVal(value, 256)
+
+    global_state.world_state.constraints.append(
+        UGE(global_state.world_state.balances[sender], value)
+    )
+    global_state.world_state.balances[receiver] += value
+    global_state.world_state.balances[sender] -= value
+
+
+class StateTransition(object):
+    """Decorator that handles global state copy and original return.
+
+    This decorator calls the decorated instruction mutator function on a
+    copy of the state that is passed to it. After the call, the
+    resulting new states' program counter is automatically incremented
+    if `increment_pc=True`.
+    """
+
+    def __init__(
+        self, increment_pc=True, enable_gas=True, is_state_mutation_instruction=False
+    ):
+        """
+
+        :param increment_pc:
+        :param enable_gas:
+        :param is_state_mutation_instruction: The function mutates state
+        """
+        self.increment_pc = increment_pc
+        self.enable_gas = enable_gas
+        self.is_state_mutation_instruction = is_state_mutation_instruction
+
+    @staticmethod
+    def call_on_state_copy(func: Callable, func_obj: "Instruction", state: GlobalState):
+        """
+
+        :param func:
+        :param func_obj:
+        :param state:
+        :return:
+        """
+        global_state_copy = copy(state)
+        return func(func_obj, global_state_copy)
+
+    def increment_states_pc(self, states: List[GlobalState]) -> List[GlobalState]:
+        """
+
+        :param states:
+        :return:
+        """
+        if self.increment_pc:
+            for state in states:
+                state.mstate.pc += 1
+        return states
+
+    @staticmethod
+    def check_gas_usage_limit(global_state: GlobalState):
+        """
+
+        :param global_state:
+        :return:
+        """
+        global_state.mstate.check_gas()
+        if isinstance(global_state.current_transaction.gas_limit, BitVec):
+            value = global_state.current_transaction.gas_limit.value
+            if value is None:
+                return
+            global_state.current_transaction.gas_limit = value
+        if (
+            global_state.mstate.min_gas_used
+            >= global_state.current_transaction.gas_limit
+        ):
+            raise OutOfGasException()
+
+    def accumulate_gas(self, global_state: GlobalState):
+        """
+
+        :param global_state:
+        :return:
+        """
+        if not self.enable_gas:
+            return global_state
+        opcode = global_state.instruction["opcode"]
+        min_gas, max_gas = get_opcode_gas(opcode)
+        global_state.mstate.min_gas_used += min_gas
+        global_state.mstate.max_gas_used += max_gas
+        self.check_gas_usage_limit(global_state)
+
+        return global_state
+
+    def __call__(self, func: Callable) -> Callable:
+        def wrapper(
+            func_obj: "Instruction", global_state: GlobalState
+        ) -> List[GlobalState]:
+            """
+
+            :param func_obj:
+            :param global_state:
+            :return:
+            """
+            if self.is_state_mutation_instruction and global_state.environment.static:
+                raise WriteProtection(
+                    "The function {} cannot be executed in a static call".format(
+                        func.__name__[:-1]
+                    )
+                )
+
+            new_global_states = self.call_on_state_copy(func, func_obj, global_state)
+            new_global_states = [
+                self.accumulate_gas(state) for state in new_global_states
+            ]
+
+            return self.increment_states_pc(new_global_states)
+
+        return wrapper
+
+
+class Instruction:
+    """Instruction class is used to mutate a state according to the current
+    instruction."""
+
+    def __init__(
+        self,
+        op_code: str,
+        dynamic_loader: DynLoader,
+        pre_hooks: List[Callable] = None,
+        post_hooks: List[Callable] = None,
+    ) -> None:
+        """
+
+        :param op_code:
+        :param dynamic_loader:
+        :param iprof:
+        """
+        self.dynamic_loader = dynamic_loader
+        self.op_code = op_code.upper()
+        self.pre_hook = pre_hooks if pre_hooks else []
+        self.post_hook = post_hooks if post_hooks else []
+
+    def _execute_pre_hooks(self, global_state: GlobalState):
+        for hook in self.pre_hook:
+            hook(global_state)
+
+    def _execute_post_hooks(self, global_state: GlobalState):
+        for hook in self.post_hook:
+            hook(global_state)
+
+    def evaluate(self, global_state: GlobalState, post=False) -> List[GlobalState]:
+        """Performs the mutation for this instruction.
+
+        :param global_state:
+        :param post:
+        :return:
+        """
+        # Generalize some ops
+        log.debug("Evaluating %s at %i", self.op_code, global_state.mstate.pc)
+
+        op = self.op_code.lower()
+        if self.op_code.startswith("PUSH"):
+            op = "push"
+        elif self.op_code.startswith("DUP"):
+            op = "dup"
+        elif self.op_code.startswith("SWAP"):
+            op = "swap"
+        elif self.op_code.startswith("LOG"):
+            op = "log"
+
+        instruction_mutator = (
+            getattr(self, op + "_", None)
+            if not post
+            else getattr(self, op + "_" + "post", None)
+        )
+        if instruction_mutator is None:
+            raise NotImplementedError
+
+        self._execute_pre_hooks(global_state)
+        result = instruction_mutator(global_state)
+        self._execute_post_hooks(global_state)
+
+        return result
+
+    @StateTransition()
+    def jumpdest_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        return [global_state]
+
+    @StateTransition()
+    def push_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        push_instruction = global_state.get_current_instruction()
+        push_value = push_instruction.get("argument", 0)
+
+        try:
+            length_of_value = 2 * int(push_instruction["opcode"][4:])
+        except ValueError:
+            raise VmException("Invalid Push instruction")
+
+        if length_of_value == 0:
+            global_state.mstate.stack.append(symbol_factory.BitVecVal(0, 256))
+        elif isinstance(push_value, tuple):
+            if isinstance(push_value[0], int):
+                new_value = symbol_factory.BitVecVal(push_value[0], 8)
+            else:
+                new_value = push_value[0]
+            if len(push_value) > 1:
+                for val in push_value[1:]:
+                    if isinstance(val, int):
+                        new_value = Concat(new_value, symbol_factory.BitVecVal(val, 8))
+                    else:
+                        new_value = Concat(new_value, val)
+
+            pad_length = length_of_value // 2 - len(push_value)
+
+            if pad_length > 0:
+                new_value = Concat(new_value, symbol_factory.BitVecVal(0, pad_length))
+            if new_value.size() < 256:
+                new_value = Concat(
+                    symbol_factory.BitVecVal(0, 256 - new_value.size()), new_value
+                )
+
+            global_state.mstate.stack.append(new_value)
+
+        else:
+            push_value += "0" * max(length_of_value - (len(push_value) - 2), 0)
+            global_state.mstate.stack.append(
+                symbol_factory.BitVecVal(int(push_value, 16), 256)
+            )
+        return [global_state]
+
+    @StateTransition()
+    def dup_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        value = int(global_state.get_current_instruction()["opcode"][3:], 10)
+        global_state.mstate.stack.append(global_state.mstate.stack[-value])
+        return [global_state]
+
+    @StateTransition()
+    def swap_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        depth = int(self.op_code[4:])
+        stack = global_state.mstate.stack
+        stack[-depth - 1], stack[-1] = stack[-1], stack[-depth - 1]
+        return [global_state]
+
+    @StateTransition()
+    def pop_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        global_state.mstate.stack.pop()
+        return [global_state]
+
+    @StateTransition()
+    def and_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        stack = global_state.mstate.stack
+        op1, op2 = stack.pop(), stack.pop()
+        if isinstance(op1, Bool):
+            op1 = If(
+                op1, symbol_factory.BitVecVal(1, 256), symbol_factory.BitVecVal(0, 256)
+            )
+        if isinstance(op2, Bool):
+            op2 = If(
+                op2, symbol_factory.BitVecVal(1, 256), symbol_factory.BitVecVal(0, 256)
+            )
+        if not isinstance(op1, Expression):
+            op1 = symbol_factory.BitVecVal(op1, 256)
+        if not isinstance(op2, Expression):
+            op2 = symbol_factory.BitVecVal(op2, 256)
+        stack.append(op1 & op2)
+
+        return [global_state]
+
+    @StateTransition()
+    def or_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        stack = global_state.mstate.stack
+        op1, op2 = stack.pop(), stack.pop()
+
+        if isinstance(op1, Bool):
+            op1 = If(
+                op1, symbol_factory.BitVecVal(1, 256), symbol_factory.BitVecVal(0, 256)
+            )
+
+        if isinstance(op2, Bool):
+            op2 = If(
+                op2, symbol_factory.BitVecVal(1, 256), symbol_factory.BitVecVal(0, 256)
+            )
+
+        stack.append(op1 | op2)
+
+        return [global_state]
+
+    @StateTransition()
+    def xor_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        mstate = global_state.mstate
+        mstate.stack.append(mstate.stack.pop() ^ mstate.stack.pop())
+        return [global_state]
+
+    @StateTransition()
+    def not_(self, global_state: GlobalState):
+        """
+
+        :param global_state:
+        :return:
+        """
+        mstate = global_state.mstate
+        mstate.stack.append(TT256M1 - mstate.stack.pop())
+        return [global_state]
+
+    @StateTransition()
+    def byte_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        mstate = global_state.mstate
+        op0, op1 = mstate.stack.pop(), mstate.stack.pop()
+        if not isinstance(op1, Expression):
+            op1 = symbol_factory.BitVecVal(op1, 256)
+        try:
+            index = util.get_concrete_int(op0)
+            offset = (31 - index) * 8
+            if offset >= 0:
+                result: Union[int, Expression] = simplify(
+                    Concat(
+                        symbol_factory.BitVecVal(0, 248),
+                        Extract(offset + 7, offset, op1),
+                    )
+                )
+            else:
+                result = 0
+        except TypeError:
+            log.debug("BYTE: Unsupported symbolic byte offset")
+            result = global_state.new_bitvec(
+                str(simplify(op1)) + "[" + str(simplify(op0)) + "]", 256
+            )
+
+        mstate.stack.append(result)
+        return [global_state]
+
+    # Arithmetic
+    @StateTransition()
+    def add_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        global_state.mstate.stack.append(
+            (
+                helper.pop_bitvec(global_state.mstate)
+                + helper.pop_bitvec(global_state.mstate)
+            )
+        )
+        return [global_state]
+
+    @StateTransition()
+    def sub_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        global_state.mstate.stack.append(
+            (
+                helper.pop_bitvec(global_state.mstate)
+                - helper.pop_bitvec(global_state.mstate)
+            )
+        )
+        return [global_state]
+
+    @StateTransition()
+    def mul_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        global_state.mstate.stack.append(
+            (
+                helper.pop_bitvec(global_state.mstate)
+                * helper.pop_bitvec(global_state.mstate)
+            )
+        )
+
+        return [global_state]
+
+    @StateTransition()
+    def div_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        op0, op1 = (
+            util.pop_bitvec(global_state.mstate),
+            util.pop_bitvec(global_state.mstate),
+        )
+        if op1 == 0:
+            global_state.mstate.stack.append(symbol_factory.BitVecVal(0, 256))
+        else:
+            global_state.mstate.stack.append(UDiv(op0, op1))
+        return [global_state]
+
+    @StateTransition()
+    def sdiv_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        s0, s1 = (
+            util.pop_bitvec(global_state.mstate),
+            util.pop_bitvec(global_state.mstate),
+        )
+        if s1 == 0:
+            global_state.mstate.stack.append(symbol_factory.BitVecVal(0, 256))
+        else:
+            global_state.mstate.stack.append(s0 / s1)
+        return [global_state]
+
+    @StateTransition()
+    def mod_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        s0, s1 = (
+            util.pop_bitvec(global_state.mstate),
+            util.pop_bitvec(global_state.mstate),
+        )
+        global_state.mstate.stack.append(0 if s1 == 0 else URem(s0, s1))
+        return [global_state]
+
+    @StateTransition()
+    def shl_(self, global_state: GlobalState) -> List[GlobalState]:
+        shift, value = (
+            util.pop_bitvec(global_state.mstate),
+            util.pop_bitvec(global_state.mstate),
+        )
+        global_state.mstate.stack.append(value << shift)
+        return [global_state]
+
+    @StateTransition()
+    def shr_(self, global_state: GlobalState) -> List[GlobalState]:
+        shift, value = (
+            util.pop_bitvec(global_state.mstate),
+            util.pop_bitvec(global_state.mstate),
+        )
+        global_state.mstate.stack.append(LShR(value, shift))
+        return [global_state]
+
+    @StateTransition()
+    def sar_(self, global_state: GlobalState) -> List[GlobalState]:
+        shift, value = (
+            util.pop_bitvec(global_state.mstate),
+            util.pop_bitvec(global_state.mstate),
+        )
+        global_state.mstate.stack.append(value >> shift)
+        return [global_state]
+
+    @StateTransition()
+    def smod_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        s0, s1 = (
+            util.pop_bitvec(global_state.mstate),
+            util.pop_bitvec(global_state.mstate),
+        )
+        global_state.mstate.stack.append(0 if s1 == 0 else SRem(s0, s1))
+        return [global_state]
+
+    @StateTransition()
+    def addmod_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        s0, s1, s2 = (
+            util.pop_bitvec(global_state.mstate),
+            util.pop_bitvec(global_state.mstate),
+            util.pop_bitvec(global_state.mstate),
+        )
+        global_state.mstate.stack.append(URem(URem(s0, s2) + URem(s1, s2), s2))
+        return [global_state]
+
+    @StateTransition()
+    def mulmod_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        s0, s1, s2 = (
+            util.pop_bitvec(global_state.mstate),
+            util.pop_bitvec(global_state.mstate),
+            util.pop_bitvec(global_state.mstate),
+        )
+        global_state.mstate.stack.append(URem(URem(s0, s2) * URem(s1, s2), s2))
+        return [global_state]
+
+    @StateTransition()
+    def exp_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        state = global_state.mstate
+        base, exponent = util.pop_bitvec(state), util.pop_bitvec(state)
+        exponentiation, constraint = exponent_function_manager.create_condition(
+            base, exponent
+        )
+        state.stack.append(exponentiation)
+        global_state.world_state.constraints.append(constraint)
+        return [global_state]
+
+    @StateTransition()
+    def signextend_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        mstate = global_state.mstate
+        s0, s1 = mstate.stack.pop(), mstate.stack.pop()
+
+        testbit = s0 * symbol_factory.BitVecVal(8, 256) + symbol_factory.BitVecVal(
+            7, 256
+        )
+        set_testbit = symbol_factory.BitVecVal(1, 256) << testbit
+        sign_bit_set = simplify(Not(s1 & set_testbit == 0))
+
+        mstate.stack.append(
+            simplify(
+                If(
+                    s0 <= 31,
+                    If(
+                        sign_bit_set, s1 | (TT256 - set_testbit), s1 & (set_testbit - 1)
+                    ),
+                    s1,
+                )
+            )
+        )
+
+        return [global_state]
+
+    # Comparisons
+    @StateTransition()
+    def lt_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        state = global_state.mstate
+        exp = ULT(util.pop_bitvec(state), util.pop_bitvec(state))
+        state.stack.append(exp)
+        return [global_state]
+
+    @StateTransition()
+    def gt_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        state = global_state.mstate
+        op1, op2 = util.pop_bitvec(state), util.pop_bitvec(state)
+        exp = UGT(op1, op2)
+        state.stack.append(exp)
+        return [global_state]
+
+    @StateTransition()
+    def slt_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        state = global_state.mstate
+        exp = util.pop_bitvec(state) < util.pop_bitvec(state)
+        state.stack.append(exp)
+        return [global_state]
+
+    @StateTransition()
+    def sgt_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        state = global_state.mstate
+
+        exp = util.pop_bitvec(state) > util.pop_bitvec(state)
+        state.stack.append(exp)
+        return [global_state]
+
+    @StateTransition()
+    def eq_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        state = global_state.mstate
+
+        op1 = state.stack.pop()
+        op2 = state.stack.pop()
+        if isinstance(op1, Bool):
+            op1 = If(
+                op1, symbol_factory.BitVecVal(1, 256), symbol_factory.BitVecVal(0, 256)
+            )
+
+        if isinstance(op2, Bool):
+            op2 = If(
+                op2, symbol_factory.BitVecVal(1, 256), symbol_factory.BitVecVal(0, 256)
+            )
+
+        exp = op1 == op2
+
+        state.stack.append(exp)
+        return [global_state]
+
+    @StateTransition()
+    def iszero_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        state = global_state.mstate
+        val = state.stack.pop()
+        exp = Not(val) if isinstance(val, Bool) else val == 0
+
+        exp = If(
+            exp, symbol_factory.BitVecVal(1, 256), symbol_factory.BitVecVal(0, 256)
+        )
+        state.stack.append(simplify(exp))
+
+        return [global_state]
+
+    # Call data
+    @StateTransition()
+    def callvalue_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        state = global_state.mstate
+        environment = global_state.environment
+        state.stack.append(environment.callvalue)
+
+        return [global_state]
+
+    @StateTransition()
+    def calldataload_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        state = global_state.mstate
+        environment = global_state.environment
+        op0 = state.stack.pop()
+
+        value = environment.calldata.get_word_at(op0)
+
+        state.stack.append(value)
+
+        return [global_state]
+
+    @StateTransition()
+    def calldatasize_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        global_state.mstate.stack.append(global_state.environment.calldata.calldatasize)
+        return [global_state]
+
+    @staticmethod
+    def _calldata_copy_helper(global_state, mstate, mstart, dstart, size):
+        environment = global_state.environment
+
+        try:
+            mstart = util.get_concrete_int(mstart)
+        except TypeError:
+            log.debug("Unsupported symbolic memory offset in CALLDATACOPY")
+            return [global_state]
+
+        try:
+            dstart: Union[int, BitVec] = util.get_concrete_int(dstart)
+        except TypeError:
+            log.debug("Unsupported symbolic calldata offset in CALLDATACOPY")
+            dstart = simplify(dstart)
+
+        try:
+            size: Union[int, BitVec] = util.get_concrete_int(size)
+        except TypeError:
+            log.debug("Unsupported symbolic size in CALLDATACOPY")
+            size = SYMBOLIC_CALLDATA_SIZE  # The excess size will get overwritten
+
+        size = cast(int, size)
+        if size > 0:
+            try:
+                mstate.mem_extend(mstart, size)
+            except TypeError as e:
+                log.debug("Memory allocation error: {}".format(e))
+                mstate.mem_extend(mstart, 1)
+                mstate.memory[mstart] = global_state.new_bitvec(
+                    "calldata_"
+                    + str(environment.active_account.contract_name)
+                    + "["
+                    + str(dstart)
+                    + ": + "
+                    + str(size)
+                    + "]",
+                    8,
+                )
+                return [global_state]
+
+            try:
+                i_data = dstart
+                new_memory = []
+                for i in range(size):
+                    value = environment.calldata[i_data]
+                    new_memory.append(value)
+
+                    i_data = (
+                        i_data + 1
+                        if isinstance(i_data, int)
+                        else simplify(cast(BitVec, i_data) + 1)
+                    )
+                for i in range(len(new_memory)):
+                    mstate.memory[i + mstart] = new_memory[i]
+
+            except IndexError:
+                log.debug("Exception copying calldata to memory")
+
+                mstate.memory[mstart] = global_state.new_bitvec(
+                    "calldata_"
+                    + str(environment.active_account.contract_name)
+                    + "["
+                    + str(dstart)
+                    + ": + "
+                    + str(size)
+                    + "]",
+                    8,
+                )
+        return [global_state]
+
+    @StateTransition()
+    def calldatacopy_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        state = global_state.mstate
+        op0, op1, op2 = state.stack.pop(), state.stack.pop(), state.stack.pop()
+
+        if isinstance(global_state.current_transaction, ContractCreationTransaction):
+            log.debug("Attempt to use CALLDATACOPY in creation transaction")
+            return [global_state]
+
+        return self._calldata_copy_helper(global_state, state, op0, op1, op2)
+
+    # Environment
+    @StateTransition()
+    def address_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        state = global_state.mstate
+        environment = global_state.environment
+        state.stack.append(environment.address)
+        return [global_state]
+
+    @StateTransition()
+    def balance_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        state = global_state.mstate
+        address = state.stack.pop()
+        onchain_access = True
+        if address.symbolic is False:
+            try:
+                balance = global_state.world_state.accounts_exist_or_load(
+                    address.value, self.dynamic_loader
+                ).balance()
+            except ValueError:
+                onchain_access = False
+        else:
+            onchain_access = False
+
+        if onchain_access is False:
+            balance = symbol_factory.BitVecVal(0, 256)
+            for account in global_state.world_state.accounts.values():
+                balance = If(address == account.address, account.balance(), balance)
+        state.stack.append(balance)
+        return [global_state]
+
+    @StateTransition()
+    def origin_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        state = global_state.mstate
+        environment = global_state.environment
+        state.stack.append(environment.origin)
+        return [global_state]
+
+    @StateTransition()
+    def caller_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        state = global_state.mstate
+        environment = global_state.environment
+        state.stack.append(environment.sender)
+        return [global_state]
+
+    @StateTransition()
+    def chainid_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        global_state.mstate.stack.append(global_state.environment.chainid)
+        return [global_state]
+
+    @StateTransition()
+    def selfbalance_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        balance = global_state.environment.active_account.balance()
+        global_state.mstate.stack.append(balance)
+        return [global_state]
+
+    @StateTransition()
+    def codesize_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        state = global_state.mstate
+        environment = global_state.environment
+        disassembly = environment.code
+        calldata = global_state.environment.calldata
+        if isinstance(global_state.current_transaction, ContractCreationTransaction):
+            # Hacky way to ensure constructor arguments work - Pick some reasonably large size.
+            no_of_bytes = len(disassembly.bytecode) // 2
+            if isinstance(calldata, ConcreteCalldata):
+                no_of_bytes += calldata.size
+            else:
+                no_of_bytes += 0x200  # space for 16 32-byte arguments
+                global_state.world_state.constraints.append(
+                    global_state.environment.calldata.size == no_of_bytes
+                )
+
+        else:
+            no_of_bytes = len(disassembly.bytecode) // 2
+        state.stack.append(no_of_bytes)
+        return [global_state]
+
+    @staticmethod
+    def _sha3_gas_helper(global_state, length):
+        min_gas, max_gas = calculate_sha3_gas(length)
+        global_state.mstate.min_gas_used += min_gas
+        global_state.mstate.max_gas_used += max_gas
+        StateTransition.check_gas_usage_limit(global_state)
+        return global_state
+
+    @StateTransition(enable_gas=False)
+    def sha3_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+
+        state = global_state.mstate
+        index, op1 = state.stack.pop(), state.stack.pop()
+
+        try:
+            length = util.get_concrete_int(op1)
+        except TypeError:
+            # Can't access symbolic memory offsets
+            length = 64
+            global_state.world_state.constraints.append(op1 == length)
+        Instruction._sha3_gas_helper(global_state, length)
+
+        state.mem_extend(index, length)
+        data_list = [
+            b if isinstance(b, BitVec) else symbol_factory.BitVecVal(b, 8)
+            for b in state.memory[index : index + length]
+        ]
+
+        if len(data_list) > 1:
+            data = simplify(Concat(data_list))
+        elif len(data_list) == 1:
+            data = data_list[0]
+        else:
+            # TODO: handle finding x where func(x)==func("")
+            result = keccak_function_manager.get_empty_keccak_hash()
+            state.stack.append(result)
+            return [global_state]
+
+        result = keccak_function_manager.create_keccak(data)
+        state.stack.append(result)
+
+        return [global_state]
+
+    @StateTransition()
+    def gasprice_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        global_state.mstate.stack.append(global_state.environment.gasprice)
+        return [global_state]
+
+    @StateTransition()
+    def basefee_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        global_state.mstate.stack.append(global_state.environment.basefee)
+        return [global_state]
+
+    @StateTransition()
+    def codecopy_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        memory_offset, code_offset, size = (
+            global_state.mstate.stack.pop(),
+            global_state.mstate.stack.pop(),
+            global_state.mstate.stack.pop(),
+        )
+        code = global_state.environment.code.bytecode
+        if isinstance(code, tuple):
+            log.debug("unsupported symbolic code for CODECOPY")
+            return [global_state]
+
+        if code.startswith("0x"):
+            code = code[2:]
+        code_size = len(code) // 2
+        if isinstance(global_state.current_transaction, ContractCreationTransaction):
+            # Treat creation code after the expected disassembly as calldata.
+            # This is a slightly hacky way to ensure that symbolic constructor
+            # arguments work correctly.
+            mstate = global_state.mstate
+            offset = code_offset - code_size
+            log.debug("Copying from code offset: {} with size: {}".format(offset, size))
+
+            if isinstance(global_state.environment.calldata, SymbolicCalldata):
+                if code_offset >= code_size:
+                    return self._calldata_copy_helper(
+                        global_state, mstate, memory_offset, offset, size
+                    )
+            else:
+                # Copy from both code and calldata appropriately.
+                concrete_code_offset = helper.get_concrete_int(code_offset)
+                concrete_size = helper.get_concrete_int(size)
+
+                code_copy_offset = concrete_code_offset
+                code_copy_size = (
+                    concrete_size
+                    if concrete_code_offset + concrete_size <= code_size
+                    else code_size - concrete_code_offset
+                )
+                code_copy_size = code_copy_size if code_copy_size >= 0 else 0
+
+                calldata_copy_offset = (
+                    concrete_code_offset - code_size
+                    if concrete_code_offset - code_size > 0
+                    else 0
+                )
+                calldata_copy_size = concrete_code_offset + concrete_size - code_size
+                calldata_copy_size = (
+                    calldata_copy_size if calldata_copy_size >= 0 else 0
+                )
+
+                [global_state] = self._code_copy_helper(
+                    code=global_state.environment.code.bytecode,
+                    memory_offset=memory_offset,
+                    code_offset=code_copy_offset,
+                    size=code_copy_size,
+                    op="CODECOPY",
+                    global_state=global_state,
+                )
+                return self._calldata_copy_helper(
+                    global_state=global_state,
+                    mstate=mstate,
+                    mstart=memory_offset + code_copy_size,
+                    dstart=calldata_copy_offset,
+                    size=calldata_copy_size,
+                )
+
+        return self._code_copy_helper(
+            code=global_state.environment.code.bytecode,
+            memory_offset=memory_offset,
+            code_offset=code_offset,
+            size=size,
+            op="CODECOPY",
+            global_state=global_state,
+        )
+
+    @StateTransition()
+    def extcodesize_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        state = global_state.mstate
+        addr = state.stack.pop()
+        try:
+            addr = hex(helper.get_concrete_int(addr))
+        except TypeError:
+            log.debug("unsupported symbolic address for EXTCODESIZE")
+            state.stack.append(global_state.new_bitvec("extcodesize_" + str(addr), 256))
+            return [global_state]
+        try:
+            code = global_state.world_state.accounts_exist_or_load(
+                addr, self.dynamic_loader
+            ).code.bytecode
+        except (ValueError, AttributeError) as e:
+            log.debug("error accessing contract storage due to: " + str(e))
+            state.stack.append(global_state.new_bitvec("extcodesize_" + str(addr), 256))
+            return [global_state]
+
+        state.stack.append(len(code) // 2)
+
+        return [global_state]
+
+    @staticmethod
+    def _code_copy_helper(
+        code: Union[str, Tuple],
+        memory_offset: Union[int, BitVec],
+        code_offset: Union[int, BitVec],
+        size: Union[int, BitVec],
+        op: str,
+        global_state: GlobalState,
+    ) -> List[GlobalState]:
+        try:
+            concrete_memory_offset = helper.get_concrete_int(memory_offset)
+        except TypeError:
+            log.debug("Unsupported symbolic memory offset in {}".format(op))
+            return [global_state]
+
+        try:
+            concrete_size = helper.get_concrete_int(size)
+            global_state.mstate.mem_extend(concrete_memory_offset, concrete_size)
+
+        except TypeError:
+            # except both attribute error and Exception
+            global_state.mstate.mem_extend(concrete_memory_offset, 1)
+            global_state.mstate.memory[
+                concrete_memory_offset
+            ] = global_state.new_bitvec(
+                "code({})".format(
+                    global_state.environment.active_account.contract_name
+                ),
+                8,
+            )
+            return [global_state]
+
+        try:
+            concrete_code_offset = helper.get_concrete_int(code_offset)
+        except TypeError:
+            log.debug("Unsupported symbolic code offset in {}".format(op))
+            global_state.mstate.mem_extend(concrete_memory_offset, concrete_size)
+            for i in range(concrete_size):
+                global_state.mstate.memory[
+                    concrete_memory_offset + i
+                ] = global_state.new_bitvec(
+                    "code({})".format(
+                        global_state.environment.active_account.contract_name
+                    ),
+                    8,
+                )
+            return [global_state]
+
+        if isinstance(code, str) and code.startswith("0x"):
+            code = code[2:]
+
+        for i in range(concrete_size):
+            if isinstance(code, str):
+                if 2 * (concrete_code_offset + i + 1) > len(code):
+                    break
+
+                global_state.mstate.memory[concrete_memory_offset + i] = int(
+                    code[
+                        2
+                        * (concrete_code_offset + i) : 2
+                        * (concrete_code_offset + i + 1)
+                    ],
+                    16,
+                )
+            else:
+                if (concrete_code_offset + i + 1) > len(code):
+                    break
+
+                global_state.mstate.memory[concrete_memory_offset + i] = code[
+                    concrete_code_offset + i
+                ]
+
+        return [global_state]
+
+    @StateTransition()
+    def extcodecopy_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        state = global_state.mstate
+        addr, memory_offset, code_offset, size = (
+            state.stack.pop(),
+            state.stack.pop(),
+            state.stack.pop(),
+            state.stack.pop(),
+        )
+        try:
+            addr = hex(helper.get_concrete_int(addr))
+        except TypeError:
+            log.debug("unsupported symbolic address for EXTCODECOPY")
+            return [global_state]
+
+        try:
+            code = global_state.world_state.accounts_exist_or_load(
+                addr, self.dynamic_loader
+            ).code.bytecode
+        except (ValueError, AttributeError) as e:
+            log.debug("error accessing contract storage due to: " + str(e))
+            return [global_state]
+
+        return self._code_copy_helper(
+            code=code,
+            memory_offset=memory_offset,
+            code_offset=code_offset,
+            size=size,
+            op="EXTCODECOPY",
+            global_state=global_state,
+        )
+
+    @StateTransition()
+    def extcodehash_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return: List of global states possible, list of size 1 in this case
+        """
+        world_state = global_state.world_state
+        stack = global_state.mstate.stack
+        address = Extract(159, 0, stack.pop())
+
+        if address.symbolic:
+            code_hash = symbol_factory.BitVecVal(int(get_code_hash(""), 16), 256)
+        elif address.value not in world_state.accounts:
+            code_hash = symbol_factory.BitVecVal(0, 256)
+        else:
+            addr = "0" * (40 - len(hex(address.value)[2:])) + hex(address.value)[2:]
+            code = world_state.accounts_exist_or_load(
+                addr, self.dynamic_loader
+            ).code.bytecode
+            code_hash = symbol_factory.BitVecVal(int(get_code_hash(code), 16), 256)
+        stack.append(code_hash)
+        return [global_state]
+
+    @StateTransition()
+    def returndatacopy_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        state = global_state.mstate
+        memory_offset, return_offset, size = (
+            state.stack.pop(),
+            state.stack.pop(),
+            state.stack.pop(),
+        )
+
+        try:
+            concrete_memory_offset = helper.get_concrete_int(memory_offset)
+        except TypeError:
+            log.debug("Unsupported symbolic memory offset in RETURNDATACOPY")
+            return [global_state]
+
+        try:
+            concrete_return_offset = helper.get_concrete_int(return_offset)
+        except TypeError:
+            log.debug("Unsupported symbolic return offset in RETURNDATACOPY")
+            return [global_state]
+
+        try:
+            concrete_size = helper.get_concrete_int(size)
+        except TypeError:
+            log.debug("Unsupported symbolic max_length offset in RETURNDATACOPY")
+            return [global_state]
+
+        if global_state.last_return_data is None:
+            return [global_state]
+
+        global_state.mstate.mem_extend(concrete_memory_offset, concrete_size)
+        for i in range(concrete_size):
+            global_state.mstate.memory[concrete_memory_offset + i] = (
+                global_state.last_return_data[concrete_return_offset + i]
+                if concrete_return_offset + i < global_state.last_return_data.size
+                else 0
+            )
+
+        return [global_state]
+
+    @StateTransition()
+    def returndatasize_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        if global_state.last_return_data:
+            global_state.mstate.stack.append(global_state.last_return_data.size)
+        else:
+            global_state.mstate.stack.append(0)
+        return [global_state]
+
+    @StateTransition()
+    def blockhash_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        state = global_state.mstate
+        blocknumber = state.stack.pop()
+        state.stack.append(
+            global_state.new_bitvec("blockhash_block_" + str(blocknumber), 256)
+        )
+        return [global_state]
+
+    @StateTransition()
+    def coinbase_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        global_state.mstate.stack.append(global_state.new_bitvec("coinbase", 256))
+        return [global_state]
+
+    @StateTransition()
+    def timestamp_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        global_state.mstate.stack.append(global_state.new_bitvec("timestamp", 256))
+        return [global_state]
+
+    @StateTransition()
+    def number_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        global_state.mstate.stack.append(global_state.environment.block_number)
+        return [global_state]
+
+    @StateTransition()
+    def difficulty_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        global_state.mstate.stack.append(
+            global_state.new_bitvec("block_difficulty", 256)
+        )
+        return [global_state]
+
+    @StateTransition()
+    def gaslimit_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        global_state.mstate.stack.append(global_state.mstate.gas_limit)
+        return [global_state]
+
+    # Memory operations
+    @StateTransition()
+    def mload_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        state = global_state.mstate
+        offset = state.stack.pop()
+
+        state.mem_extend(offset, 32)
+        data = state.memory.get_word_at(offset)
+        state.stack.append(data)
+        return [global_state]
+
+    @StateTransition()
+    def mstore_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        state = global_state.mstate
+        mstart, value = state.stack.pop(), state.stack.pop()
+
+        try:
+            state.mem_extend(mstart, 32)
+        except Exception:
+            log.debug("Error extending memory")
+
+        state.memory.write_word_at(mstart, value)
+
+        return [global_state]
+
+    @StateTransition()
+    def mstore8_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        state = global_state.mstate
+        offset, value = state.stack.pop(), state.stack.pop()
+
+        state.mem_extend(offset, 1)
+
+        try:
+            value_to_write: Union[int, BitVec] = util.get_concrete_int(value) % 256
+        except TypeError:  # BitVec
+            value_to_write = Extract(7, 0, value)
+
+        state.memory[offset] = value_to_write
+
+        return [global_state]
+
+    @StateTransition()
+    def sload_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+
+        state = global_state.mstate
+        index = state.stack.pop()
+        state.stack.append(global_state.environment.active_account.storage[index])
+        return [global_state]
+
+    @StateTransition(is_state_mutation_instruction=True)
+    def sstore_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        state = global_state.mstate
+        index, value = state.stack.pop(), state.stack.pop()
+        global_state.environment.active_account.storage[index] = value
+        return [global_state]
+
+    @StateTransition(increment_pc=False, enable_gas=False)
+    def jump_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        state = global_state.mstate
+        disassembly = global_state.environment.code
+        try:
+            jump_addr = util.get_concrete_int(state.stack.pop())
+        except TypeError:
+            raise InvalidJumpDestination("Invalid jump argument (symbolic address)")
+        except IndexError:
+            raise StackUnderflowException()
+
+        index = util.get_instruction_index(disassembly.instruction_list, jump_addr)
+        if index is None:
+            raise InvalidJumpDestination("JUMP to invalid address")
+
+        op_code = disassembly.instruction_list[index]["opcode"]
+
+        if op_code != "JUMPDEST":
+            raise InvalidJumpDestination(
+                "Skipping JUMP to invalid destination (not JUMPDEST): " + str(jump_addr)
+            )
+
+        new_state = copy(global_state)
+        # add JUMP gas cost
+        min_gas, max_gas = get_opcode_gas("JUMP")
+        new_state.mstate.min_gas_used += min_gas
+        new_state.mstate.max_gas_used += max_gas
+
+        # manually set PC to destination
+        new_state.mstate.pc = index
+
+        return [new_state]
+
+    @StateTransition(increment_pc=False, enable_gas=False)
+    def jumpi_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        state = global_state.mstate
+        disassembly = global_state.environment.code
+        min_gas, max_gas = get_opcode_gas("JUMPI")
+        states = []
+
+        op0, condition = state.stack.pop(), state.stack.pop()
+
+        try:
+            jump_addr = util.get_concrete_int(op0)
+        except TypeError:
+            log.debug("Skipping JUMPI to invalid destination.")
+            global_state.mstate.pc += 1
+            global_state.mstate.min_gas_used += min_gas
+            global_state.mstate.max_gas_used += max_gas
+            return [global_state]
+        # False case
+
+        negated = (
+            simplify(Not(condition)) if isinstance(condition, Bool) else condition == 0
+        )
+        negated.simplify()
+        # True case
+        condi = simplify(condition) if isinstance(condition, Bool) else condition != 0
+        condi.simplify()
+
+        negated_cond = (isinstance(negated, bool) and negated) or (
+            isinstance(negated, Bool) and not is_false(negated)
+        )
+        positive_cond = (isinstance(condi, bool) and condi) or (
+            isinstance(condi, Bool) and not is_false(condi)
+        )
+
+        if negated_cond:
+            # States have to be deep copied during a fork as summaries assume independence across states.
+            new_state = deepcopy(global_state)
+            # add JUMPI gas cost
+            new_state.mstate.min_gas_used += min_gas
+            new_state.mstate.max_gas_used += max_gas
+
+            # manually increment PC
+
+            new_state.mstate.depth += 1
+            new_state.mstate.pc += 1
+            new_state.world_state.constraints.append(negated)
+            states.append(new_state)
+        else:
+            log.debug("Pruned unreachable states.")
+
+        # Get jump destination
+        index = util.get_instruction_index(disassembly.instruction_list, jump_addr)
+
+        if index is None:
+            log.debug("Invalid jump destination: " + str(jump_addr))
+            return states
+
+        instr = disassembly.instruction_list[index]
+
+        if instr["opcode"] == "JUMPDEST":
+            if positive_cond:
+                new_state = deepcopy(global_state)
+                # add JUMPI gas cost
+                new_state.mstate.min_gas_used += min_gas
+                new_state.mstate.max_gas_used += max_gas
+
+                # manually set PC to destination
+                new_state.mstate.pc = index
+                new_state.mstate.depth += 1
+                new_state.world_state.constraints.append(condi)
+                states.append(new_state)
+            else:
+                log.debug("Pruned unreachable states.")
+        return states
+
+    @StateTransition()
+    def beginsub_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+        This opcode depicts the start of the subroutine
+        """
+        raise OutOfGasException("Encountered BEGINSUB")
+
+    @StateTransition()
+    def jumpsub_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+        Jump to the subroutine
+        """
+        disassembly = global_state.environment.code
+        try:
+            location = util.get_concrete_int(global_state.mstate.stack.pop())
+        except TypeError:
+            raise VmException("Encountered symbolic JUMPSUB location")
+        index = util.get_instruction_index(disassembly.instruction_list, location)
+        instr = disassembly.instruction_list[index]
+
+        if instr["opcode"] != "BEGINSUB":
+            raise VmException(
+                "Encountered invalid JUMPSUB location :{}".format(instr["address"])
+            )
+        global_state.mstate.subroutine_stack.append(global_state.mstate.pc + 1)
+        global_state.mstate.pc = location
+        return [global_state]
+
+    @StateTransition(increment_pc=False)
+    def returnsub_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+        Returns control to the caller of the subroutine
+        """
+        global_state.mstate.pc = global_state.mstate.subroutine_stack.pop()
+        return [global_state]
+
+    @StateTransition()
+    def pc_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        index = global_state.mstate.pc
+        program_counter = global_state.environment.code.instruction_list[index][
+            "address"
+        ]
+        global_state.mstate.stack.append(symbol_factory.BitVecVal(program_counter, 256))
+
+        return [global_state]
+
+    @StateTransition()
+    def msize_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        global_state.mstate.stack.append(global_state.mstate.memory_size)
+        return [global_state]
+
+    @StateTransition()
+    def gas_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        # TODO: Push a Constrained variable which lies between min gas and max gas
+        global_state.mstate.stack.append(global_state.new_bitvec("gas", 256))
+        return [global_state]
+
+    @StateTransition(is_state_mutation_instruction=True)
+    def log_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        # TODO: implement me
+        state = global_state.mstate
+        depth = int(self.op_code[3:])
+        state.stack.pop(), state.stack.pop()
+        _ = [state.stack.pop() for _ in range(depth)]
+        # Not supported
+        return [global_state]
+
+    def _create_transaction_helper(
+        self, global_state, call_value, mem_offset, mem_size, create2_salt=None
+    ) -> List[GlobalState]:
+        mstate = global_state.mstate
+        environment = global_state.environment
+        world_state = global_state.world_state
+
+        call_data = get_call_data(global_state, mem_offset, mem_offset + mem_size)
+        code_raw: List[int] = []
+        code_end = call_data.size
+        size = call_data.size
+
+        if isinstance(size, BitVec):
+            # Other size restriction checks handle this
+            if size.symbolic:
+                size = 10**4
+            else:
+                size = size.value
+        code_raw = []
+        constraints = global_state.world_state.constraints
+        try:
+            model = get_model(constraints)
+        except UnsatError:
+            model = None
+        if isinstance(call_data, ConcreteCalldata):
+            for element in call_data.concrete(model):
+                if isinstance(element, BitVec) and element.symbolic:
+                    break
+                if isinstance(element, BitVec):
+                    code_raw.append(element.value)
+                else:
+                    code_raw.append(element)
+
+        if len(code_raw) < 1:
+            global_state.mstate.stack.append(1)
+            log.debug("No code found for trying to execute a create type instruction.")
+            return [global_state]
+
+        code_str = bytes.hex(bytes(code_raw))
+
+        next_transaction_id = tx_id_manager.get_next_tx_id()
+        constructor_arguments = ConcreteCalldata(
+            next_transaction_id, call_data[code_end:]
+        )
+        code = Disassembly(code_str)
+
+        caller = environment.active_account.address
+        gas_price = environment.gasprice
+        origin = environment.origin
+
+        contract_address: Union[BitVec, int] = None
+        Instruction._sha3_gas_helper(global_state, len(code_str[2:]) // 2)
+
+        if create2_salt:
+            if create2_salt.symbolic:
+                if create2_salt.size() != 256:
+                    pad = symbol_factory.BitVecVal(0, 256 - create2_salt.size())
+                    create2_salt = Concat(pad, create2_salt)
+                address = keccak_function_manager.create_keccak(
+                    Concat(
+                        symbol_factory.BitVecVal(255, 8),
+                        caller,
+                        create2_salt,
+                        symbol_factory.BitVecVal(int(get_code_hash(code_str), 16), 256),
+                    )
+                )
+                contract_address = Extract(255, 96, address)
+
+            else:
+                salt = hex(create2_salt.value)[2:]
+                salt = "0" * (64 - len(salt)) + salt
+
+                addr = hex(caller.value)[2:]
+                addr = "0" * (40 - len(addr)) + addr
+
+                contract_address = int(
+                    get_code_hash("0xff" + addr + salt + get_code_hash(code_str)[2:])[
+                        26:
+                    ],
+                    16,
+                )
+        transaction = ContractCreationTransaction(
+            world_state=world_state,
+            caller=caller,
+            code=code,
+            call_data=constructor_arguments,
+            gas_price=gas_price,
+            gas_limit=mstate.gas_limit,
+            origin=origin,
+            call_value=call_value,
+            contract_address=contract_address,
+        )
+        log.info("Raise transaction start signal")
+        raise TransactionStartSignal(transaction, self.op_code, global_state)
+
+    @StateTransition(is_state_mutation_instruction=True)
+    def create_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        call_value, mem_offset, mem_size = global_state.mstate.pop(3)
+        return self._create_transaction_helper(
+            global_state, call_value, mem_offset, mem_size
+        )
+
+    @StateTransition()
+    def create_post(self, global_state: GlobalState) -> List[GlobalState]:
+        return self._handle_create_type_post(global_state)
+
+    @StateTransition(is_state_mutation_instruction=True)
+    def create2_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        call_value, mem_offset, mem_size, salt = global_state.mstate.pop(4)
+
+        return self._create_transaction_helper(
+            global_state, call_value, mem_offset, mem_size, salt
+        )
+
+    @StateTransition()
+    def create2_post(self, global_state: GlobalState) -> List[GlobalState]:
+        return self._handle_create_type_post(global_state, opcode="create2")
+
+    @staticmethod
+    def _handle_create_type_post(global_state, opcode="create"):
+        if opcode == "create2":
+            global_state.mstate.pop(4)
+        else:
+            global_state.mstate.pop(3)
+        if global_state.last_return_data:
+            return_val = symbol_factory.BitVecVal(
+                int(global_state.last_return_data.return_data, 16), 256
+            )
+        else:
+            return_val = symbol_factory.BitVecVal(0, 256)
+        global_state.mstate.stack.append(return_val)
+        return [global_state]
+
+    @StateTransition()
+    def return_(self, global_state: GlobalState):
+        """
+
+        :param global_state:
+        """
+        state = global_state.mstate
+        offset, length = state.stack.pop(), state.stack.pop()
+        if length.symbolic:
+            return_data = [global_state.new_bitvec("return_data", 8)]
+            log.debug("Return with symbolic length or offset. Not supported")
+        else:
+            state.mem_extend(offset, length)
+            StateTransition.check_gas_usage_limit(global_state)
+            return_data = state.memory[offset : offset + length]
+        global_state.current_transaction.end(
+            global_state, ReturnData(return_data, length)
+        )
+
+    @StateTransition(is_state_mutation_instruction=True)
+    def selfdestruct_(self, global_state: GlobalState):
+        """
+
+        :param global_state:
+        """
+        target = global_state.mstate.stack.pop()
+        transfer_amount = global_state.environment.active_account.balance()
+        # Often the target of the selfdestruct instruction will be symbolic
+        # If it isn't then we'll transfer the balance to the indicated contract
+        global_state.world_state.balances[target] += transfer_amount
+
+        global_state.environment.active_account = deepcopy(
+            global_state.environment.active_account
+        )
+        global_state.accounts[
+            global_state.environment.active_account.address.value
+        ] = global_state.environment.active_account
+
+        global_state.environment.active_account.set_balance(0)
+        global_state.environment.active_account.deleted = True
+        global_state.current_transaction.end(global_state)
+
+    @StateTransition()
+    def revert_(self, global_state: GlobalState) -> None:
+        """
+
+        :param global_state:
+        """
+        state = global_state.mstate
+        offset, length = state.stack.pop(), state.stack.pop()
+        if length.symbolic is False:
+            return_data = [
+                global_state.new_bitvec(
+                    f"{global_state.current_transaction.id}_return_data_{i}", 8
+                )
+                for i in range(length.value)
+            ]
+        else:
+            return_data = [
+                If(
+                    i < length,
+                    global_state.new_bitvec(
+                        f"{global_state.current_transaction.id}_return_data_{i}", 8
+                    ),
+                    0,
+                )
+                for i in range(300)
+            ]
+
+        try:
+            return_data = state.memory[
+                util.get_concrete_int(offset) : util.get_concrete_int(offset + length)
+            ]
+        except TypeError:
+            log.debug("Return with symbolic length or offset. Not supported")
+        global_state.current_transaction.end(
+            global_state, return_data=ReturnData(return_data, length), revert=True
+        )
+
+    @StateTransition()
+    def assert_fail_(self, global_state: GlobalState):
+        """
+
+        :param global_state:
+        """
+        # 0xfe: designated invalid opcode
+        raise InvalidInstruction
+
+    @StateTransition()
+    def invalid_(self, global_state: GlobalState):
+        """
+
+        :param global_state:
+        """
+        raise InvalidInstruction
+
+    @StateTransition()
+    def stop_(self, global_state: GlobalState):
+        """
+
+        :param global_state:
+        """
+        global_state.current_transaction.end(global_state)
+
+    @staticmethod
+    def _write_symbolic_returndata(
+        global_state: GlobalState, memory_out_offset: BitVec, memory_out_size: BitVec
+    ):
+        """
+        Writes symbolic return-data into memory, The memory offset and size should be concrete
+        :param global_state:
+        :param memory_out_offset:
+        :param memory_out_size:
+        :return:
+        """
+        if memory_out_offset.symbolic is True or memory_out_size.symbolic is True:
+            return
+        return_data = []
+        return_data_size = global_state.new_bitvec("returndatasize", 256)
+
+        for i in range(memory_out_size.value):
+            data = global_state.new_bitvec(
+                "call_output_var({})_{}".format(
+                    simplify(memory_out_offset + i), global_state.mstate.pc
+                ),
+                8,
+            )
+            return_data.append(data)
+
+        global_state.mstate.mem_extend(memory_out_offset, memory_out_size)
+        for i in range(memory_out_size.value):
+            global_state.mstate.memory[memory_out_offset + i] = If(
+                i <= return_data_size,
+                return_data[i],
+                global_state.mstate.memory[memory_out_offset + i],
+            )
+
+        global_state.last_return_data = ReturnData(
+            return_data=return_data, return_data_size=return_data_size
+        )
+
+    @StateTransition()
+    def call_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        instr = global_state.get_current_instruction()
+        environment = global_state.environment
+
+        memory_out_size, memory_out_offset = global_state.mstate.stack[-7:-5]
+        try:
+            (
+                callee_address,
+                callee_account,
+                call_data,
+                value,
+                gas,
+                memory_out_offset,
+                memory_out_size,
+            ) = get_call_parameters(global_state, self.dynamic_loader, True)
+
+            if callee_account is not None and callee_account.code.bytecode == "":
+                log.debug("The call is related to ether transfer between accounts")
+                sender = environment.active_account.address
+                receiver = callee_account.address
+
+                transfer_ether(global_state, sender, receiver, value)
+                self._write_symbolic_returndata(
+                    global_state, memory_out_offset, memory_out_size
+                )
+
+                global_state.mstate.stack.append(
+                    global_state.new_bitvec("retval_" + str(instr["address"]), 256)
+                )
+                return [global_state]
+
+        except ValueError as e:
+            log.debug(
+                "Could not determine required parameters for call, putting fresh symbol on the stack. \n{}".format(
+                    e
+                )
+            )
+            self._write_symbolic_returndata(
+                global_state, memory_out_offset, memory_out_size
+            )
+            # TODO: decide what to do in this case
+            global_state.mstate.stack.append(
+                global_state.new_bitvec("retval_" + str(instr["address"]), 256)
+            )
+            return [global_state]
+
+        if environment.static:
+            if isinstance(value, int) and value > 0:
+                raise WriteProtection(
+                    "Cannot call with non zero value in a static call"
+                )
+            if isinstance(value, BitVec):
+                if value.symbolic:
+                    global_state.world_state.constraints.append(
+                        value == symbol_factory.BitVecVal(0, 256)
+                    )
+                elif value.value > 0:
+                    raise WriteProtection(
+                        "Cannot call with non zero value in a static call"
+                    )
+
+        native_result = native_call(
+            global_state, callee_address, call_data, memory_out_offset, memory_out_size
+        )
+        if native_result:
+            return native_result
+        transaction = MessageCallTransaction(
+            world_state=global_state.world_state,
+            gas_price=environment.gasprice,
+            gas_limit=gas,
+            origin=environment.origin,
+            caller=environment.active_account.address,
+            callee_account=callee_account,
+            call_data=call_data,
+            call_value=value,
+            static=environment.static,
+        )
+        raise TransactionStartSignal(transaction, self.op_code, global_state)
+
+    @StateTransition()
+    def call_post(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+
+        return self.post_handler(global_state, function_name="call")
+
+    @StateTransition()
+    def callcode_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        instr = global_state.get_current_instruction()
+        environment = global_state.environment
+        memory_out_size, memory_out_offset = global_state.mstate.stack[-7:-5]
+        try:
+            (
+                callee_address,
+                callee_account,
+                call_data,
+                value,
+                gas,
+                _,
+                _,
+            ) = get_call_parameters(global_state, self.dynamic_loader, True)
+
+            if callee_account is not None and callee_account.code.bytecode == "":
+                log.debug("The call is related to ether transfer between accounts")
+                sender = global_state.environment.active_account.address
+                receiver = callee_account.address
+                transfer_ether(global_state, sender, receiver, value)
+                self._write_symbolic_returndata(
+                    global_state, memory_out_offset, memory_out_size
+                )
+
+                global_state.mstate.stack.append(
+                    global_state.new_bitvec("retval_" + str(instr["address"]), 256)
+                )
+                return [global_state]
+
+        except ValueError as e:
+            log.debug(
+                "Could not determine required parameters for call, putting fresh symbol on the stack. \n{}".format(
+                    e
+                )
+            )
+            self._write_symbolic_returndata(
+                global_state, memory_out_offset, memory_out_size
+            )
+            global_state.mstate.stack.append(
+                global_state.new_bitvec("retval_" + str(instr["address"]), 256)
+            )
+            return [global_state]
+
+        native_result = native_call(
+            global_state, callee_address, call_data, memory_out_offset, memory_out_size
+        )
+        if native_result:
+            return native_result
+
+        transaction = MessageCallTransaction(
+            world_state=global_state.world_state,
+            gas_price=environment.gasprice,
+            gas_limit=gas,
+            origin=environment.origin,
+            code=callee_account.code,
+            caller=environment.address,
+            callee_account=environment.active_account,
+            call_data=call_data,
+            call_value=value,
+            static=environment.static,
+        )
+        raise TransactionStartSignal(transaction, self.op_code, global_state)
+
+    @StateTransition()
+    def callcode_post(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        instr = global_state.get_current_instruction()
+        memory_out_size, memory_out_offset = global_state.mstate.stack[-7:-5]
+        try:
+            (
+                _,
+                _,
+                _,
+                _,
+                _,
+                memory_out_offset,
+                memory_out_size,
+            ) = get_call_parameters(global_state, self.dynamic_loader, True)
+        except ValueError as e:
+            log.debug(
+                "Could not determine required parameters for call, putting fresh symbol on the stack. \n{}".format(
+                    e
+                )
+            )
+            self._write_symbolic_returndata(
+                global_state, memory_out_offset, memory_out_size
+            )
+            global_state.mstate.stack.append(
+                global_state.new_bitvec("retval_" + str(instr["address"]), 256)
+            )
+            return [global_state]
+
+        if global_state.last_return_data is None:
+            # Put return value on stack
+            return_value = global_state.new_bitvec(
+                "retval_" + str(instr["address"]), 256
+            )
+            global_state.mstate.stack.append(return_value)
+            self._write_symbolic_returndata(
+                global_state, memory_out_offset, memory_out_size
+            )
+            global_state.world_state.constraints.append(return_value == 0)
+            return [global_state]
+
+        try:
+            memory_out_offset = (
+                util.get_concrete_int(memory_out_offset)
+                if isinstance(memory_out_offset, Expression)
+                else memory_out_offset
+            )
+            memory_out_size = (
+                util.get_concrete_int(memory_out_size)
+                if isinstance(memory_out_size, Expression)
+                else memory_out_size
+            )
+        except TypeError:
+            global_state.mstate.stack.append(
+                global_state.new_bitvec("retval_" + str(instr["address"]), 256)
+            )
+            return [global_state]
+
+        # Copy memory
+        global_state.mstate.mem_extend(
+            memory_out_offset, min(memory_out_size, global_state.last_return_data.size)
+        )
+        if global_state.last_return_data.size.symbolic:
+            ret_size = 500
+        else:
+            ret_size = global_state.last_return_data.size.value
+        for i in range(min(memory_out_size, ret_size)):
+            global_state.mstate.memory[
+                i + memory_out_offset
+            ] = global_state.last_return_data[i]
+
+        # Put return value on stack
+        return_value = global_state.new_bitvec("retval_" + str(instr["address"]), 256)
+        global_state.mstate.stack.append(return_value)
+        global_state.world_state.constraints.append(return_value == 1)
+        return [global_state]
+
+    @StateTransition()
+    def delegatecall_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        instr = global_state.get_current_instruction()
+        environment = global_state.environment
+        memory_out_size, memory_out_offset = global_state.mstate.stack[-6:-4]
+
+        try:
+            (
+                callee_address,
+                callee_account,
+                call_data,
+                value,
+                gas,
+                _,
+                _,
+            ) = get_call_parameters(global_state, self.dynamic_loader)
+
+            if callee_account is not None and callee_account.code.bytecode == "":
+                log.debug("The call is related to ether transfer between accounts")
+                sender = global_state.environment.active_account.address
+                receiver = callee_account.address
+
+                transfer_ether(global_state, sender, receiver, value)
+                self._write_symbolic_returndata(
+                    global_state, memory_out_offset, memory_out_size
+                )
+                global_state.mstate.stack.append(
+                    global_state.new_bitvec("retval_" + str(instr["address"]), 256)
+                )
+                return [global_state]
+        except ValueError as e:
+            log.debug(
+                "Could not determine required parameters for call, putting fresh symbol on the stack. \n{}".format(
+                    e
+                )
+            )
+            self._write_symbolic_returndata(
+                global_state, memory_out_offset, memory_out_size
+            )
+            global_state.mstate.stack.append(
+                global_state.new_bitvec("retval_" + str(instr["address"]), 256)
+            )
+            return [global_state]
+
+        native_result = native_call(
+            global_state, callee_address, call_data, memory_out_offset, memory_out_size
+        )
+        if native_result:
+            return native_result
+
+        transaction = MessageCallTransaction(
+            world_state=global_state.world_state,
+            gas_price=environment.gasprice,
+            gas_limit=gas,
+            origin=environment.origin,
+            code=callee_account.code,
+            caller=environment.sender,
+            callee_account=environment.active_account,
+            call_data=call_data,
+            call_value=environment.callvalue,
+            static=environment.static,
+        )
+        raise TransactionStartSignal(transaction, self.op_code, global_state)
+
+    @StateTransition()
+    def delegatecall_post(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        instr = global_state.get_current_instruction()
+        memory_out_size, memory_out_offset = global_state.mstate.stack[-6:-4]
+
+        try:
+            (
+                _,
+                _,
+                _,
+                _,
+                _,
+                memory_out_offset,
+                memory_out_size,
+            ) = get_call_parameters(global_state, self.dynamic_loader)
+        except ValueError as e:
+            log.debug(
+                "Could not determine required parameters for call, putting fresh symbol on the stack. \n{}".format(
+                    e
+                )
+            )
+            global_state.mstate.stack.append(
+                global_state.new_bitvec("retval_" + str(instr["address"]), 256)
+            )
+            self._write_symbolic_returndata(
+                global_state, memory_out_offset, memory_out_size
+            )
+            return [global_state]
+
+        if global_state.last_return_data is None:
+            # Put return value on stack
+            return_value = global_state.new_bitvec(
+                "retval_" + str(instr["address"]), 256
+            )
+            global_state.mstate.stack.append(return_value)
+            global_state.world_state.constraints.append(return_value == 0)
+            return [global_state]
+
+        try:
+            memory_out_offset = (
+                util.get_concrete_int(memory_out_offset)
+                if isinstance(memory_out_offset, Expression)
+                else memory_out_offset
+            )
+            memory_out_size = (
+                util.get_concrete_int(memory_out_size)
+                if isinstance(memory_out_size, Expression)
+                else memory_out_size
+            )
+        except TypeError:
+            global_state.mstate.stack.append(
+                global_state.new_bitvec("retval_" + str(instr["address"]), 256)
+            )
+            return [global_state]
+
+            # Copy memory
+        global_state.mstate.mem_extend(
+            memory_out_offset, min(memory_out_size, global_state.last_return_data.size)
+        )
+        if global_state.last_return_data.size.symbolic:
+            ret_size = 500
+        else:
+            ret_size = global_state.last_return_data.size.value
+        for i in range(min(memory_out_size, ret_size)):
+            global_state.mstate.memory[
+                i + memory_out_offset
+            ] = global_state.last_return_data[i]
+
+        # Put return value on stack
+        return_value = global_state.new_bitvec("retval_" + str(instr["address"]), 256)
+        global_state.mstate.stack.append(return_value)
+        global_state.world_state.constraints.append(return_value == 1)
+        return [global_state]
+
+    @StateTransition()
+    def staticcall_(self, global_state: GlobalState) -> List[GlobalState]:
+        """
+
+        :param global_state:
+        :return:
+        """
+        instr = global_state.get_current_instruction()
+        environment = global_state.environment
+        memory_out_size, memory_out_offset = global_state.mstate.stack[-6:-4]
+        try:
+            (
+                callee_address,
+                callee_account,
+                call_data,
+                value,
+                gas,
+                memory_out_offset,
+                memory_out_size,
+            ) = get_call_parameters(global_state, self.dynamic_loader)
+
+            if callee_account is not None and callee_account.code.bytecode == "":
+                log.debug("The call is related to ether transfer between accounts")
+                sender = environment.active_account.address
+                receiver = callee_account.address
+                transfer_ether(global_state, sender, receiver, value)
+                self._write_symbolic_returndata(
+                    global_state, memory_out_offset, memory_out_size
+                )
+                global_state.mstate.stack.append(
+                    global_state.new_bitvec("retval_" + str(instr["address"]), 256)
+                )
+
+                return [global_state]
+
+        except ValueError as e:
+            log.debug(
+                "Could not determine required parameters for call, putting fresh symbol on the stack. \n{}".format(
+                    e
+                )
+            )
+            self._write_symbolic_returndata(
+                global_state, memory_out_offset, memory_out_size
+            )
+            global_state.mstate.stack.append(
+                global_state.new_bitvec("retval_" + str(instr["address"]), 256)
+            )
+
+            return [global_state]
+
+        native_result = native_call(
+            global_state, callee_address, call_data, memory_out_offset, memory_out_size
+        )
+
+        if native_result:
+            return native_result
+
+        transaction = MessageCallTransaction(
+            world_state=global_state.world_state,
+            gas_price=environment.gasprice,
+            gas_limit=gas,
+            origin=environment.origin,
+            code=callee_account.code,
+            caller=environment.address,
+            callee_account=callee_account,
+            call_data=call_data,
+            call_value=value,
+            static=True,
+        )
+        raise TransactionStartSignal(transaction, self.op_code, global_state)
+
+    @StateTransition()
+    def staticcall_post(self, global_state: GlobalState) -> List[GlobalState]:
+        return self.post_handler(global_state, function_name="staticcall")
+
+    def post_handler(self, global_state, function_name: str):
+        instr = global_state.get_current_instruction()
+        if function_name in ("staticcall", "delegatecall"):
+            memory_out_size, memory_out_offset = global_state.mstate.stack[-6:-4]
+        else:
+            memory_out_size, memory_out_offset = global_state.mstate.stack[-7:-5]
+
+        try:
+            with_value = function_name != "staticcall"
+            (
+                _,
+                _,
+                _,
+                _,
+                _,
+                memory_out_offset,
+                memory_out_size,
+            ) = get_call_parameters(global_state, self.dynamic_loader, with_value)
+        except ValueError as e:
+            log.debug(
+                "Could not determine required parameters for {}, putting fresh symbol on the stack. \n{}".format(
+                    function_name, e
+                )
+            )
+            self._write_symbolic_returndata(
+                global_state, memory_out_offset, memory_out_size
+            )
+            global_state.mstate.stack.append(
+                global_state.new_bitvec("retval_" + str(instr["address"]), 256)
+            )
+            return [global_state]
+
+        if global_state.last_return_data is None:
+            # Put return value on stack
+            return_value = global_state.new_bitvec(
+                "retval_" + str(instr["address"]), 256
+            )
+            global_state.mstate.stack.append(return_value)
+            return [global_state]
+
+        try:
+            memory_out_offset = (
+                util.get_concrete_int(memory_out_offset)
+                if isinstance(memory_out_offset, Expression)
+                else memory_out_offset
+            )
+            memory_out_size = (
+                util.get_concrete_int(memory_out_size)
+                if isinstance(memory_out_size, Expression)
+                else memory_out_size
+            )
+        except TypeError:
+            global_state.mstate.stack.append(
+                global_state.new_bitvec("retval_" + str(instr["address"]), 256)
+            )
+            return [global_state]
+
+        global_state.mstate.mem_extend(
+            memory_out_offset, min(memory_out_size, global_state.last_return_data.size)
+        )
+        if global_state.last_return_data.size.symbolic:
+            ret_size = 500
+        else:
+            ret_size = global_state.last_return_data.size.value
+
+        for i in range(min(memory_out_size, ret_size)):
+            global_state.mstate.memory[
+                i + memory_out_offset
+            ] = global_state.last_return_data[i]
+
+        # Put return value on stack
+        return_value = global_state.new_bitvec(
+            "retval_" + str(global_state.get_current_instruction()["address"]), 256
+        )
+        global_state.mstate.stack.append(return_value)
+        global_state.world_state.constraints.append(return_value == 1)
+
+        return [global_state]
diff --git a/mythril_sol/laser/ethereum/natives.py b/mythril_sol/laser/ethereum/natives.py
new file mode 100644
index 0000000000000000000000000000000000000000..7c8d9f75da06355a765913c831ecd893c7183783
--- /dev/null
+++ b/mythril_sol/laser/ethereum/natives.py
@@ -0,0 +1,282 @@
+"""This nodule defines helper functions to deal with native calls."""
+
+import hashlib
+import logging
+import blake2b
+import coincurve
+
+from typing import List
+
+from py_ecc.secp256k1 import N as secp256k1n
+from py_ecc.secp256k1 import ecdsa_raw_recover
+import py_ecc.optimized_bn128 as bn128
+
+from rlp.utils import ALL_BYTES
+from eth_utils import ValidationError
+from eth._utils.blake2.coders import extract_blake2b_parameters
+from eth._utils.bn128 import validate_point
+
+from mythril.support.support_utils import sha3, zpad
+from mythril.laser.ethereum.state.calldata import BaseCalldata, ConcreteCalldata
+from mythril.laser.ethereum.util import extract_copy, extract32
+from eth_utils import int_to_big_endian, big_endian_to_int
+
+log = logging.getLogger(__name__)
+
+
+def encode_int32(v):
+    return v.to_bytes(32, byteorder="big")
+
+
+def safe_ord(value):
+    if isinstance(value, int):
+        return value
+    else:
+        return ord(value)
+
+
+def int_to_32bytearray(i):
+    o = [0] * 32
+    for x in range(32):
+        o[31 - x] = i & 0xFF
+        i >>= 8
+    return o
+
+
+def ecrecover_to_pub(rawhash, v, r, s):
+    if hasattr(coincurve, "PublicKey"):
+        try:
+            pk = coincurve.PublicKey.from_signature_and_message(
+                zpad(bytes(int_to_32bytearray(r)), 32)
+                + zpad(bytes(int_to_32bytearray(s)), 32)
+                + ALL_BYTES[v - 27],
+                rawhash,
+                hasher=None,
+            )
+            pub = pk.format(compressed=False)[1:]
+        except BaseException:
+            pub = b"\x00" * 64
+    else:
+        result = ecdsa_raw_recover(rawhash, (v, r, s))
+        if result:
+            x, y = result
+            pub = encode_int32(x) + encode_int32(y)
+        else:
+            raise ValueError("Invalid VRS")
+    assert len(pub) == 64
+    return pub
+
+
+class NativeContractException(Exception):
+    """An exception denoting an error during a native call."""
+
+    pass
+
+
+def ecrecover(data: List[int]) -> List[int]:
+    """
+
+    :param data:
+    :return:
+    """
+    # TODO: Add type hints
+    try:
+        bytes_data = bytearray(data)
+        v = extract32(bytes_data, 32)
+        r = extract32(bytes_data, 64)
+        s = extract32(bytes_data, 96)
+    except TypeError:
+        raise NativeContractException
+
+    message = b"".join([ALL_BYTES[x] for x in bytes_data[0:32]])
+    if r >= secp256k1n or s >= secp256k1n or v < 27 or v > 28:
+        return []
+    try:
+        pub = ecrecover_to_pub(message, v, r, s)
+    except Exception as e:
+        log.debug("An error has occurred while extracting public key: " + str(e))
+        return []
+    o = [0] * 12 + [x for x in sha3(pub)[-20:]]
+    return list(bytearray(o))
+
+
+def sha256(data: List[int]) -> List[int]:
+    """
+
+    :param data:
+    :return:
+    """
+    try:
+        bytes_data = bytes(data)
+    except TypeError:
+        raise NativeContractException
+    return list(bytearray(hashlib.sha256(bytes_data).digest()))
+
+
+def ripemd160(data: List[int]) -> List[int]:
+    """
+
+    :param data:
+    :return:
+    """
+    try:
+        bytes_data = bytes(data)
+    except TypeError:
+        raise NativeContractException
+    digest = hashlib.new("ripemd160", bytes_data).digest()
+    padded = 12 * [0] + list(digest)
+    return list(bytearray(bytes(padded)))
+
+
+def identity(data: List[int]) -> List[int]:
+    """
+
+    :param data:
+    :return:
+    """
+    return data
+
+
+def mod_exp(data: List[int]) -> List[int]:
+    """
+    TODO: Some symbolic parts can be handled here
+    Modular Exponentiation
+    :param data: Data with <length_of_BASE> <length_of_EXPONENT> <length_of_MODULUS> <BASE> <EXPONENT> <MODULUS>
+    :return: modular exponentiation
+    """
+    bytes_data = bytearray(data)
+    baselen = extract32(bytes_data, 0)
+    explen = extract32(bytes_data, 32)
+    modlen = extract32(bytes_data, 64)
+    if baselen == 0:
+        return [0] * modlen
+    if modlen == 0:
+        return []
+
+    first_exp_bytes = extract32(bytes_data, 96 + baselen) >> (8 * max(32 - explen, 0))
+    while first_exp_bytes:
+        first_exp_bytes >>= 1
+
+    base = bytearray(baselen)
+    extract_copy(bytes_data, base, 0, 96, baselen)
+    exp = bytearray(explen)
+    extract_copy(bytes_data, exp, 0, 96 + baselen, explen)
+    mod = bytearray(modlen)
+    extract_copy(bytes_data, mod, 0, 96 + baselen + explen, modlen)
+    if big_endian_to_int(mod) == 0:
+        return [0] * modlen
+    o = pow(big_endian_to_int(base), big_endian_to_int(exp), big_endian_to_int(mod))
+    return [safe_ord(x) for x in zpad(int_to_big_endian(o), modlen)]
+
+
+def ec_add(data: List[int]) -> List[int]:
+    bytes_data = bytearray(data)
+    x1 = extract32(bytes_data, 0)
+    y1 = extract32(bytes_data, 32)
+    x2 = extract32(bytes_data, 64)
+    y2 = extract32(bytes_data, 96)
+    try:
+        p1 = validate_point(x1, y1)
+        p2 = validate_point(x2, y2)
+    except ValidationError:
+        return []
+    if p1 is False or p2 is False:
+        return []
+    o = bn128.normalize(bn128.add(p1, p2))
+    return [safe_ord(x) for x in (encode_int32(o[0].n) + encode_int32(o[1].n))]
+
+
+def ec_mul(data: List[int]) -> List[int]:
+    bytes_data = bytearray(data)
+    x = extract32(bytes_data, 0)
+    y = extract32(bytes_data, 32)
+    m = extract32(bytes_data, 64)
+    try:
+        p = validate_point(x, y)
+    except ValidationError:
+        return []
+    if p is False:
+        return []
+    o = bn128.normalize(bn128.multiply(p, m))
+    return [safe_ord(c) for c in (encode_int32(o[0].n) + encode_int32(o[1].n))]
+
+
+def ec_pair(data: List[int]) -> List[int]:
+    if len(data) % 192:
+        return []
+
+    zero = (bn128.FQ2.one(), bn128.FQ2.one(), bn128.FQ2.zero())
+    exponent = bn128.FQ12.one()
+    bytes_data = bytearray(data)
+    for i in range(0, len(bytes_data), 192):
+        x1 = extract32(bytes_data, i)
+        y1 = extract32(bytes_data, i + 32)
+        x2_i = extract32(bytes_data, i + 64)
+        x2_r = extract32(bytes_data, i + 96)
+        y2_i = extract32(bytes_data, i + 128)
+        y2_r = extract32(bytes_data, i + 160)
+        p1 = validate_point(x1, y1)
+        if p1 is False:
+            return []
+        for v in (x2_i, x2_r, y2_i, y2_r):
+            if v >= bn128.field_modulus:
+                return []
+        fq2_x = bn128.FQ2([x2_r, x2_i])
+        fq2_y = bn128.FQ2([y2_r, y2_i])
+        if (fq2_x, fq2_y) != (bn128.FQ2.zero(), bn128.FQ2.zero()):
+            p2 = (fq2_x, fq2_y, bn128.FQ2.one())
+            if not bn128.is_on_curve(p2, bn128.b2):
+                return []
+        else:
+            p2 = zero
+        if bn128.multiply(p2, bn128.curve_order)[-1] != bn128.FQ2.zero():
+            return []
+        exponent *= bn128.pairing(p2, p1, final_exponentiate=False)
+    result = bn128.final_exponentiate(exponent) == bn128.FQ12.one()
+    return [0] * 31 + [1 if result else 0]
+
+
+def blake2b_fcompress(data: List[int]) -> List[int]:
+    """
+    blake2b hashing
+    :param data:
+    :return:
+    """
+    try:
+        parameters = extract_blake2b_parameters(bytes(data))
+    except ValidationError as v:
+        logging.debug("Invalid blake2b params: {}".format(v))
+        return []
+    return list(bytearray(blake2b.compress(*parameters)))
+
+
+PRECOMPILE_FUNCTIONS = (
+    ecrecover,
+    sha256,
+    ripemd160,
+    identity,
+    mod_exp,
+    ec_add,
+    ec_mul,
+    ec_pair,
+    blake2b_fcompress,
+)
+
+PRECOMPILE_COUNT = len(PRECOMPILE_FUNCTIONS)
+
+
+def native_contracts(address: int, data: BaseCalldata) -> List[int]:
+    """Takes integer address 1, 2, 3, 4.
+
+    :param address:
+    :param data:
+    :return:
+    """
+
+    if not isinstance(data, ConcreteCalldata):
+        raise NativeContractException
+    concrete_data = data.concrete(None)
+    try:
+        return PRECOMPILE_FUNCTIONS[address - 1](concrete_data)
+    except TypeError:
+        raise NativeContractException
diff --git a/mythril_sol/laser/ethereum/state/__init__.py b/mythril_sol/laser/ethereum/state/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..9e9938db140238a43e45b2e530f83e6bab991b62
--- /dev/null
+++ b/mythril_sol/laser/ethereum/state/__init__.py
@@ -0,0 +1 @@
+# Hello!
diff --git a/mythril_sol/laser/ethereum/state/account.py b/mythril_sol/laser/ethereum/state/account.py
new file mode 100644
index 0000000000000000000000000000000000000000..481d6c93176448a607f418520d7232e7a68a0621
--- /dev/null
+++ b/mythril_sol/laser/ethereum/state/account.py
@@ -0,0 +1,228 @@
+"""This module contains account-related functionality.
+
+This includes classes representing accounts and their storage.
+"""
+import logging
+from copy import copy, deepcopy
+from typing import Any, Dict, Union, Set
+
+
+from mythril.laser.smt import Array, K, BitVec, simplify, BaseArray, If, Bool
+from mythril.disassembler.disassembly import Disassembly
+from mythril.laser.smt import symbol_factory
+from mythril.support.support_args import args
+
+log = logging.getLogger(__name__)
+
+
+class Storage:
+    """Storage class represents the storage of an Account."""
+
+    def __init__(self, concrete=False, address=None, dynamic_loader=None) -> None:
+        """Constructor for Storage.
+
+        :param concrete: bool indicating whether to interpret uninitialized storage as concrete versus symbolic
+        """
+        if concrete and args.unconstrained_storage is False:
+            self._standard_storage: BaseArray = K(256, 256, 0)
+        else:
+            self._standard_storage = Array(f"Storage{address}", 256, 256)
+
+        self.printable_storage: Dict[BitVec, BitVec] = {}
+
+        self.dynld = dynamic_loader
+        self.storage_keys_loaded: Set[int] = set()
+        self.address = address
+
+        # Stores all keys set in the storage
+        self.keys_set: Set[BitVec] = set()
+
+        # Stores all get keys in the storage
+        self.keys_get: Set[BitVec] = set()
+
+    def __getitem__(self, item: BitVec) -> BitVec:
+        storage = self._standard_storage
+        self.keys_get.add(item)
+        if (
+            self.address
+            and self.address.value != 0
+            and item.symbolic is False
+            and int(item.value) not in self.storage_keys_loaded
+            and (self.dynld and self.dynld.active)
+            and args.unconstrained_storage is False
+        ):
+            try:
+                value = symbol_factory.BitVecVal(
+                    int(
+                        self.dynld.read_storage(
+                            contract_address="0x{:040X}".format(self.address.value),
+                            index=int(item.value),
+                        ),
+                        16,
+                    ),
+                    256,
+                )
+
+                for key in self.keys_set:
+                    value = If(key == item, storage[item], value)
+
+                storage[item] = value
+                self.storage_keys_loaded.add(int(item.value))
+                self.printable_storage[item] = storage[item]
+            except ValueError as e:
+                log.debug("Couldn't read storage at %s: %s", item, e)
+
+        return simplify(storage[item])
+
+    def __setitem__(self, key, value: Any) -> None:
+        if isinstance(value, Bool):
+            value = If(value, 1, 0)
+
+        self.printable_storage[key] = value
+        self._standard_storage[key] = value
+
+        self.keys_set.add(key)
+
+        if key.symbolic is False:
+            self.storage_keys_loaded.add(int(key.value))
+
+    def __deepcopy__(self, memodict=dict()):
+        concrete = isinstance(self._standard_storage, K)
+        storage = Storage(
+            concrete=concrete, address=self.address, dynamic_loader=self.dynld
+        )
+        storage._standard_storage = deepcopy(self._standard_storage)
+        storage.printable_storage = copy(self.printable_storage)
+        storage.storage_keys_loaded = copy(self.storage_keys_loaded)
+        storage.keys_set = deepcopy(self.keys_set)
+        storage.keys_get = deepcopy(self.keys_get)
+        return storage
+
+    def __str__(self) -> str:
+        # TODO: Do something better here
+        return str(self.printable_storage)
+
+
+class Account:
+    """Account class representing ethereum accounts."""
+
+    def __init__(
+        self,
+        address: Union[BitVec, str],
+        code=None,
+        contract_name=None,
+        balances: Array = None,
+        concrete_storage=False,
+        dynamic_loader=None,
+        nonce=0,
+    ) -> None:
+        """Constructor for account.
+
+        :param address: Address of the account
+        :param code: The contract code of the account
+        :param contract_name: The name associated with the account
+        :param balances: The balance for the account
+        :param concrete_storage: Interpret storage as concrete
+        """
+        self.concrete_storage = concrete_storage
+        self.nonce = nonce
+        self.code = code or Disassembly("")
+        self.address = (
+            address
+            if isinstance(address, BitVec)
+            else symbol_factory.BitVecVal(int(address, 16), 256)
+        )
+
+        self.storage = Storage(
+            concrete_storage, address=self.address, dynamic_loader=dynamic_loader
+        )
+
+        # Metadata
+        if contract_name is None:
+            self.contract_name = (
+                "{0:#0{1}x}".format(self.address.value, 42)
+                if not self.address.symbolic
+                else "unknown"
+            )
+        else:
+            self.contract_name = contract_name
+
+        self.deleted = False
+
+        self._balances = balances
+        self.balance = lambda: self._balances[self.address]
+
+    def __str__(self) -> str:
+        return str(self.as_dict)
+
+    def set_balance(self, balance: Union[int, BitVec]) -> None:
+        """
+
+        :param balance:
+        """
+        balance = (
+            symbol_factory.BitVecVal(balance, 256)
+            if isinstance(balance, int)
+            else balance
+        )
+        assert self._balances is not None
+        self._balances[self.address] = balance
+
+    def set_storage(self, storage: Dict):
+        """
+        Sets concrete storage
+        """
+        for key, value in storage.items():
+            concrete_key, concrete_value = int(key, 16), int(value, 16)
+            self.storage[
+                symbol_factory.BitVecVal(concrete_key, 256)
+            ] = symbol_factory.BitVecVal(concrete_value, 256)
+
+    def add_balance(self, balance: Union[int, BitVec]) -> None:
+        """
+
+        :param balance:
+        """
+        balance = (
+            symbol_factory.BitVecVal(balance, 256)
+            if isinstance(balance, int)
+            else balance
+        )
+        self._balances[self.address] += balance
+
+    @property
+    def as_dict(self) -> Dict:
+        """
+
+        :return:
+        """
+        return {
+            "nonce": self.nonce,
+            "code": self.serialised_code(),
+            "balance": self.balance(),
+            "storage": self.storage,
+        }
+
+    def serialised_code(self):
+        if isinstance(self.code.bytecode, str):
+            return self.code.bytecode
+        new_code = "0x"
+        for byte in self.code.bytecode:
+            if isinstance(byte, int):
+                new_code += hex(byte)
+            else:
+                new_code += "<call_data>"
+        return new_code
+
+    def __copy__(self, memodict={}):
+        new_account = Account(
+            address=self.address,
+            code=self.code,
+            contract_name=self.contract_name,
+            balances=deepcopy(self._balances),
+            concrete_storage=self.concrete_storage,
+            nonce=self.nonce,
+        )
+        new_account.storage = deepcopy(self.storage)
+        new_account.code = self.code
+        return new_account
diff --git a/mythril_sol/laser/ethereum/state/annotation.py b/mythril_sol/laser/ethereum/state/annotation.py
new file mode 100644
index 0000000000000000000000000000000000000000..8ffbbcb932ab912b22344df9dba3cd1ba29d5a31
--- /dev/null
+++ b/mythril_sol/laser/ethereum/state/annotation.py
@@ -0,0 +1,74 @@
+"""This module includes classes used for annotating trace information.
+
+This includes the base StateAnnotation class, as well as an adaption,
+which will not be copied on every new state.
+"""
+
+from abc import abstractmethod
+
+
+class StateAnnotation:
+    """The StateAnnotation class is used to persist information over traces.
+
+    This allows modules to reason about traces without the need to
+    traverse the state space themselves.
+    """
+
+    # TODO: Remove this? It seems to be used only in the MutationPruner, and
+    # we could simply use world state annotations if we want them to be persisted.
+    @property
+    def persist_to_world_state(self) -> bool:
+        """If this function returns true then laser will also annotate the
+        world state.
+
+        If you want annotations to persist through different user initiated message call transactions
+        then this should be enabled.
+
+        The default is set to False
+        """
+        return False
+
+    @property
+    def persist_over_calls(self) -> bool:
+        """If this function returns true then laser will propagate the annotation between calls
+
+        The default is set to False
+        """
+        return False
+
+    @property
+    def search_importance(self) -> int:
+        """
+        Used in estimating the priority of a state annotated with the corresponding annotation.
+        Default is 1
+        """
+        return 1
+
+
+class MergeableStateAnnotation(StateAnnotation):
+    """This class allows a base annotation class for annotations that
+    can be merged.
+    """
+
+    @abstractmethod
+    def check_merge_annotation(self, annotation) -> bool:
+        pass
+
+    @abstractmethod
+    def merge_annotation(self, annotation):
+        pass
+
+
+class NoCopyAnnotation(StateAnnotation):
+    """This class provides a base annotation class for annotations that
+    shouldn't be copied on every new state.
+
+    Rather the same object should be propagated. This is very useful if
+    you are looking to analyze a property over multiple substates
+    """
+
+    def __copy__(self):
+        return self
+
+    def __deepcopy__(self, _):
+        return self
diff --git a/mythril_sol/laser/ethereum/state/calldata.py b/mythril_sol/laser/ethereum/state/calldata.py
new file mode 100644
index 0000000000000000000000000000000000000000..0f774a34dc4f6e6504819f3dec7103a27eebb9ff
--- /dev/null
+++ b/mythril_sol/laser/ethereum/state/calldata.py
@@ -0,0 +1,327 @@
+"""This module declares classes to represent call data."""
+from typing import cast, Union, Tuple, List
+
+
+from typing import Any, Union
+
+from z3 import Model, unsat, unknown
+from z3.z3types import Z3Exception
+
+from mythril.laser.ethereum.util import get_concrete_int
+
+from mythril.laser.smt import (
+    Array,
+    BitVec,
+    Bool,
+    Concat,
+    Expression,
+    If,
+    K,
+    simplify,
+    symbol_factory,
+    Solver,
+)
+
+
+class BaseCalldata:
+    """Base calldata class This represents the calldata provided when sending a
+    transaction to a contract."""
+
+    def __init__(self, tx_id: str) -> None:
+        """
+
+        :param tx_id:
+        """
+        self.tx_id = tx_id
+
+    @property
+    def calldatasize(self) -> BitVec:
+        """
+
+        :return: Calldata size for this calldata object
+        """
+        result = self.size
+        if isinstance(result, int):
+            return symbol_factory.BitVecVal(result, 256)
+        return result
+
+    def get_word_at(self, offset: int) -> Expression:
+        """Gets word at offset.
+
+        :param offset:
+        :return:
+        """
+        parts = self[offset : offset + 32]
+        return simplify(Concat(parts))
+
+    def __getitem__(self, item: Union[int, slice, BitVec]) -> Any:
+        """
+
+        :param item:
+        :return:
+        """
+        if isinstance(item, int) or isinstance(item, Expression):
+            return self._load(item)
+
+        if isinstance(item, slice):
+            start = 0 if item.start is None else item.start
+            step = 1 if item.step is None else item.step
+            stop = self.size if item.stop is None else item.stop
+
+            try:
+                current_index = (
+                    start
+                    if isinstance(start, BitVec)
+                    else symbol_factory.BitVecVal(start, 256)
+                )
+                parts = []
+                while True:
+                    s = Solver()
+                    s.set_timeout(1000)
+                    s.add(current_index != stop)
+                    result = s.check()
+                    if result in (unsat, unknown):
+                        break
+                    element = self._load(current_index)
+                    if not isinstance(element, Expression):
+                        element = symbol_factory.BitVecVal(element, 8)
+
+                    parts.append(element)
+                    current_index = simplify(current_index + step)
+
+            except Z3Exception:
+                raise IndexError("Invalid Calldata Slice")
+            return parts
+
+        raise ValueError
+
+    def _load(self, item: Union[int, BitVec]) -> Any:
+        """
+
+        :param item:
+        """
+        raise NotImplementedError()
+
+    @property
+    def size(self) -> Union[BitVec, int]:
+        """Returns the exact size of this calldata, this is not normalized.
+
+        :return: unnormalized call data size
+        """
+        raise NotImplementedError()
+
+    def concrete(self, model: Model) -> list:
+        """Returns a concrete version of the calldata using the provided model.
+
+        :param model:
+        """
+        raise NotImplementedError
+
+
+class ConcreteCalldata(BaseCalldata):
+    """A concrete call data representation."""
+
+    def __init__(self, tx_id: str, calldata: list) -> None:
+        """Initializes the ConcreteCalldata object.
+
+        :param tx_id: Id of the transaction that the calldata is for.
+        :param calldata: The concrete calldata content
+        """
+        self._concrete_calldata = calldata
+        self._calldata = K(256, 8, 0)
+        for i, element in enumerate(calldata, 0):
+            element = (
+                symbol_factory.BitVecVal(element, 8)
+                if isinstance(element, int)
+                else element
+            )
+            self._calldata[symbol_factory.BitVecVal(i, 256)] = element
+
+        super().__init__(tx_id)
+
+    def _load(self, item: Union[int, BitVec]) -> BitVec:
+        """
+
+        :param item:
+        :return:
+        """
+        item = symbol_factory.BitVecVal(item, 256) if isinstance(item, int) else item
+        return simplify(self._calldata[item])
+
+    def concrete(self, model: Model) -> list:
+        """
+
+        :param model:
+        :return:
+        """
+        return self._concrete_calldata
+
+    @property
+    def size(self) -> int:
+        """
+
+        :return:
+        """
+        return len(self._concrete_calldata)
+
+
+class BasicConcreteCalldata(BaseCalldata):
+    """A base class to represent concrete call data."""
+
+    def __init__(self, tx_id: str, calldata: list) -> None:
+        """Initializes the ConcreteCalldata object, that doesn't use z3 arrays.
+
+        :param tx_id: Id of the transaction that the calldata is for.
+        :param calldata: The concrete calldata content
+        """
+        self._calldata = calldata
+        super().__init__(tx_id)
+
+    def _load(self, item: Union[int, Expression]) -> Any:
+        """
+
+        :param item:
+        :return:
+        """
+        if isinstance(item, int):
+            try:
+                return self._calldata[item]
+            except IndexError:
+                return 0
+
+        value = symbol_factory.BitVecVal(0x0, 8)
+        for i in range(self.size):
+            value = If(cast(Union[BitVec, Bool], item) == i, self._calldata[i], value)
+        return value
+
+    def concrete(self, model: Model) -> list:
+        """
+
+        :param model:
+        :return:
+        """
+        concrete_calldata = []
+        for data in self._calldata:
+            if isinstance(data, BitVec) and data.symbolic and model is not None:
+                concrete_calldata.append(model.eval(data, model_completion=True))
+            elif isinstance(data, BitVec) and data.symbolic is False:
+                concrete_calldata.append(data)
+            else:
+                break
+        return concrete_calldata
+
+    @property
+    def size(self) -> int:
+        """
+
+        :return:
+        """
+        return len(self._calldata)
+
+
+class SymbolicCalldata(BaseCalldata):
+    """A class for representing symbolic call data."""
+
+    def __init__(self, tx_id: str) -> None:
+        """Initializes the SymbolicCalldata object.
+
+        :param tx_id: Id of the transaction that the calldata is for.
+        """
+        self._size = symbol_factory.BitVecSym(str(tx_id) + "_calldatasize", 256)
+        self._calldata = Array("{}_calldata".format(tx_id), 256, 8)
+        super().__init__(tx_id)
+
+    def _load(self, item: Union[int, BitVec]) -> Any:
+        """
+
+        :param item:
+        :return:
+        """
+        item = symbol_factory.BitVecVal(item, 256) if isinstance(item, int) else item
+        return simplify(
+            If(
+                item < self._size,
+                simplify(self._calldata[cast(BitVec, item)]),
+                symbol_factory.BitVecVal(0, 8),
+            )
+        )
+
+    def concrete(self, model: Model) -> list:
+        """
+
+        :param model:
+        :return:
+        """
+        concrete_length = model.eval(self.size.raw, model_completion=True).as_long()
+        result = []
+        for i in range(concrete_length):
+            value = self._load(i)
+            c_value = model.eval(value.raw, model_completion=True).as_long()
+            result.append(c_value)
+
+        return result
+
+    @property
+    def size(self) -> BitVec:
+        """
+
+        :return:
+        """
+        return self._size
+
+
+class BasicSymbolicCalldata(BaseCalldata):
+    """A basic class representing symbolic call data."""
+
+    def __init__(self, tx_id: str) -> None:
+        """Initializes the SymbolicCalldata object.
+
+        :param tx_id: Id of the transaction that the calldata is for.
+        """
+        self._reads: List[Tuple[Union[int, BitVec], BitVec]] = []
+        self._size = symbol_factory.BitVecSym(str(tx_id) + "_calldatasize", 256)
+        super().__init__(tx_id)
+
+    def _load(self, item: Union[int, BitVec], clean=False) -> Any:
+        expr_item: BitVec = (
+            symbol_factory.BitVecVal(item, 256) if isinstance(item, int) else item
+        )
+
+        symbolic_base_value = If(
+            expr_item >= self._size,
+            symbol_factory.BitVecVal(0, 8),
+            BitVec(
+                symbol_factory.BitVecSym(
+                    "{}_calldata_{}".format(self.tx_id, str(item)), 8
+                )
+            ),
+        )
+        return_value = symbolic_base_value
+        for r_index, r_value in self._reads:
+            return_value = If(r_index == expr_item, r_value, return_value)
+        if not clean:
+            self._reads.append((expr_item, symbolic_base_value))
+        return simplify(return_value)
+
+    def concrete(self, model: Model) -> list:
+        """
+
+        :param model:
+        :return:
+        """
+        concrete_length = get_concrete_int(model.eval(self.size, model_completion=True))
+        result = []
+        for i in range(concrete_length):
+            value = self._load(i, clean=True)
+            c_value = get_concrete_int(model.eval(value, model_completion=True))
+            result.append(c_value)
+
+        return result
+
+    @property
+    def size(self) -> BitVec:
+        """
+
+        :return:
+        """
+        return self._size
diff --git a/mythril_sol/laser/ethereum/state/constraints.py b/mythril_sol/laser/ethereum/state/constraints.py
new file mode 100644
index 0000000000000000000000000000000000000000..9afa5c76a81f926464415b5aff60936187c7404a
--- /dev/null
+++ b/mythril_sol/laser/ethereum/state/constraints.py
@@ -0,0 +1,131 @@
+"""This module contains the class used to represent state-change constraints in
+the call graph."""
+from mythril.exceptions import UnsatError, SolverTimeOutException
+from mythril.laser.smt import symbol_factory, simplify, Bool
+from mythril.support.model import get_model
+from mythril.laser.ethereum.function_managers import keccak_function_manager
+from mythril.laser.smt.model import Model
+from copy import copy
+from typing import Iterable, List, Optional, Union
+
+
+class Constraints(list):
+    """This class should maintain a solver and it's constraints, This class
+    tries to make the Constraints() object as a simple list of constraints with
+    some background processing.
+
+    """
+
+    def __init__(self, constraint_list: Optional[List[Bool]] = None) -> None:
+        """
+
+        :param constraint_list: List of constraints
+        """
+        constraint_list = constraint_list or []
+        constraint_list = self._get_smt_bool_list(constraint_list)
+        super(Constraints, self).__init__(constraint_list)
+
+    def is_possible(self, solver_timeout=None) -> bool:
+        """
+        :param solver_timeout: The default timeout uses analysis timeout from args.solver_timeout
+        :return: True/False based on the existence of solution of constraints
+        """
+        try:
+            get_model(self, solver_timeout=solver_timeout)
+        except SolverTimeOutException:
+            # If it uses the long analysis solver timeout
+            if solver_timeout is None:
+                return False
+            # If it uses a short custom solver timeout
+            return True
+        except UnsatError:
+            return False
+        return True
+
+    def get_model(self, solver_timeout=None) -> Optional[Model]:
+        """
+        :param solver_timeout: The default timeout uses analysis timeout from args.solver_timeout
+        :return: True/False based on the existence of solution of constraints
+        """
+        try:
+            return get_model(self, solver_timeout=solver_timeout)
+        except SolverTimeOutException:
+            return None
+        except UnsatError:
+            return None
+
+    def append(self, constraint: Union[bool, Bool]) -> None:
+        """
+
+        :param constraint: The constraint to be appended
+        """
+        constraint = (
+            simplify(constraint)
+            if isinstance(constraint, Bool)
+            else symbol_factory.Bool(constraint)
+        )
+        super(Constraints, self).append(constraint)
+
+    @property
+    def as_list(self) -> List[Bool]:
+        """
+        :return: returns the list of constraints
+        """
+        return self[:] + [keccak_function_manager.create_conditions()]
+
+    def __copy__(self) -> "Constraints":
+        """
+
+        :return: The copied constraint List
+        """
+        constraint_list = super(Constraints, self).copy()
+        return Constraints(constraint_list)
+
+    def copy(self) -> "Constraints":
+        return self.__copy__()
+
+    def __deepcopy__(self, memodict=None) -> "Constraints":
+        """
+
+        :param memodict:
+        :return: The copied constraint List
+        """
+        new_constraints = Constraints()
+        for constraint in self:
+            new_constraints.append(copy(constraint))
+        return new_constraints
+
+    def __add__(self, constraints: List[Union[bool, Bool]]) -> "Constraints":
+        """
+
+        :param constraints:
+        :return: the new list after the + operation
+        """
+        constraints_list = self._get_smt_bool_list(constraints)
+        constraints_list = super(Constraints, self).__add__(constraints_list)
+        return Constraints(constraint_list=constraints_list)
+
+    def __iadd__(self, constraints: Iterable[Union[bool, Bool]]) -> "Constraints":
+        """
+
+        :param constraints:
+        :return:
+        """
+        list_constraints = self._get_smt_bool_list(constraints)
+        super(Constraints, self).__iadd__(list_constraints)
+        return self
+
+    @staticmethod
+    def _get_smt_bool_list(constraints: Iterable[Union[bool, Bool]]) -> List[Bool]:
+        return [
+            constraint
+            if isinstance(constraint, Bool)
+            else symbol_factory.Bool(constraint)
+            for constraint in constraints
+        ]
+
+    def get_all_constraints(self):
+        return self[:] + [keccak_function_manager.create_conditions()]
+
+    def __hash__(self):
+        return tuple(self[:]).__hash__()
diff --git a/mythril_sol/laser/ethereum/state/environment.py b/mythril_sol/laser/ethereum/state/environment.py
new file mode 100644
index 0000000000000000000000000000000000000000..9a5837adc2373cb425248795b15ce81c63a925c6
--- /dev/null
+++ b/mythril_sol/laser/ethereum/state/environment.py
@@ -0,0 +1,81 @@
+"""This module contains the representation for an execution state's
+environment."""
+from typing import Dict
+
+from z3 import ExprRef
+
+from mythril.laser.ethereum.state.account import Account
+from mythril.laser.ethereum.state.calldata import BaseCalldata
+from mythril.laser.smt import symbol_factory
+
+
+class Environment:
+    """The environment class represents the current execution environment for
+    the symbolic executor."""
+
+    def __init__(
+        self,
+        active_account: Account,
+        sender: ExprRef,
+        calldata: BaseCalldata,
+        gasprice: ExprRef,
+        callvalue: ExprRef,
+        origin: ExprRef,
+        basefee: ExprRef,
+        code=None,
+        static=False,
+    ) -> None:
+        """
+
+        :param active_account:
+        :param sender:
+        :param calldata:
+        :param gasprice:
+        :param callvalue:
+        :param origin:
+        :param code:
+        :param static: Makes the environment static.
+        """
+        # Metadata
+
+        self.active_account = active_account
+        self.active_function_name = ""
+
+        self.address = active_account.address
+
+        # TODO: Add tx_2 > tx_1 then block_no(tx_2) > block_no(tx_1)
+        self.block_number = symbol_factory.BitVecSym("block_number", 256)
+        self.chainid = symbol_factory.BitVecSym("chain_id", 256)
+
+        # Ib
+        self.code = active_account.code if code is None else code
+
+        self.sender = sender
+        self.calldata = calldata
+        self.gasprice = gasprice
+        self.origin = origin
+        self.callvalue = callvalue
+        self.static = static
+        self.basefee = basefee
+
+    def __str__(self) -> str:
+        """
+
+        :return:
+        """
+        return str(self.as_dict)
+
+    @property
+    def as_dict(self) -> Dict:
+        """
+
+        :return:
+        """
+        return dict(
+            active_account=self.active_account,
+            sender=self.sender,
+            calldata=self.calldata,
+            gasprice=self.gasprice,
+            callvalue=self.callvalue,
+            origin=self.origin,
+        )
diff --git a/mythril_sol/laser/ethereum/state/global_state.py b/mythril_sol/laser/ethereum/state/global_state.py
new file mode 100644
index 0000000000000000000000000000000000000000..0965bdab64ad9deb3a780bcc27d7400ad0970fa3
--- /dev/null
+++ b/mythril_sol/laser/ethereum/state/global_state.py
@@ -0,0 +1,184 @@
+"""This module contains a representation of the global execution state."""
+from typing import Dict, Union, List, Iterable, TYPE_CHECKING
+
+from copy import copy, deepcopy
+from z3 import BitVec
+
+from mythril.laser.smt import symbol_factory
+from mythril.laser.ethereum.cfg import Node
+from mythril.laser.ethereum.state.environment import Environment
+from mythril.laser.ethereum.state.machine_state import MachineState
+from mythril.laser.ethereum.state.annotation import StateAnnotation
+
+if TYPE_CHECKING:
+    from mythril.laser.ethereum.state.world_state import WorldState
+    from mythril.laser.ethereum.transaction.transaction_models import (
+        MessageCallTransaction,
+        ContractCreationTransaction,
+    )
+
+
+class GlobalState:
+    """GlobalState represents the current globalstate."""
+
+    def __init__(
+        self,
+        world_state: "WorldState",
+        environment: Environment,
+        node: Node,
+        machine_state=None,
+        transaction_stack=None,
+        last_return_data=None,
+        annotations=None,
+    ) -> None:
+        """Constructor for GlobalState.
+
+        :param world_state:
+        :param environment:
+        :param node:
+        :param machine_state:
+        :param transaction_stack:
+        :param last_return_data:
+        :param annotations:
+        """
+        self.node = node
+        self.world_state = world_state
+        self.environment = environment
+        self.mstate = (
+            machine_state if machine_state else MachineState(gas_limit=1000000000)
+        )
+        self.transaction_stack = transaction_stack if transaction_stack else []
+        self.op_code = ""
+        self.last_return_data = last_return_data
+        self._annotations = annotations or []
+
+    def add_annotations(self, annotations: List[StateAnnotation]):
+        """
+        Function used to add annotations to global state
+        :param annotations:
+        :return:
+        """
+        self._annotations += annotations
+
+    def __copy__(self) -> "GlobalState":
+        """
+
+        :return:
+        """
+        world_state = copy(self.world_state)
+        environment = copy(self.environment)
+        mstate = deepcopy(self.mstate)
+        transaction_stack = copy(self.transaction_stack)
+        environment.active_account = world_state[environment.active_account.address]
+
+        return GlobalState(
+            world_state,
+            environment,
+            self.node,
+            mstate,
+            transaction_stack=transaction_stack,
+            last_return_data=self.last_return_data,
+            annotations=[copy(a) for a in self._annotations],
+        )
+
+    def __deepcopy__(self, _) -> "GlobalState":
+        """
+        Deepcopy is much slower than copy, since it deepcopies constraints.
+        :return:
+        """
+        world_state = deepcopy(self.world_state)
+        environment = copy(self.environment)
+        mstate = deepcopy(self.mstate)
+        transaction_stack = copy(self.transaction_stack)
+        environment.active_account = world_state[environment.active_account.address]
+        return GlobalState(
+            world_state,
+            environment,
+            self.node,
+            mstate,
+            transaction_stack=transaction_stack,
+            last_return_data=self.last_return_data,
+            annotations=[copy(a) for a in self._annotations],
+        )
+
+    @property
+    def accounts(self) -> Dict:
+        """
+
+        :return:
+        """
+        return self.world_state._accounts
+
+    # TODO: remove this, as two instructions are confusing
+    def get_current_instruction(self) -> Dict:
+        """Gets the current instruction for this GlobalState.
+
+        :return:
+        """
+        instructions = self.environment.code.instruction_list
+        try:
+            return instructions[self.mstate.pc]
+        except IndexError:
+            return {"address": self.mstate.pc, "opcode": "STOP"}
+
+    @property
+    def current_transaction(
+        self,
+    ) -> Union["MessageCallTransaction", "ContractCreationTransaction", None]:
+        """
+
+        :return:
+        """
+        # TODO: Remove circular to transaction package to import Transaction classes
+        try:
+            return self.transaction_stack[-1][0]
+        except IndexError:
+            return None
+
+    @property
+    def instruction(self) -> Dict:
+        """
+
+        :return:
+        """
+        return self.get_current_instruction()
+
+    def new_bitvec(self, name: str, size=256, annotations=None) -> BitVec:
+        """
+
+        :param name:
+        :param size:
+        :return:
+        """
+        transaction_id = self.current_transaction.id
+        return symbol_factory.BitVecSym(
+            "{}_{}".format(transaction_id, name), size, annotations=annotations
+        )
+
+    def annotate(self, annotation: StateAnnotation) -> None:
+        """
+
+        :param annotation:
+        """
+        self._annotations.append(annotation)
+
+        if annotation.persist_to_world_state:
+            self.world_state.annotate(annotation)
+
+    @property
+    def annotations(self) -> List[StateAnnotation]:
+        """
+
+        :return:
+        """
+        return self._annotations
+
+    def get_annotations(self, annotation_type: type) -> Iterable[StateAnnotation]:
+        """Filters annotations for the queried annotation type. Designed
+        particularly for modules with annotations:
+        globalstate.get_annotations(MySpecificModuleAnnotation)
+
+        :param annotation_type: The type to filter annotations for
+        :return: filter of matching annotations
+        """
+        return filter(lambda x: isinstance(x, annotation_type), self.annotations)
diff --git a/mythril_sol/laser/ethereum/state/machine_state.py b/mythril_sol/laser/ethereum/state/machine_state.py
new file mode 100644
index 0000000000000000000000000000000000000000..78b8880dd71358c7973aad8b94b4c7c3a0a885f8
--- /dev/null
+++ b/mythril_sol/laser/ethereum/state/machine_state.py
@@ -0,0 +1,263 @@
+"""This module contains a representation of the EVM's machine state and its
+stack."""
+from copy import copy
+from typing import cast, Sized, Union, Any, List, Dict, Optional
+
+from mythril.laser.smt import BitVec, Bool, If, Expression, symbol_factory
+from eth._utils.numeric import ceil32
+
+from eth.constants import GAS_MEMORY, GAS_MEMORY_QUADRATIC_DENOMINATOR
+from mythril.laser.ethereum.evm_exceptions import (
+    StackOverflowException,
+    StackUnderflowException,
+    OutOfGasException,
+)
+from mythril.laser.ethereum.state.memory import Memory
+
+
+class MachineStack(list):
+    """Defines EVM stack, overrides the default list to handle overflows."""
+
+    STACK_LIMIT = 1024
+
+    def __init__(self, default_list=None) -> None:
+        """
+
+        :param default_list:
+        """
+        super(MachineStack, self).__init__(default_list or [])
+
+    def append(self, element: Union[int, Expression]) -> None:
+        """
+        This function ensures the following properties when appending to a list:
+            - Element appended to this list should be a BitVec
+            - Ensures stack overflow bound
+
+        :param element: element to be appended to the list
+        :function: appends the element to list if the size is less than STACK_LIMIT, else throws an error
+        """
+        if isinstance(element, int):
+            element = symbol_factory.BitVecVal(element, 256)
+        if isinstance(element, Bool):
+            element = If(
+                element,
+                symbol_factory.BitVecVal(1, 256),
+                symbol_factory.BitVecVal(0, 256),
+            )
+        if super(MachineStack, self).__len__() >= self.STACK_LIMIT:
+            raise StackOverflowException(
+                "Reached the EVM stack limit of {}, you can't append more "
+                "elements".format(self.STACK_LIMIT)
+            )
+        super(MachineStack, self).append(element)
+
+    def pop(self, index=-1) -> Union[int, Expression]:
+        """
+        This function ensures stack underflow bound
+        :param index:index to be popped, same as the list() class.
+        :returns popped value
+        :function: same as list() class but throws StackUnderflowException for popping from an empty list
+        """
+
+        try:
+            return super(MachineStack, self).pop(index)
+        except IndexError:
+            raise StackUnderflowException("Trying to pop from an empty stack")
+
+    def __getitem__(self, item: Union[int, slice]) -> Any:
+        """
+
+        :param item:
+        :return:
+        """
+        try:
+            return super(MachineStack, self).__getitem__(item)
+        except IndexError:
+            raise StackUnderflowException(
+                "Trying to access a stack element which doesn't exist"
+            )
+
+    def __add__(self, other):
+        """Implement list concatenation if needed.
+
+        :param other:
+        """
+        raise NotImplementedError("Implement this if needed")
+
+    def __iadd__(self, other):
+        """Implement list concatenation if needed.
+
+        :param other:
+        """
+        raise NotImplementedError("Implement this if needed")
+
+
+class MachineState:
+    """
+    MachineState represents current machine state also referenced to as \mu.
+    """
+
+    def __init__(
+        self,
+        gas_limit: int,
+        pc=0,
+        stack=None,
+        subroutine_stack=None,
+        memory: Optional[Memory] = None,
+        constraints=None,
+        depth=0,
+        max_gas_used=0,
+        min_gas_used=0,
+    ) -> None:
+        """Constructor for machineState.
+
+        :param gas_limit:
+        :param pc:
+        :param stack:
+        :param memory:
+        :param constraints:
+        :param depth:
+        :param max_gas_used:
+        :param min_gas_used:
+        """
+        self.pc = pc
+        self.stack = MachineStack(stack)
+        self.subroutine_stack = MachineStack(subroutine_stack)
+        self.memory = memory or Memory()
+        self.gas_limit = gas_limit
+        self.min_gas_used = min_gas_used  # lower gas usage bound
+        self.max_gas_used = max_gas_used  # upper gas usage bound
+        self.depth = depth
+
+    def calculate_extension_size(self, start: int, size: int) -> int:
+        """
+
+        :param start:
+        :param size:
+        :return:
+        """
+        if self.memory_size > start + size:
+            return 0
+
+        # The extension size is calculated based on the word length
+        new_size = ceil32(start + size) // 32
+        old_size = self.memory_size // 32
+
+        return (new_size - old_size) * 32
+
+    def calculate_memory_gas(self, start: int, size: int):
+        """
+
+        :param start:
+        :param size:
+        :return:
+        """
+        # https://github.com/ethereum/pyethereum/blob/develop/ethereum/vm.py#L148
+        oldsize = self.memory_size // 32
+        old_totalfee = (
+            oldsize * GAS_MEMORY + oldsize**2 // GAS_MEMORY_QUADRATIC_DENOMINATOR
+        )
+        newsize = ceil32(start + size) // 32
+        new_totalfee = (
+            newsize * GAS_MEMORY + newsize**2 // GAS_MEMORY_QUADRATIC_DENOMINATOR
+        )
+        return new_totalfee - old_totalfee
+
+    def check_gas(self):
+        """Check whether the machine is out of gas."""
+        if self.min_gas_used > self.gas_limit:
+            raise OutOfGasException()
+
+    def mem_extend(self, start: Union[int, BitVec], size: Union[int, BitVec]) -> None:
+        """Extends the memory of this machine state.
+
+        :param start: Start of memory extension
+        :param size: Size of memory extension
+        """
+        if (isinstance(start, BitVec) and start.symbolic) or (
+            isinstance(size, BitVec) and size.symbolic
+        ):
+            return
+        if isinstance(start, BitVec):
+            start = start.value
+        if isinstance(size, BitVec):
+            size = size.value
+        m_extend = self.calculate_extension_size(start, size)
+        if m_extend:
+            extend_gas = self.calculate_memory_gas(start, size)
+            self.min_gas_used += extend_gas
+            self.max_gas_used += extend_gas
+            self.check_gas()
+            self.memory.extend(m_extend)
+
+    def memory_write(self, offset: int, data: List[Union[int, BitVec]]) -> None:
+        """Writes data to memory starting at offset.
+
+        :param offset:
+        :param data:
+        """
+        self.mem_extend(offset, len(data))
+        self.memory[offset : offset + len(data)] = data
+
+    def pop(self, amount=1) -> Union[BitVec, List[BitVec]]:
+        """Pops amount elements from the stack.
+
+        :param amount:
+        :return:
+        """
+        if amount > len(self.stack):
+            raise StackUnderflowException
+        values = self.stack[-amount:][::-1]
+        del self.stack[-amount:]
+
+        return values[0] if amount == 1 else values
+
+    def __deepcopy__(self, memodict=None):
+        """
+
+        :param memodict:
+        :return:
+        """
+        memodict = {} if memodict is None else memodict
+        return MachineState(
+            gas_limit=self.gas_limit,
+            max_gas_used=self.max_gas_used,
+            min_gas_used=self.min_gas_used,
+            pc=self.pc,
+            stack=copy(self.stack),
+            memory=copy(self.memory),
+            depth=self.depth,
+            subroutine_stack=copy(self.subroutine_stack),
+        )
+
+    def __str__(self):
+        """
+
+        :return:
+        """
+        return str(self.as_dict)
+
+    @property
+    def memory_size(self) -> int:
+        """
+
+        :return:
+        """
+        return len(cast(Sized, self.memory))
+
+    @property
+    def as_dict(self) -> Dict:
+        """
+
+        :return:
+        """
+        return dict(
+            pc=self.pc,
+            stack=self.stack,
+            subroutine_stack=self.subroutine_stack,
+            memory=self.memory,
+            memsize=self.memory_size,
+            gas=self.gas_limit,
+            max_gas_used=self.max_gas_used,
+            min_gas_used=self.min_gas_used,
+        )
diff --git a/mythril_sol/laser/ethereum/state/memory.py b/mythril_sol/laser/ethereum/state/memory.py
new file mode 100644
index 0000000000000000000000000000000000000000..f725e2aea55a6e844ad5eebd5a0f3ff0e4c91c46
--- /dev/null
+++ b/mythril_sol/laser/ethereum/state/memory.py
@@ -0,0 +1,208 @@
+"""This module contains a representation of a smart contract's memory."""
+from copy import copy
+from typing import cast, Dict, List, Union, overload
+from z3 import Z3Exception
+
+from mythril.laser.ethereum import util
+from mythril.laser.smt import (
+    BitVec,
+    Bool,
+    Concat,
+    Extract,
+    If,
+    simplify,
+    symbol_factory,
+)
+
+
+def convert_bv(val: Union[int, BitVec]) -> BitVec:
+    if isinstance(val, BitVec):
+        return val
+    return symbol_factory.BitVecVal(val, 256)
+
+
+# No of iterations to perform when iteration size is symbolic
+APPROX_ITR = 100
+
+
+class Memory:
+    """A class representing contract memory with random access."""
+
+    def __init__(self):
+        """"""
+        self._msize = 0
+        self._memory: Dict[BitVec, Union[int, BitVec]] = {}
+
+    def __len__(self):
+        """
+
+        :return:
+        """
+        return self._msize
+
+    def __copy__(self):
+        new_memory = Memory()
+        new_memory._memory = copy(self._memory)
+        new_memory._msize = self._msize
+        return new_memory
+
+    def extend(self, size: int):
+        """
+
+        :param size:
+        """
+        self._msize += size
+
+    def get_word_at(self, index: int) -> Union[int, BitVec]:
+        """Access a word from a specified memory index.
+
+        :param index: integer representing the index to access
+        :return: 32 byte word at the specified index
+        """
+        try:
+            return symbol_factory.BitVecVal(
+                util.concrete_int_from_bytes(
+                    bytes([util.get_concrete_int(b) for b in self[index : index + 32]]),
+                    0,
+                ),
+                256,
+            )
+        except TypeError:
+            result = simplify(
+                Concat(
+                    [
+                        b if isinstance(b, BitVec) else symbol_factory.BitVecVal(b, 8)
+                        for b in cast(
+                            List[Union[int, BitVec]], self[index : index + 32]
+                        )
+                    ]
+                )
+            )
+            assert result.size() == 256
+            return result
+
+    def write_word_at(self, index: int, value: Union[int, BitVec, bool, Bool]) -> None:
+        """Writes a 32 byte word to memory at the specified index`
+
+        :param index: index to write to
+        :param value: the value to write to memory
+        """
+        try:
+            # Attempt to concretize value
+            if isinstance(value, bool):
+                _bytes = (
+                    int(1).to_bytes(32, byteorder="big")
+                    if value
+                    else int(0).to_bytes(32, byteorder="big")
+                )
+            else:
+                _bytes = util.concrete_int_to_bytes(value)
+            assert len(_bytes) == 32
+            self[index : index + 32] = list(bytearray(_bytes))
+        except (Z3Exception, AttributeError):  # BitVector or BoolRef
+            value = cast(Union[BitVec, Bool], value)
+            if isinstance(value, Bool):
+                value_to_write = If(
+                    value,
+                    symbol_factory.BitVecVal(1, 256),
+                    symbol_factory.BitVecVal(0, 256),
+                )
+            else:
+                value_to_write = value
+            assert value_to_write.size() == 256
+
+            for i in range(0, value_to_write.size(), 8):
+                self[index + 31 - (i // 8)] = Extract(i + 7, i, value_to_write)
+
+    @overload
+    def __getitem__(self, item: BitVec) -> Union[int, BitVec]:
+        ...
+
+    @overload
+    def __getitem__(self, item: slice) -> List[Union[int, BitVec]]:
+        ...
+
+    def __getitem__(
+        self, item: Union[BitVec, slice]
+    ) -> Union[BitVec, int, List[Union[int, BitVec]]]:
+        """
+
+        :param item:
+        :return:
+        """
+        if isinstance(item, slice):
+            start, step, stop = item.start, item.step, item.stop
+            if start is None:
+                start = 0
+            if stop is None:  # 2**256 is just a bit too big
+                raise IndexError("Invalid Memory Slice")
+            if step is None:
+                step = 1
+            bvstart, bvstop, bvstep = (
+                convert_bv(start),
+                convert_bv(stop),
+                convert_bv(step),
+            )
+            ret_lis = []
+            symbolic_len = False
+            itr = symbol_factory.BitVecVal(0, 256)
+            if (bvstop - bvstart).symbolic:
+                symbolic_len = True
+
+            while simplify(bvstep * itr != simplify(bvstop - bvstart)) and (
+                not symbolic_len or itr <= APPROX_ITR
+            ):
+                ret_lis.append(self[bvstart + bvstep * itr])
+                itr += 1
+            return ret_lis
+        item = simplify(convert_bv(item))
+        return self._memory.get(item, 0)
+
+    def __setitem__(
+        self,
+        key: Union[int, BitVec, slice],
+        value: Union[BitVec, int, List[Union[int, BitVec]]],
+    ):
+        """
+
+        :param key:
+        :param value:
+        """
+        if isinstance(key, slice):
+            start, step, stop = key.start, key.step, key.stop
+
+            if start is None:
+                start = 0
+            if stop is None:
+                raise IndexError("Invalid Memory Slice")
+            if step is None:
+                step = 1
+            else:
+                assert False, "Currently mentioning step size is not supported"
+            assert isinstance(value, list)
+            bvstart, bvstop, bvstep = (
+                convert_bv(start),
+                convert_bv(stop),
+                convert_bv(step),
+            )
+            symbolic_len = False
+            itr = symbol_factory.BitVecVal(0, 256)
+            if (bvstop - bvstart).symbolic:
+                symbolic_len = True
+            while simplify(bvstep * itr != simplify(bvstop - bvstart)) and (
+                not symbolic_len or itr <= APPROX_ITR
+            ):
+                self[bvstart + itr * bvstep] = cast(List[Union[int, BitVec]], value)[
+                    itr.value
+                ]
+                itr += 1
+
+        else:
+            bv_key = simplify(convert_bv(key))
+            if bv_key >= len(self):
+                return
+            if isinstance(value, int):
+                assert 0 <= value <= 0xFF
+            if isinstance(value, BitVec):
+                assert value.size() == 8
+            self._memory[bv_key] = cast(Union[int, BitVec], value)
diff --git a/mythril_sol/laser/ethereum/state/return_data.py b/mythril_sol/laser/ethereum/state/return_data.py
new file mode 100644
index 0000000000000000000000000000000000000000..ce4f930c82aeda463e147691d233abb4c7cc3ff1
--- /dev/null
+++ b/mythril_sol/laser/ethereum/state/return_data.py
@@ -0,0 +1,32 @@
+"""This module declares classes to represent call data."""
+from typing import List
+
+from mythril.laser.smt import (
+    BitVec,
+)
+
+
+class ReturnData:
+    """Base returndata class."""
+
+    def __init__(self, return_data: List[BitVec], return_data_size: BitVec) -> None:
+        """
+
+        :param tx_id:
+        """
+        self.return_data = return_data
+        self.return_data_size = return_data_size
+
+    @property
+    def size(self) -> BitVec:
+        """
+
+        :return: Calldata size for this calldata object
+        """
+        return self.return_data_size
+
+    def __getitem__(self, index):
+        if index < self.size:
+            return self.return_data[index]
+        else:
+            return 0
diff --git a/mythril_sol/laser/ethereum/state/world_state.py b/mythril_sol/laser/ethereum/state/world_state.py
new file mode 100644
index 0000000000000000000000000000000000000000..1cc8cda1813ac2190f0e505797e0f10b98ac2474
--- /dev/null
+++ b/mythril_sol/laser/ethereum/state/world_state.py
@@ -0,0 +1,250 @@
+"""This module contains a representation of the EVM's world state."""
+from copy import copy, deepcopy
+from random import randint
+from typing import Dict, List, Iterator, Optional, TYPE_CHECKING
+from eth._utils.address import generate_contract_address
+
+from mythril.support.loader import DynLoader
+from mythril.laser.smt import symbol_factory, Array, BitVec
+from mythril.laser.ethereum.state.account import Account
+from mythril.laser.ethereum.state.annotation import StateAnnotation
+from mythril.laser.ethereum.state.constraints import Constraints
+
+if TYPE_CHECKING:
+    from mythril.laser.ethereum.cfg import Node
+
+
+class WorldState:
+    """The WorldState class represents the world state as described in the
+    yellow paper."""
+
+    def __init__(
+        self,
+        transaction_sequence=None,
+        annotations: List[StateAnnotation] = None,
+        constraints: Constraints = None,
+    ) -> None:
+        """Constructor for the world state. Initializes the accounts record.
+
+        :param transaction_sequence:
+        :param annotations:
+        """
+        self._accounts: Dict[int, Account] = {}
+        self.balances = Array("balance", 256, 256)
+        self.starting_balances = deepcopy(self.balances)
+        self.constraints = constraints or Constraints()
+
+        self.node: Optional["Node"] = None
+        self.transaction_sequence = transaction_sequence or []
+        self._annotations = annotations or []
+
+    @property
+    def accounts(self):
+        return self._accounts
+
+    def __getitem__(self, item: BitVec) -> Account:
+        """Gets an account from the worldstate using item as key.
+
+        :param item: Address of the account to get
+        :return: Account associated with the address
+        """
+        try:
+            return self._accounts[item.value]
+        except KeyError:
+            new_account = Account(address=item, code=None, balances=self.balances)
+            self._accounts[item.value] = new_account
+            return new_account
+
+    def __copy__(self) -> "WorldState":
+        """
+
+        :return:
+        """
+        new_annotations = [copy(a) for a in self._annotations]
+        new_world_state = WorldState(
+            transaction_sequence=self.transaction_sequence[:],
+            annotations=new_annotations,
+        )
+        new_world_state.balances = copy(self.balances)
+        new_world_state.starting_balances = copy(self.starting_balances)
+        for account in self._accounts.values():
+            new_world_state.put_account(copy(account))
+        new_world_state.node = self.node
+        new_world_state.constraints = copy(self.constraints)
+        return new_world_state
+
+    def __deepcopy__(self, _) -> "WorldState":
+        """
+
+        :return:
+        """
+        new_annotations = [copy(a) for a in self._annotations]
+        new_world_state = WorldState(
+            transaction_sequence=self.transaction_sequence[:],
+            annotations=new_annotations,
+        )
+        new_world_state.balances = copy(self.balances)
+        new_world_state.starting_balances = copy(self.starting_balances)
+        for account in self._accounts.values():
+            new_world_state.put_account(copy(account))
+        new_world_state.node = self.node
+        new_world_state.constraints = deepcopy(self.constraints)
+        return new_world_state
+
+    def accounts_exist_or_load(self, addr, dynamic_loader: DynLoader) -> Account:
+        """
+        returns account if it exists, else it loads from the dynamic loader
+        :param addr: address
+        :param dynamic_loader: Dynamic Loader
+        :return: The code
+        """
+
+        if isinstance(addr, str):
+            addr = int(addr, 16)
+
+        if isinstance(addr, int):
+            addr_bitvec = symbol_factory.BitVecVal(addr, 256)
+        elif not isinstance(addr, BitVec):
+            addr_bitvec = symbol_factory.BitVecVal(int(addr, 16), 256)
+        else:
+            addr_bitvec = addr
+
+        if addr_bitvec.value in self.accounts:
+            return self.accounts[addr_bitvec.value]
+        if dynamic_loader is None:
+            raise ValueError("dynamic_loader is None")
+
+        if dynamic_loader.active is False:
+            raise ValueError("Dynamic Loader is deactivated. Use a symbol.")
+
+        if isinstance(addr, int):
+            try:
+                balance = dynamic_loader.read_balance("{0:#0{1}x}".format(addr, 42))
+                return self.create_account(
+                    balance=balance,
+                    address=addr_bitvec.value,
+                    dynamic_loader=dynamic_loader,
+                    code=dynamic_loader.dynld(addr),
+                    concrete_storage=True,
+                )
+            except ValueError:
+                # Initial balance will be a symbolic variable
+                pass
+        try:
+            code = dynamic_loader.dynld(addr)
+        except ValueError:
+            code = None
+
+        return self.create_account(
+            address=addr_bitvec.value, dynamic_loader=dynamic_loader, code=code
+        )
+
+    def create_account(
+        self,
+        balance=0,
+        address=None,
+        concrete_storage=False,
+        dynamic_loader=None,
+        creator=None,
+        code=None,
+        nonce=0,
+    ) -> Account:
+        """Create non-contract account.
+
+        :param address: The account's address
+        :param balance: Initial balance for the account
+        :param concrete_storage: Interpret account storage as concrete
+        :param dynamic_loader: used for dynamically loading storage from the block chain
+        :param creator: The address of the creator of the contract if it's a contract
+        :param code: The code of the contract, if it's a contract
+        :param nonce: Nonce of the account
+        :return: The new account
+        """
+        if creator in self.accounts:
+            nonce = self.accounts[creator].nonce
+        elif creator:
+            self.create_account(address=creator)
+
+        address = (
+            symbol_factory.BitVecVal(address, 256)
+            if address is not None
+            else self._generate_new_address(creator, nonce=self.accounts[creator].nonce)
+        )
+        if creator:
+            self.accounts[creator].nonce += 1
+        new_account = Account(
+            address=address,
+            balances=self.balances,
+            dynamic_loader=dynamic_loader,
+            concrete_storage=concrete_storage,
+        )
+        if code:
+            new_account.code = code
+        new_account.nonce = nonce
+        new_account.set_balance(symbol_factory.BitVecVal(balance, 256))
+
+        self.put_account(new_account)
+        return new_account
+
+    def create_initialized_contract_account(self, contract_code, storage) -> None:
+        """Creates a new contract account, based on the contract code and
+        storage provided The contract code only includes the runtime contract
+        bytecode.
+
+        :param contract_code: Runtime bytecode for the contract
+        :param storage: Initial storage for the contract
+        :return: The new account
+        """
+        # TODO: Add type hints
+        new_account = Account(
+            self._generate_new_address(), code=contract_code, balances=self.balances
+        )
+        new_account.storage = storage
+        self.put_account(new_account)
+
+    def annotate(self, annotation: StateAnnotation) -> None:
+        """
+
+        :param annotation:
+        """
+        self._annotations.append(annotation)
+
+    @property
+    def annotations(self) -> List[StateAnnotation]:
+        """
+
+        :return:
+        """
+        return self._annotations
+
+    def get_annotations(self, annotation_type: type) -> Iterator[StateAnnotation]:
+        """Filters annotations for the queried annotation type. Designed
+        particularly for modules with annotations:
+        worldstate.get_annotations(MySpecificModuleAnnotation)
+
+        :param annotation_type: The type to filter annotations for
+        :return: filter of matching annotations
+        """
+        return filter(lambda x: isinstance(x, annotation_type), self.annotations)
+
+    def _generate_new_address(self, creator=None, nonce=0) -> BitVec:
+        """Generates a new address for the global state.
+
+        :return:
+        """
+        if creator:
+            # TODO: Use nounce
+            address = "0x" + str(generate_contract_address(creator, nonce).hex())
+            return symbol_factory.BitVecVal(int(address, 16), 256)
+        while True:
+            address = "0x" + "".join([str(hex(randint(0, 16)))[-1] for _ in range(40)])
+            if address not in self._accounts.keys():
+                return symbol_factory.BitVecVal(int(address, 16), 256)
+
+    def put_account(self, account: Account) -> None:
+        """
+
+        :param account:
+        """
+        self._accounts[account.address.value] = account
+        account._balances = self.balances
diff --git a/mythril_sol/laser/ethereum/strategy/__init__.py b/mythril_sol/laser/ethereum/strategy/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..5e262fb57fb7b3c4143c8b5cb3bf7a56f95e481c
--- /dev/null
+++ b/mythril_sol/laser/ethereum/strategy/__init__.py
@@ -0,0 +1,54 @@
+from abc import ABC, abstractmethod
+from typing import List
+from mythril.laser.ethereum.state.global_state import GlobalState
+
+
+class BasicSearchStrategy(ABC):
+    """
+    A basic search strategy which halts based on depth
+    """
+
+    def __init__(self, work_list, max_depth, **kwargs):
+        self.work_list: List[GlobalState] = work_list
+        self.max_depth: int = max_depth
+
+    def __iter__(self):
+        return self
+
+    @abstractmethod
+    def get_strategic_global_state(self):
+        """"""
+        raise NotImplementedError("Must be implemented by a subclass")
+
+    def run_check(self):
+        return True
+
+    def __next__(self):
+        try:
+            global_state = self.get_strategic_global_state()
+            if global_state.mstate.depth >= self.max_depth:
+                return self.__next__()
+            return global_state
+        except (IndexError, StopIteration):
+            raise StopIteration
+
+
+class CriterionSearchStrategy(BasicSearchStrategy):
+    """
+    If a criterion is satisfied, the search halts
+    """
+
+    def __init__(self, work_list, max_depth, **kwargs):
+        super().__init__(work_list, max_depth, **kwargs)
+        self._satisfied_criterion = False
+
+    def get_strategic_global_state(self):
+        if self._satisfied_criterion:
+            raise StopIteration
+        try:
+            return self.get_strategic_global_state()
+        except StopIteration:
+            raise StopIteration
+
+    def set_criterion_satisfied(self):
+        self._satisfied_criterion = True
diff --git a/mythril_sol/laser/ethereum/strategy/basic.py b/mythril_sol/laser/ethereum/strategy/basic.py
new file mode 100644
index 0000000000000000000000000000000000000000..ecd81ff7602b416ef7eb9925258a752f4eebadc1
--- /dev/null
+++ b/mythril_sol/laser/ethereum/strategy/basic.py
@@ -0,0 +1,122 @@
+"""This module implements basic symbolic execution search strategies."""
+from random import randrange
+from typing import List
+
+from mythril.laser.ethereum.state.global_state import GlobalState
+from . import BasicSearchStrategy
+from random import choices
+
+
+class DepthFirstSearchStrategy(BasicSearchStrategy):
+    """Implements a depth first search strategy I.E.
+
+    Follow one path to a leaf, and then continue to the next one
+    """
+
+    def get_strategic_global_state(self) -> GlobalState:
+        """
+
+        :return:
+        """
+        return self.work_list.pop()
+
+    def view_strategic_global_state(self) -> GlobalState:
+        """
+
+        :return:
+        """
+        return self.work_list[-1]
+
+
+class BreadthFirstSearchStrategy(BasicSearchStrategy):
+    """Implements a breadth first search strategy I.E.
+
+    Execute all states of a "level" before continuing
+    """
+
+    def get_strategic_global_state(self) -> GlobalState:
+        """
+
+        :return:
+        """
+        return self.work_list.pop(0)
+
+    def view_strategic_global_state(self) -> GlobalState:
+        """
+
+        :return:
+        """
+        return self.work_list[0]
+
+
+class ReturnRandomNaivelyStrategy(BasicSearchStrategy):
+    """chooses a random state from the worklist with equal likelihood."""
+
+    def __init__(self, work_list, max_depth, **kwargs):
+        super().__init__(work_list, max_depth, **kwargs)
+        self.previous_random_value = -1
+
+    def get_strategic_global_state(self) -> GlobalState:
+        """
+
+        :return:
+        """
+        if len(self.work_list) > 0:
+            if self.previous_random_value == -1:
+                return self.work_list.pop(randrange(len(self.work_list)))
+            else:
+                new_state = self.work_list.pop(self.previous_random_value)
+                self.previous_random_value = -1
+                return new_state
+        else:
+            raise IndexError
+
+    def view_strategic_global_state(self) -> GlobalState:
+        """
+
+        :return:
+        """
+        if len(self.work_list) > 0:
+            self.previous_random_value = randrange(len(self.work_list))
+            return self.work_list[self.previous_random_value]
+        else:
+            raise IndexError
+
+
+class ReturnWeightedRandomStrategy(BasicSearchStrategy):
+    """chooses a random state from the worklist with likelihood based on
+    inverse proportion to depth."""
+
+    def __init__(self, work_list, max_depth, **kwargs):
+        super().__init__(work_list, max_depth, **kwargs)
+        self.previous_random_value = -1
+
+    def get_strategic_global_state(self) -> GlobalState:
+        """
+
+        :return:
+        """
+        probability_distribution = [
+            1 / (global_state.mstate.depth + 1) for global_state in self.work_list
+        ]
+        if self.previous_random_value != -1:
+            ns = self.work_list.pop(self.previous_random_value)
+            self.previous_random_value = -1
+            return ns
+        else:
+            return self.work_list.pop(
+                choices(range(len(self.work_list)), probability_distribution)[0]
+            )
+
+    def view_strategic_global_state(self) -> GlobalState:
+        """
+
+        :return:
+        """
+        probability_distribution = [
+            1 / (global_state.mstate.depth + 1) for global_state in self.work_list
+        ]
+        self.previous_random_value = choices(
+            range(len(self.work_list)), probability_distribution
+        )[0]
+        return self.work_list[self.previous_random_value]
diff --git a/mythril_sol/laser/ethereum/strategy/beam.py b/mythril_sol/laser/ethereum/strategy/beam.py
new file mode 100644
index 0000000000000000000000000000000000000000..24408105043bddc603e9e914b9fb052a0d3f8380
--- /dev/null
+++ b/mythril_sol/laser/ethereum/strategy/beam.py
@@ -0,0 +1,42 @@
+from typing import List
+
+from mythril.laser.ethereum.state.global_state import GlobalState
+from . import BasicSearchStrategy
+
+
+class BeamSearch(BasicSearchStrategy):
+    """chooses a random state from the worklist with equal likelihood."""
+
+    def __init__(self, work_list, max_depth, beam_width, **kwargs):
+        super().__init__(work_list, max_depth)
+        self.beam_width = beam_width
+
+    @staticmethod
+    def beam_priority(state):
+        return sum([annotation.search_importance for annotation in state._annotations])
+
+    def sort_and_eliminate_states(self):
+        self.work_list.sort(key=lambda state: self.beam_priority(state), reverse=True)
+        del self.work_list[self.beam_width :]
+
+    def view_strategic_global_state(self) -> GlobalState:
+        """
+
+        :return:
+        """
+        self.sort_and_eliminate_states()
+        if len(self.work_list) > 0:
+            return self.work_list[0]
+        else:
+            raise IndexError
+
+    def get_strategic_global_state(self) -> GlobalState:
+        """
+
+        :return:
+        """
+        self.sort_and_eliminate_states()
+        if len(self.work_list) > 0:
+            return self.work_list.pop(0)
+        else:
+            raise IndexError
diff --git a/mythril_sol/laser/ethereum/strategy/concolic.py b/mythril_sol/laser/ethereum/strategy/concolic.py
new file mode 100644
index 0000000000000000000000000000000000000000..d3b5e9cc4de02a3f5ffe203c08a86fec7c785c39
--- /dev/null
+++ b/mythril_sol/laser/ethereum/strategy/concolic.py
@@ -0,0 +1,133 @@
+from mythril.laser.ethereum.state.global_state import GlobalState
+from mythril.laser.ethereum.state.constraints import Constraints
+from mythril.laser.ethereum.strategy.basic import BasicSearchStrategy
+from mythril.laser.ethereum.state.annotation import StateAnnotation
+from mythril.laser.ethereum.transaction import ContractCreationTransaction
+from mythril.laser.ethereum.util import get_instruction_index
+from mythril.analysis.solver import get_transaction_sequence
+from mythril.laser.smt import Not
+from mythril.exceptions import UnsatError
+
+from functools import reduce
+from typing import Dict, cast, List, Any, Tuple
+from copy import copy
+from . import CriterionSearchStrategy
+import logging
+import operator
+
+log = logging.getLogger(__name__)
+
+
+class TraceAnnotation(StateAnnotation):
+    """
+    This is the annotation used by the ConcolicStrategy to store concolic traces.
+    """
+
+    def __init__(self, trace=None):
+        self.trace = trace or []
+
+    @property
+    def persist_over_calls(self) -> bool:
+        return True
+
+    def __copy__(self):
+        return TraceAnnotation(copy(self.trace))
+
+
+class ConcolicStrategy(CriterionSearchStrategy):
+    """
+    Executes program concolically using the input trace till a specific branch
+    """
+
+    def __init__(
+        self,
+        work_list: List[GlobalState],
+        max_depth: int,
+        trace: List[List[Tuple[int, str]]],
+        flip_branch_addresses: List[str],
+    ):
+        """
+
+        work_list: The work-list of states
+        max_depth: The maximum depth for the strategy to go through
+        trace: This is the trace to be followed, each element is of the type Tuple(program counter, tx_id)
+        flip_branch_addresses: Branch addresses to be flipped.
+        """
+        super().__init__(work_list, max_depth)
+        self.trace: List[Tuple[int, str]] = reduce(operator.iconcat, trace, [])
+        self.last_tx_count: int = len(trace)
+        self.flip_branch_addresses: List[str] = flip_branch_addresses
+        self.results: Dict[str, Dict[str, Any]] = {}
+
+    def check_completion_criterion(self):
+        if len(self.flip_branch_addresses) == len(self.results):
+            self.set_criterion_satisfied()
+
+    def get_strategic_global_state(self) -> GlobalState:
+        """
+        This function does the following:-
+        1) Choose the states by following the concolic trace.
+        2) In case we have an executed JUMPI that is in flip_branch_addresses, flip that branch.
+        :return:
+        """
+        while len(self.work_list) > 0:
+            state = self.work_list.pop()
+            seq_id = len(state.world_state.transaction_sequence)
+
+            trace_annotations = cast(
+                List[TraceAnnotation],
+                list(state.world_state.get_annotations(TraceAnnotation)),
+            )
+
+            if len(trace_annotations) == 0:
+                annotation = TraceAnnotation()
+                state.world_state.annotate(annotation)
+            else:
+                annotation = trace_annotations[0]
+
+            # Appends trace
+            annotation.trace.append((state.mstate.pc, state.current_transaction.id))
+
+            # If length of trace is 1 then it is not a JUMPI
+            if len(annotation.trace) < 2:
+                # If trace does not follow the specified path, ignore the state
+                if annotation.trace != self.trace[: len(annotation.trace)]:
+                    continue
+                return state
+
+            # Get the address of the previous pc
+            addr: str = str(
+                state.environment.code.instruction_list[annotation.trace[-2][0]][
+                    "address"
+                ]
+            )
+            if (
+                annotation.trace == self.trace[: len(annotation.trace)]
+                and seq_id == self.last_tx_count
+                and addr in self.flip_branch_addresses
+                and addr not in self.results
+            ):
+                if (
+                    state.environment.code.instruction_list[annotation.trace[-2][0]][
+                        "opcode"
+                    ]
+                    != "JUMPI"
+                ):
+                    log.error(
+                        f"The branch {addr} does not lead "
+                        "to a jump address, skipping this branch"
+                    )
+                    continue
+
+                constraints = Constraints(state.world_state.constraints[:-1])
+                constraints.append(Not(state.world_state.constraints[-1]))
+
+                try:
+                    self.results[addr] = get_transaction_sequence(state, constraints)
+                except UnsatError:
+                    self.results[addr] = None
+            elif annotation.trace != self.trace[: len(annotation.trace)]:
+                continue
+            self.check_completion_criterion()
+            return state
+        raise StopIteration
diff --git a/mythril_sol/laser/ethereum/strategy/constraint_strategy.py b/mythril_sol/laser/ethereum/strategy/constraint_strategy.py
new file mode 100644
index 0000000000000000000000000000000000000000..b350cb2513d7b1fc3ba6ebaf6b82c45072f16a3b
--- /dev/null
+++ b/mythril_sol/laser/ethereum/strategy/constraint_strategy.py
@@ -0,0 +1,38 @@
+from mythril.laser.ethereum.state.global_state import GlobalState
+from mythril.laser.ethereum.strategy.basic import BasicSearchStrategy
+from mythril.laser.ethereum.state.annotation import StateAnnotation
+from mythril.laser.ethereum.transaction import ContractCreationTransaction
+from mythril.laser.smt import And, simplify
+from mythril.support.support_utils import ModelCache
+
+from typing import Dict, cast, List
+from collections import OrderedDict
+from copy import copy, deepcopy
+from functools import lru_cache
+import logging
+import z3
+from time import time
+
+log = logging.getLogger(__name__)
+
+
+class DelayConstraintStrategy(BasicSearchStrategy):
+    def __init__(self, work_list, max_depth, **kwargs):
+        super().__init__(work_list, max_depth)
+        self.model_cache = ModelCache()
+        self.pending_worklist = []
+        log.info("Loaded search strategy extension: DelayConstraintStrategy")
+
+    def get_strategic_global_state(self) -> GlobalState:
+        """Returns the next state
+
+        :return: Global state
+        """
+        while len(self.work_list) == 0:
+            state = self.pending_worklist.pop(0)
+            model = state.world_state.constraints.get_model()
+            if model is not None:
+                self.model_cache.put(model, 1)
+                self.work_list.append(state)
+        state = self.work_list.pop(0)
+        return state
diff --git a/mythril_sol/laser/ethereum/strategy/extensions/__init__.py b/mythril_sol/laser/ethereum/strategy/extensions/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/mythril_sol/laser/ethereum/strategy/extensions/bounded_loops.py b/mythril_sol/laser/ethereum/strategy/extensions/bounded_loops.py
new file mode 100644
index 0000000000000000000000000000000000000000..948591a6fd39d5104b8d9cf751ec070bece732dd
--- /dev/null
+++ b/mythril_sol/laser/ethereum/strategy/extensions/bounded_loops.py
@@ -0,0 +1,145 @@
+from mythril.laser.ethereum.state.global_state import GlobalState
+from mythril.laser.ethereum.strategy.basic import BasicSearchStrategy
+from mythril.laser.ethereum.state.annotation import StateAnnotation
+from mythril.laser.ethereum.transaction import ContractCreationTransaction
+from typing import Dict, cast, List
+from copy import copy
+import logging
+
+
+log = logging.getLogger(__name__)
+
+
+class JumpdestCountAnnotation(StateAnnotation):
+    """State annotation that counts the number of jumps per destination."""
+
+    def __init__(self) -> None:
+        self._reached_count: Dict[int, int] = {}
+        self.trace: List[int] = []
+
+    def __copy__(self):
+        result = JumpdestCountAnnotation()
+        result._reached_count = copy(self._reached_count)
+        result.trace = copy(self.trace)
+        return result
+
+
+class BoundedLoopsStrategy(BasicSearchStrategy):
+    """Adds loop pruning to the search strategy.
+    Ignores JUMPI instruction if the destination was targeted >JUMPDEST_LIMIT times.
+    """
+
+    def __init__(self, super_strategy: BasicSearchStrategy, **kwargs) -> None:
+        """"""
+
+        self.super_strategy = super_strategy
+        self.bound = kwargs["loop_bound"]
+
+        log.info(
+            "Loaded search strategy extension: Loop bounds (limit = {})".format(
+                self.bound
+            )
+        )
+
+        BasicSearchStrategy.__init__(
+            self, super_strategy.work_list, super_strategy.max_depth, **kwargs
+        )
+
+    @staticmethod
+    def calculate_hash(i: int, j: int, trace: List[int]) -> int:
+        """
+        calculate hash(trace[i: j])
+        :param i:
+        :param j:
+        :param trace:
+        :return: hash(trace[i: j])
+        """
+        key = 0
+        size = 0
+        for itr in range(i, j):
+            key |= trace[itr] << ((itr - i) * 8)
+            size += 1
+
+        return key
+
+    @staticmethod
+    def count_key(trace: List[int], key: int, start: int, size: int) -> int:
+        """
+        Count continuous loops in the trace.
+        :param trace:
+        :param key:
+        :param size:
+        :return:
+        """
+        count = 1
+        i = start
+        while i >= 0:
+            if BoundedLoopsStrategy.calculate_hash(i, i + size, trace) != key:
+                break
+            count += 1
+            i -= size
+        return count
+
+    @staticmethod
+    def get_loop_count(trace: List[int]) -> int:
+        """
+        Gets the loop count
+        :param trace: annotation trace
+        :return:
+        """
+        found = False
+        for i in range(len(trace) - 3, 0, -1):
+            if trace[i] == trace[-2] and trace[i + 1] == trace[-1]:
+                found = True
+                break
+
+        if found:
+            key = BoundedLoopsStrategy.calculate_hash(i + 1, len(trace) - 1, trace)
+            size = len(trace) - i - 2
+            count = BoundedLoopsStrategy.count_key(trace, key, i + 1, size)
+        else:
+            count = 0
+        return count
+
+    def get_strategic_global_state(self) -> GlobalState:
+        """Returns the next state
+
+        :return: Global state
+        """
+
+        while True:
+
+            state = self.super_strategy.get_strategic_global_state()
+
+            annotations = cast(
+                List[JumpdestCountAnnotation],
+                list(state.get_annotations(JumpdestCountAnnotation)),
+            )
+
+            if len(annotations) == 0:
+                annotation = JumpdestCountAnnotation()
+                state.annotate(annotation)
+            else:
+                annotation = annotations[0]
+
+            cur_instr = state.get_current_instruction()
+
+            annotation.trace.append(cur_instr["address"])
+
+            if cur_instr["opcode"].upper() != "JUMPDEST":
+                return state
+
+            # create unique instruction identifier
+            count = BoundedLoopsStrategy.get_loop_count(annotation.trace)
+            # The creation transaction gets a higher loop bound to give it a better chance of success.
+            # TODO: There's probably a nicer way to do this
+            if isinstance(
+                state.current_transaction, ContractCreationTransaction
+            ) and count < max(128, self.bound):
+                return state
+
+            elif count > self.bound:
+                log.debug("Loop bound reached, skipping state")
+                continue
+
+            return state
diff --git a/mythril_sol/laser/ethereum/svm.py b/mythril_sol/laser/ethereum/svm.py
new file mode 100644
index 0000000000000000000000000000000000000000..0b3e3891ed1daf619ddc1d12d3c28479e4501d7a
--- /dev/null
+++ b/mythril_sol/laser/ethereum/svm.py
@@ -0,0 +1,815 @@
+"""This module implements the main symbolic execution engine."""
+import logging
+from collections import defaultdict
+from copy import copy
+from datetime import datetime, timedelta
+import random
+from typing import Callable, Dict, DefaultDict, List, Tuple, Optional
+
+from mythril.support.opcodes import OPCODES
+from mythril.analysis.potential_issues import check_potential_issues
+from mythril.laser.execution_info import ExecutionInfo
+from mythril.laser.ethereum.cfg import NodeFlags, Node, Edge, JumpType
+from mythril.laser.ethereum.evm_exceptions import StackUnderflowException, VmException
+from mythril.laser.ethereum.instructions import Instruction
+from mythril.laser.ethereum.instruction_data import get_required_stack_elements
+from mythril.laser.plugin.signals import PluginSkipWorldState, PluginSkipState
+from mythril.laser.ethereum.state.global_state import GlobalState
+from mythril.laser.ethereum.state.world_state import WorldState
+from mythril.laser.ethereum.strategy.basic import DepthFirstSearchStrategy
+from mythril.laser.ethereum.strategy.constraint_strategy import DelayConstraintStrategy
+from abc import ABCMeta
+from mythril.laser.ethereum.time_handler import time_handler
+
+from mythril.laser.ethereum.transaction import (
+    ContractCreationTransaction,
+    TransactionEndSignal,
+    TransactionStartSignal,
+    execute_contract_creation,
+    execute_message_call,
+)
+from mythril.laser.smt import And, symbol_factory, simplify
+from mythril.support.support_args import args
+
+log = logging.getLogger(__name__)
+
+
+class SVMError(Exception):
+    """An exception denoting an unexpected state in symbolic execution."""
+
+    pass
+
+
+class LaserEVM:
+    """The LASER EVM.
+
+    Just as Mithril had to be mined at great efforts to provide the
+    Dwarves with their exceptional armour, LASER stands at the heart of
+    Mythril, digging deep in the depths of call graphs, unearthing the
+    most precious symbolic call data, that is then hand-forged into
+    beautiful and strong security issues by the experienced smiths we
+    call detection modules. It is truly a magnificent symbiosis.
+    """
+
+    def __init__(
+        self,
+        dynamic_loader=None,
+        max_depth=float("inf"),
+        execution_timeout=60,
+        create_timeout=10,
+        strategy=DepthFirstSearchStrategy,
+        transaction_count=2,
+        requires_statespace=True,
+        iprof=None,
+        use_reachability_check=True,
+        beam_width=None,
+        tx_strategy=None,
+    ) -> None:
+        """
+        Initializes the laser evm object
+
+        :param dynamic_loader: Loads data from chain
+        :param max_depth: Maximum execution depth this vm should execute
+        :param execution_timeout: Time to take for execution
+        :param create_timeout: Time to take for contract creation
+        :param strategy: Execution search strategy
+        :param transaction_count: The amount of transactions to execute
+        :param requires_statespace: Variable indicating whether the statespace should be recorded
+        :param iprof: Instruction Profiler
+        :param use_reachability_check: Runs reachability check by solving constraints
+        :param beam_width: The beam width for search strategies
+        :param tx_strategy: A global tx prioritisation strategy
+        """
+        self.execution_info: List[ExecutionInfo] = []
+
+        self.open_states: List[WorldState] = []
+        self.total_states = 0
+        self.dynamic_loader = dynamic_loader
+        self.use_reachability_check = use_reachability_check
+
+        self.work_list: List[GlobalState] = []
+        self.strategy = strategy(self.work_list, max_depth, beam_width=beam_width)
+        self.max_depth = max_depth
+        self.transaction_count = transaction_count
+        self.tx_strategy = tx_strategy
+
+        self.execution_timeout = execution_timeout or 0
+        self.create_timeout = create_timeout or 0
+
+        self.requires_statespace = requires_statespace
+        if self.requires_statespace:
+            self.nodes: Dict[int, Node] = {}
+            self.edges: List[Edge] = []
+
+        self.time: datetime = None
+        self.executed_transactions: bool = False
+
+        self.pre_hooks: DefaultDict[str, List[Callable]] = defaultdict(list)
+        self.post_hooks: DefaultDict[str, List[Callable]] = defaultdict(list)
+
+        self._add_world_state_hooks: List[Callable] = []
+        self._execute_state_hooks: List[Callable] = []
+
+        self._start_exec_trans_hooks: List[Callable] = []
+        self._stop_exec_trans_hooks: List[Callable] = []
+
+        self._start_sym_trans_hooks: List[Callable] = []
+        self._stop_sym_trans_hooks: List[Callable] = []
+
+        self._start_sym_exec_hooks: List[Callable] = []
+        self._stop_sym_exec_hooks: List[Callable] = []
+
+        self._start_exec_hooks: List[Callable] = []
+        self._stop_exec_hooks: List[Callable] = []
+
+        self._transaction_end_hooks: List[Callable] = []
+
+        self.iprof = iprof
+        self.instr_pre_hook: Dict[str, List[Callable]] = {}
+        self.instr_post_hook: Dict[str, List[Callable]] = {}
+        for op in OPCODES:
+            self.instr_pre_hook[op] = []
+            self.instr_post_hook[op] = []
+        self.hook_type_map = {
+            "start_execute_transactions": self._start_exec_trans_hooks,
+            "stop_execute_transactions": self._stop_exec_trans_hooks,
+            "add_world_state": self._add_world_state_hooks,
+            "execute_state": self._execute_state_hooks,
+            "start_sym_exec": self._start_sym_exec_hooks,
+            "stop_sym_exec": self._stop_sym_exec_hooks,
+            "start_sym_trans": self._start_sym_trans_hooks,
+            "stop_sym_trans": self._stop_sym_trans_hooks,
+            "start_exec": self._start_exec_hooks,
+            "stop_exec": self._stop_exec_hooks,
+            "transaction_end": self._transaction_end_hooks,
+        }
+        log.info("LASER EVM initialized with dynamic loader: " + str(dynamic_loader))
+
+    def extend_strategy(self, extension: ABCMeta, **kwargs) -> None:
+        self.strategy = extension(self.strategy, **kwargs)
+
+    def sym_exec(
+        self,
+        world_state: WorldState = None,
+        target_address: int = None,
+        creation_code: str = None,
+        contract_name: str = None,
+    ) -> None:
+        """Starts symbolic execution
+        There are two modes of execution.
+        Either we analyze a preconfigured configuration, in which case the world_state and target_address variables
+        must be supplied.
+        Or we execute the creation code of a contract, in which case the creation code and desired name of that
+        contract should be provided.
+
+        :param world_state The world state configuration from which to perform analysis
+        :param target_address The address of the contract account in the world state which analysis should target
+        :param creation_code The creation code to create the target contract in the symbolic environment
+        :param contract_name The name that the created account should be associated with
+        """
+        pre_configuration_mode = target_address is not None
+        scratch_mode = creation_code is not None and contract_name is not None
+        if pre_configuration_mode == scratch_mode:
+            raise ValueError("Symbolic execution started with invalid parameters")
+
+        log.debug("Starting LASER execution")
+        for hook in self._start_sym_exec_hooks:
+            hook()
+
+        time_handler.start_execution(self.execution_timeout)
+        self.time = datetime.now()
+
+        if pre_configuration_mode:
+            self.open_states = [world_state]
+            log.info("Starting message call transaction to {}".format(target_address))
+            self.execute_transactions(symbol_factory.BitVecVal(target_address, 256))
+
+        elif scratch_mode:
+            log.info("Starting contract creation transaction")
+
+            created_account = execute_contract_creation(
+                self, creation_code, contract_name, world_state=world_state
+            )
+            log.info(
+                "Finished contract creation, found {} open states".format(
+                    len(self.open_states)
+                )
+            )
+
+            if len(self.open_states) == 0:
+                log.warning(
+                    "No contract was created during the execution of contract creation "
+                    "Increase the resources for creation execution (--max-depth or --create-timeout) "
+                    "Check whether the bytecode is indeed the creation code, otherwise use the --bin-runtime flag"
+                )
+
+            self.execute_transactions(created_account.address)
+
+        log.info("Finished symbolic execution")
+        if self.requires_statespace:
+            log.info(
+                "%d nodes, %d edges, %d total states",
+                len(self.nodes),
+                len(self.edges),
+                self.total_states,
+            )
+
+        for hook in self._stop_sym_exec_hooks:
+            hook()
+
+    def execute_transactions(self, address) -> None:
+        """This function helps runs plugins that can order transactions.
+        Such plugins should set self.executed_transactions as True after its execution
+
+        :param address: Address of the contract
+        :return: None
+        """
+        for hook in self._start_exec_trans_hooks:
+            hook()
+        if self.tx_strategy is None:
+            if self.executed_transactions is False:
+                self.time = datetime.now()
+                self._execute_transactions_incremental(
+                    address, txs=args.transaction_sequences
+                )
+        else:
+            self.time = datetime.now()
+            self._execute_transactions_non_ordered(address)
+        for hook in self._stop_exec_trans_hooks:
+            hook()
+
+    def _execute_transactions_non_ordered(self, address):
+        """
+        This function executes multiple transactions non-incrementally, using some type priority ordering
+
+        :param address: Address of the contract
+        :return:
+        """
+        for txs in self.strategy:
+            log.info(f"Executing the sequence: {txs}")
+            self._execute_transactions_incremental(address, txs=tx)
+
+    def _execute_transactions_incremental(self, address, txs=None):
+        """This function executes multiple transactions incrementally on the address
+
+        :param address: Address of the contract
+        :return:
+        """
+
+        for i in range(self.transaction_count):
+            if len(self.open_states) == 0:
+                break
+            old_states_count = len(self.open_states)
+
+            if self.use_reachability_check:
+                if isinstance(self.strategy, DelayConstraintStrategy):
+                    open_states = []
+                    for state in self.open_states:
+                        c_val = self.strategy.model_cache.check_quick_sat(
+                            simplify(And(*state.world_state.constraints)).raw
+                        )
+                        if c_val:
+                            open_states.append(self.open_states)
+                        else:
+                            self.strategy.pending_worklist.append(state)
+
+                else:
+                    self.open_states = [
+                        state
+                        for state in self.open_states
+                        if state.constraints.is_possible()
+                    ]
+                    prune_count = old_states_count - len(self.open_states)
+                if prune_count:
+                    log.info("Pruned {} unreachable states".format(prune_count))
+            log.info(
+                "Starting message call transaction, iteration: {}, {} initial states".format(
+                    i, len(self.open_states)
+                )
+            )
+            func_hashes = txs[i] if txs else None
+
+            if func_hashes:
+                for itr, func_hash in enumerate(func_hashes):
+                    if func_hash in (-1, -2):
+                        func_hashes[itr] = func_hash
+                    else:
+                        func_hashes[itr] = bytes.fromhex(hex(func_hash)[2:].zfill(8))
+
+            for hook in self._start_sym_trans_hooks:
+                hook()
+
+            execute_message_call(self, address, func_hashes=func_hashes)
+
+            for hook in self._stop_sym_trans_hooks:
+                hook()
+
+        self.executed_transactions = True
+
+    def _check_create_termination(self) -> bool:
+        if len(self.open_states) != 0:
+            return (
+                self.create_timeout > 0
+                and self.time + timedelta(seconds=self.create_timeout) <= datetime.now()
+            )
+        return self._check_execution_termination()
+
+    def _check_execution_termination(self) -> bool:
+        return (
+            self.execution_timeout > 0
+            and self.time + timedelta(seconds=self.execution_timeout) <= datetime.now()
+        )
+
+    def exec(self, create=False, track_gas=False) -> Optional[List[GlobalState]]:
+        """
+
+        :param create:
+        :param track_gas:
+        :return:
+        """
+        final_states: List[GlobalState] = []
+        for hook in self._start_exec_hooks:
+            hook()
+
+        for global_state in self.strategy:
+
+            if create and self._check_create_termination():
+                log.debug("Hit create timeout, returning.")
+                return final_states + [global_state] if track_gas else None
+
+            if not create and self._check_execution_termination():
+                log.debug("Hit execution timeout, returning.")
+                return final_states + [global_state] if track_gas else None
+            try:
+                new_states, op_code = self.execute_state(global_state)
+            except NotImplementedError:
+                log.debug("Encountered unimplemented instruction")
+                continue
+
+            if self.strategy.run_check() and (
+                len(new_states) > 1 and random.uniform(0, 1) < args.pruning_factor
+            ):
+                new_states = [
+                    state
+                    for state in new_states
+                    if state.world_state.constraints.is_possible()
+                ]
+            self.manage_cfg(op_code, new_states)  # TODO: What about op_code is None?
+            if new_states:
+                self.work_list += new_states
+            elif track_gas:
+                final_states.append(global_state)
+            self.total_states += len(new_states)
+
+        for hook in self._stop_exec_hooks:
+            hook()
+
+        return final_states if track_gas else None
+
+    def _add_world_state(self, global_state: GlobalState):
+        """Stores the world_state of the passed global state in the open states"""
+
+        for hook in self._add_world_state_hooks:
+            try:
+                hook(global_state)
+            except PluginSkipWorldState:
+                return
+
+        self.open_states.append(global_state.world_state)
+
+    def handle_vm_exception(
+        self, global_state: GlobalState, op_code: str, error_msg: str
+    ) -> List[GlobalState]:
+        _, return_global_state = global_state.transaction_stack.pop()
+
+        if return_global_state is None:
+            # In this case we don't put an unmodified world state in the open_states list Since in the case of an
+            #  exceptional halt all changes should be discarded, and this world state would not provide us with a
+            #  previously unseen world state
+            log.debug("Encountered a VmException, ending path: `{}`".format(error_msg))
+            new_global_states: List[GlobalState] = []
+        else:
+            # First execute the post hook for the transaction ending instruction
+            self._execute_post_hook(op_code, [global_state])
+            new_global_states = self._end_message_call(
+                return_global_state, global_state, revert_changes=True, return_data=None
+            )
+        return new_global_states
+
+    def execute_state(
+        self, global_state: GlobalState
+    ) -> Tuple[List[GlobalState], Optional[str]]:
+        """Execute a single instruction in global_state.
+
+        :param global_state:
+        :return: A list of successor states.
+        """
+        # Execute hooks
+        try:
+            for hook in self._execute_state_hooks:
+                hook(global_state)
+        except PluginSkipState:
+            return [], None
+
+        instructions = global_state.environment.code.instruction_list
+        try:
+            op_code = instructions[global_state.mstate.pc]["opcode"]
+        except IndexError:
+            self._add_world_state(global_state)
+            return [], None
+
+        if len(global_state.mstate.stack) < get_required_stack_elements(op_code):
+            error_msg = (
+                "Stack Underflow Exception due to insufficient "
+                "stack elements for the address {}".format(
+                    instructions[global_state.mstate.pc]["address"]
+                )
+            )
+            new_global_states = self.handle_vm_exception(
+                global_state, op_code, error_msg
+            )
+            self._execute_post_hook(op_code, new_global_states)
+            return new_global_states, op_code
+
+        try:
+            self._execute_pre_hook(op_code, global_state)
+        except PluginSkipState:
+            return [], None
+
+        try:
+            new_global_states = Instruction(
+                op_code,
+                self.dynamic_loader,
+                pre_hooks=self.instr_pre_hook[op_code],
+                post_hooks=self.instr_post_hook[op_code],
+            ).evaluate(global_state)
+
+        except VmException as e:
+            for hook in self._transaction_end_hooks:
+                hook(
+                    global_state,
+                    global_state.current_transaction,
+                    None,
+                    False,
+                )
+            new_global_states = self.handle_vm_exception(global_state, op_code, str(e))
+
+        except TransactionStartSignal as start_signal:
+            # Setup new global state
+            new_global_state = start_signal.transaction.initial_global_state()
+
+            new_global_state.transaction_stack = copy(
+                global_state.transaction_stack
+            ) + [(start_signal.transaction, global_state)]
+            new_global_state.node = global_state.node
+            new_global_state.world_state.constraints = (
+                start_signal.global_state.world_state.constraints
+            )
+
+            log.debug("Starting new transaction %s", start_signal.transaction)
+
+            return [new_global_state], op_code
+
+        except TransactionEndSignal as end_signal:
+            (
+                transaction,
+                return_global_state,
+            ) = end_signal.global_state.transaction_stack[-1]
+
+            log.debug("Ending transaction %s.", transaction)
+
+            for hook in self._transaction_end_hooks:
+                hook(
+                    end_signal.global_state,
+                    transaction,
+                    return_global_state,
+                    end_signal.revert,
+                )
+
+            if return_global_state is None:
+                if (
+                    not isinstance(transaction, ContractCreationTransaction)
+                    or transaction.return_data
+                ) and not end_signal.revert:
+                    check_potential_issues(global_state)
+                    end_signal.global_state.world_state.node = global_state.node
+                    self._add_world_state(end_signal.global_state)
+
+                new_global_states = []
+            else:
+
+                # First execute the post hook for the transaction ending instruction
+                self._execute_post_hook(op_code, [end_signal.global_state])
+
+                # Propagate annotations
+                new_annotations = [
+                    annotation
+                    for annotation in global_state.annotations
+                    if annotation.persist_over_calls
+                ]
+                return_global_state.add_annotations(new_annotations)
+
+                new_global_states = self._end_message_call(
+                    copy(return_global_state),
+                    global_state,
+                    revert_changes=False or end_signal.revert,
+                    return_data=transaction.return_data,
+                )
+
+        self._execute_post_hook(op_code, new_global_states)
+
+        return new_global_states, op_code
+
+    def _end_message_call(
+        self,
+        return_global_state: GlobalState,
+        global_state: GlobalState,
+        revert_changes=False,
+        return_data=None,
+    ) -> List[GlobalState]:
+        """
+
+        :param return_global_state:
+        :param global_state:
+        :param revert_changes:
+        :param return_data:
+        :return:
+        """
+
+        return_global_state.world_state.constraints += (
+            global_state.world_state.constraints
+        )
+        # Resume execution of the transaction initializing instruction
+        op_code = return_global_state.environment.code.instruction_list[
+            return_global_state.mstate.pc
+        ]["opcode"]
+
+        # Set execution result in the return_state
+        return_global_state.last_return_data = return_data
+        if not revert_changes:
+            return_global_state.world_state = copy(global_state.world_state)
+            return_global_state.environment.active_account = global_state.accounts[
+                return_global_state.environment.active_account.address.value
+            ]
+            if isinstance(
+                global_state.current_transaction, ContractCreationTransaction
+            ):
+                return_global_state.mstate.min_gas_used += (
+                    global_state.mstate.min_gas_used
+                )
+                return_global_state.mstate.max_gas_used += (
+                    global_state.mstate.max_gas_used
+                )
+        try:
+            # Execute the post instruction handler
+            new_global_states = Instruction(
+                op_code,
+                self.dynamic_loader,
+                pre_hooks=self.instr_pre_hook[op_code],
+                post_hooks=self.instr_post_hook[op_code],
+            ).evaluate(return_global_state, True)
+        except VmException:
+            new_global_states = []
+        # In order to get a nice call graph we need to set the nodes here
+        for state in new_global_states:
+            state.node = global_state.node
+
+        return new_global_states
+
+    def manage_cfg(self, opcode: str, new_states: List[GlobalState]) -> None:
+        """
+
+        :param opcode:
+        :param new_states:
+        """
+        if opcode == "JUMP":
+            assert len(new_states) <= 1
+            for state in new_states:
+                self._new_node_state(state)
+        elif opcode == "JUMPI":
+            assert len(new_states) <= 2
+            for state in new_states:
+                self._new_node_state(
+                    state, JumpType.CONDITIONAL, state.world_state.constraints[-1]
+                )
+        elif opcode in ("SLOAD", "SSTORE") and len(new_states) > 1:
+            for state in new_states:
+                self._new_node_state(
+                    state, JumpType.CONDITIONAL, state.world_state.constraints[-1]
+                )
+        elif opcode == "RETURN":
+            for state in new_states:
+                self._new_node_state(state, JumpType.RETURN)
+
+        for state in new_states:
+            state.node.states.append(state)
+
+    def _new_node_state(
+        self, state: GlobalState, edge_type=JumpType.UNCONDITIONAL, condition=None
+    ) -> None:
+        """
+
+        :param state:
+        :param edge_type:
+        :param condition:
+        """
+        try:
+            address = state.environment.code.instruction_list[state.mstate.pc][
+                "address"
+            ]
+        except IndexError:
+            return
+        new_node = Node(state.environment.active_account.contract_name)
+        old_node = state.node
+        state.node = new_node
+        new_node.constraints = state.world_state.constraints
+        if self.requires_statespace:
+            self.nodes[new_node.uid] = new_node
+            self.edges.append(
+                Edge(
+                    old_node.uid, new_node.uid, edge_type=edge_type, condition=condition
+                )
+            )
+
+        if edge_type == JumpType.RETURN:
+            new_node.flags |= NodeFlags.CALL_RETURN
+        elif edge_type == JumpType.CALL:
+            try:
+                if "retval" in str(state.mstate.stack[-1]):
+                    new_node.flags |= NodeFlags.CALL_RETURN
+                else:
+                    new_node.flags |= NodeFlags.FUNC_ENTRY
+            except StackUnderflowException:
+                new_node.flags |= NodeFlags.FUNC_ENTRY
+
+        environment = state.environment
+        disassembly = environment.code
+
+        # Only set when encountering new JUMPI
+        if edge_type == JumpType.CONDITIONAL:
+            if isinstance(
+                state.world_state.transaction_sequence[-1], ContractCreationTransaction
+            ):
+                environment.active_function_name = "constructor"
+            elif address in disassembly.address_to_function_name:
+                # Enter a new function
+                environment.active_function_name = disassembly.address_to_function_name[
+                    address
+                ]
+                new_node.flags |= NodeFlags.FUNC_ENTRY
+
+                log.debug(
+                    "- Entering function "
+                    + environment.active_account.contract_name
+                    + ":"
+                    + new_node.function_name
+                )
+            elif address == 0:
+                environment.active_function_name = "fallback"
+
+        new_node.function_name = environment.active_function_name
+
+    def register_hooks(self, hook_type: str, hook_dict: Dict[str, List[Callable]]):
+        """
+
+        :param hook_type:
+        :param hook_dict:
+        """
+        if hook_type == "pre":
+            entrypoint = self.pre_hooks
+        elif hook_type == "post":
+            entrypoint = self.post_hooks
+        else:
+            raise ValueError(
+                "Invalid hook type %s. Must be one of {pre, post}", hook_type
+            )
+
+        for op_code, funcs in hook_dict.items():
+            entrypoint[op_code].extend(funcs)
+
+    def register_laser_hooks(self, hook_type: str, hook: Callable):
+        """registers the hook with this Laser VM"""
+
+        if hook_type in self.hook_type_map:
+            self.hook_type_map[hook_type].append(hook)
+        else:
+            raise ValueError(f"Invalid hook type {hook_type}")
+
+    def register_instr_hooks(self, hook_type: str, opcode: str, hook: Callable):
+        """Registers instructions hooks from plugins"""
+        if hook_type == "pre":
+            if opcode is None:
+                for op in OPCODES:
+                    self.instr_pre_hook[op].append(hook(op))
+            else:
+                self.instr_pre_hook[opcode].append(hook)
+        else:
+            if opcode is None:
+                for op in OPCODES:
+                    self.instr_post_hook[op].append(hook(op))
+            else:
+                self.instr_post_hook[opcode].append(hook)
+
+    def instr_hook(self, hook_type, opcode) -> Callable:
+        """Registers the annotated function with register_instr_hooks
+
+        :param hook_type: Type of hook pre/post
+        :param opcode: The opcode related to the function
+        """
+
+        def hook_decorator(func: Callable):
+            """Hook decorator generated by laser_hook
+
+            :param func: Decorated function
+            """
+            self.register_instr_hooks(hook_type, opcode, func)
+
+        return hook_decorator
+
+    def laser_hook(self, hook_type: str) -> Callable:
+        """Registers the annotated function with register_laser_hooks
+
+        :param hook_type:
+        :return: hook decorator
+        """
+
+        def hook_decorator(func: Callable):
+            """Hook decorator generated by laser_hook
+
+            :param func: Decorated function
+            """
+            self.register_laser_hooks(hook_type, func)
+            return func
+
+        return hook_decorator
+
+    def _execute_pre_hook(self, op_code: str, global_state: GlobalState) -> None:
+        """
+
+        :param op_code:
+        :param global_state:
+        :return:
+        """
+        if op_code not in self.pre_hooks.keys():
+            return
+        for hook in self.pre_hooks[op_code]:
+            hook(global_state)
+
+    def _execute_post_hook(
+        self, op_code: str, global_states: List[GlobalState]
+    ) -> None:
+        """
+
+        :param op_code:
+        :param global_states:
+        :return:
+        """
+        if op_code not in self.post_hooks.keys():
+            return
+
+        for hook in self.post_hooks[op_code]:
+            for global_state in global_states:
+                try:
+                    hook(global_state)
+                except PluginSkipState:
+                    global_states.remove(global_state)
+
+    def pre_hook(self, op_code: str) -> Callable:
+        """
+
+        :param op_code:
+        :return:
+        """
+
+        def hook_decorator(func: Callable):
+            """
+
+            :param func:
+            :return:
+            """
+            if op_code not in self.pre_hooks.keys():
+                self.pre_hooks[op_code] = []
+            self.pre_hooks[op_code].append(func)
+            return func
+
+        return hook_decorator
+
+    def post_hook(self, op_code: str) -> Callable:
+        """
+
+        :param op_code:
+        :return:
+        """
+
+        def hook_decorator(func: Callable):
+            """
+
+            :param func:
+            :return:
+            """
+            if op_code not in self.post_hooks.keys():
+                self.post_hooks[op_code] = []
+            self.post_hooks[op_code].append(func)
+            return func
+
+        return hook_decorator
diff --git a/mythril_sol/laser/ethereum/time_handler.py b/mythril_sol/laser/ethereum/time_handler.py
new file mode 100644
index 0000000000000000000000000000000000000000..b8e1379b93f2404bbaa396b5e165b5e29a1ee226
--- /dev/null
+++ b/mythril_sol/laser/ethereum/time_handler.py
@@ -0,0 +1,18 @@
+import time
+from mythril.support.support_utils import Singleton
+
+
+class TimeHandler(object, metaclass=Singleton):
+    def __init__(self):
+        self._start_time = None
+        self._execution_time = None
+
+    def start_execution(self, execution_time):
+        self._start_time = int(time.time() * 1000)
+        self._execution_time = execution_time * 1000
+
+    def time_remaining(self):
+        return self._execution_time - (int(time.time() * 1000) - self._start_time)
+
+
+time_handler = TimeHandler()
diff --git a/mythril_sol/laser/ethereum/transaction/__init__.py b/mythril_sol/laser/ethereum/transaction/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..8ab310fc1dd3b9e5cbfcc64409c415699893a5c9
--- /dev/null
+++ b/mythril_sol/laser/ethereum/transaction/__init__.py
@@ -0,0 +1,5 @@
+from mythril.laser.ethereum.transaction.transaction_models import *
+from mythril.laser.ethereum.transaction.symbolic import (
+    execute_message_call,
+    execute_contract_creation,
+)
diff --git a/mythril_sol/laser/ethereum/transaction/concolic.py b/mythril_sol/laser/ethereum/transaction/concolic.py
new file mode 100644
index 0000000000000000000000000000000000000000..dfc22d1d5f6681030ecf9302130d578a5c17ccfa
--- /dev/null
+++ b/mythril_sol/laser/ethereum/transaction/concolic.py
@@ -0,0 +1,174 @@
+"""This module contains functions to set up and execute concolic message
+calls."""
+import binascii
+
+from typing import List, Union
+from copy import deepcopy
+
+from mythril.exceptions import IllegalArgumentError
+from mythril.disassembler.disassembly import Disassembly
+from mythril.laser.ethereum.cfg import Node, Edge, JumpType
+from mythril.laser.smt import symbol_factory
+from mythril.laser.ethereum.state.account import Account
+from mythril.laser.ethereum.state.calldata import ConcreteCalldata
+from mythril.laser.ethereum.state.global_state import GlobalState
+from mythril.laser.ethereum.state.world_state import WorldState
+from mythril.laser.ethereum.transaction.transaction_models import (
+    MessageCallTransaction,
+    ContractCreationTransaction,
+    tx_id_manager,
+)
+
+
+def execute_contract_creation(
+    laser_evm,
+    callee_address,
+    caller_address,
+    origin_address,
+    data,
+    gas_limit,
+    gas_price,
+    value,
+    code=None,
+    track_gas=False,
+    contract_name=None,
+):
+    """Executes a contract creation transaction concretely.
+
+    :param laser_evm:
+    :param callee_address:
+    :param caller_address:
+    :param origin_address:
+    :param code:
+    :param data:
+    :param gas_limit:
+    :param gas_price:
+    :param value:
+    :param track_gas:
+    :return:
+    """
+
+    open_states: List[WorldState] = laser_evm.open_states[:]
+    del laser_evm.open_states[:]
+
+    data = binascii.b2a_hex(data).decode("utf-8")
+
+    for open_world_state in open_states:
+        next_transaction_id = tx_id_manager.get_next_tx_id()
+        transaction = ContractCreationTransaction(
+            world_state=open_world_state,
+            identifier=next_transaction_id,
+            gas_price=gas_price,
+            gas_limit=gas_limit,  # block gas limit
+            origin=origin_address,
+            code=Disassembly(data),
+            caller=caller_address,
+            contract_name=contract_name,
+            call_data=None,
+            call_value=value,
+        )
+        _setup_global_state_for_execution(laser_evm, transaction)
+
+    return laser_evm.exec(True, track_gas=track_gas)
+
+
+def execute_message_call(
+    laser_evm,
+    callee_address,
+    caller_address,
+    origin_address,
+    data,
+    gas_limit,
+    gas_price,
+    value,
+    code=None,
+    track_gas=False,
+) -> Union[None, List[GlobalState]]:
+    """Execute a message call transaction from all open states.
+
+    :param laser_evm:
+    :param callee_address:
+    :param caller_address:
+    :param origin_address:
+    :param code:
+    :param data:
+    :param gas_limit:
+    :param gas_price:
+    :param value:
+    :param track_gas:
+    :return:
+    """
+
+    open_states: List[WorldState] = laser_evm.open_states[:]
+    del laser_evm.open_states[:]
+    for open_world_state in open_states:
+        next_transaction_id = tx_id_manager.get_next_tx_id()
+        code = code or open_world_state[callee_address].code.bytecode
+        transaction = MessageCallTransaction(
+            world_state=open_world_state,
+            identifier=next_transaction_id,
+            gas_price=gas_price,
+            gas_limit=gas_limit,
+            origin=origin_address,
+            code=Disassembly(code),
+            caller=caller_address,
+            callee_account=open_world_state[callee_address],
+            call_data=ConcreteCalldata(next_transaction_id, data),
+            call_value=value,
+        )
+
+        _setup_global_state_for_execution(laser_evm, transaction)
+
+    return laser_evm.exec(track_gas=track_gas)
+
+
+def _setup_global_state_for_execution(laser_evm, transaction) -> None:
+    """Set up global state and cfg for a transactions execution.
+
+    :param laser_evm:
+    :param transaction:
+    """
+    # TODO: Resolve circular import between .transaction and ..svm to import LaserEVM here
+    global_state = transaction.initial_global_state()
+    global_state.transaction_stack.append((transaction, None))
+
+    new_node = Node(
+        global_state.environment.active_account.contract_name,
+        function_name=global_state.environment.active_function_name,
+    )
+
+    if laser_evm.requires_statespace:
+        laser_evm.nodes[new_node.uid] = new_node
+    if transaction.world_state.node and laser_evm.requires_statespace:
+        laser_evm.edges.append(
+            Edge(
+                transaction.world_state.node.uid,
+                new_node.uid,
+                edge_type=JumpType.Transaction,
+                condition=None,
+            )
+        )
+        new_node.constraints = global_state.world_state.constraints
+
+    global_state.world_state.transaction_sequence.append(transaction)
+    global_state.node = new_node
+    new_node.states.append(global_state)
+    laser_evm.work_list.append(global_state)
+
+
+def execute_transaction(*args, **kwargs) -> Union[None, List[GlobalState]]:
+    """
+    Chooses the transaction type based on callee address and
+    executes the transaction
+    """
+    try:
+        if kwargs["callee_address"] == "":
+            if kwargs["caller_address"] == "":
+                kwargs["caller_address"] = kwargs["origin"]
+            return execute_contract_creation(*args, **kwargs)
+        kwargs["callee_address"] = symbol_factory.BitVecVal(
+            int(kwargs["callee_address"], 16), 256
+        )
+    except KeyError as k:
+        raise IllegalArgumentError(f"Argument not found: {k}")
+    return execute_message_call(*args, **kwargs)
diff --git a/mythril_sol/laser/ethereum/transaction/symbolic.py b/mythril_sol/laser/ethereum/transaction/symbolic.py
new file mode 100644
index 0000000000000000000000000000000000000000..e339d3ba4f5888989feaf3ed2c81d1c3044fedb7
--- /dev/null
+++ b/mythril_sol/laser/ethereum/transaction/symbolic.py
@@ -0,0 +1,264 @@
+"""This module contains functions setting up and executing transactions with
+symbolic values."""
+import logging
+from typing import Optional, List, Union
+from copy import deepcopy
+
+
+from mythril.disassembler.disassembly import Disassembly
+from mythril.laser.ethereum.cfg import Node, Edge, JumpType
+from mythril.laser.ethereum.state.account import Account
+from mythril.laser.ethereum.state.calldata import SymbolicCalldata
+from mythril.laser.ethereum.state.constraints import Constraints
+from mythril.laser.ethereum.state.world_state import WorldState
+from mythril.laser.ethereum.transaction.transaction_models import (
+    MessageCallTransaction,
+    ContractCreationTransaction,
+    tx_id_manager,
+    BaseTransaction,
+)
+from mythril.laser.smt import symbol_factory, Or, Bool, BitVec
+from mythril.support.support_args import args as cmd_args
+
+
+FUNCTION_HASH_BYTE_LENGTH = 4
+
+log = logging.getLogger(__name__)
+
+
+class Actors:
+    def __init__(
+        self,
+        creator=0xAFFEAFFEAFFEAFFEAFFEAFFEAFFEAFFEAFFEAFFE,
+        attacker=0xDEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEF,
+        someguy=0xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA,
+    ):
+        self.addresses = {
+            "CREATOR": symbol_factory.BitVecVal(creator, 256),
+            "ATTACKER": symbol_factory.BitVecVal(attacker, 256),
+            "SOMEGUY": symbol_factory.BitVecVal(someguy, 256),
+        }
+
+    def __setitem__(self, actor: str, address: Optional[str]):
+        """
+        Sets an actor to a desired address
+
+        :param actor: Name of the actor to set
+        :param address: Address to set the actor to. None to delete the actor
+        """
+        if address is None:
+            if actor in ("CREATOR", "ATTACKER"):
+                raise ValueError("Can't delete creator or attacker address")
+            del self.addresses[actor]
+        else:
+            if address[0:2] != "0x":
+                raise ValueError("Actor address not in valid format")
+
+            self.addresses[actor] = symbol_factory.BitVecVal(int(address[2:], 16), 256)
+
+    def __getitem__(self, actor: str):
+        return self.addresses[actor]
+
+    @property
+    def creator(self):
+        return self.addresses["CREATOR"]
+
+    @property
+    def attacker(self):
+        return self.addresses["ATTACKER"]
+
+    def __len__(self):
+        return len(self.addresses)
+
+
+ACTORS = Actors()
+
+
+def generate_function_constraints(
+    calldata: SymbolicCalldata, func_hashes: List[List[int]]
+) -> List[Bool]:
+    """
+    This will generate constraints for fixing the function call part of calldata
+    :param calldata: Calldata
+    :param func_hashes: The list of function hashes allowed for this transaction
+    :return: Constraints List
+    """
+    if len(func_hashes) == 0:
+        return []
+    constraints = []
+    for i in range(FUNCTION_HASH_BYTE_LENGTH):
+        constraint = Bool(False)
+        for func_hash in func_hashes:
+            if func_hash == -1:
+                # Fallback function without calldata
+                constraint = Or(constraint, calldata.size < 4)
+            elif func_hash == -2:
+                # Receive function
+                constraint = Or(constraint, calldata.size == 0)
+            else:
+                constraint = Or(
+                    constraint, calldata[i] == symbol_factory.BitVecVal(func_hash[i], 8)
+                )
+        constraints.append(constraint)
+    return constraints
+
+
+def execute_message_call(
+    laser_evm, callee_address: BitVec, func_hashes: List[List[int]] = None
+) -> None:
+    """Executes a message call transaction from all open states.
+
+    :param laser_evm:
+    :param callee_address:
+    """
+    # TODO: Resolve circular import between .transaction and ..svm to import LaserEVM here
+    open_states = laser_evm.open_states[:]
+    del laser_evm.open_states[:]
+
+    for open_world_state in open_states:
+        if open_world_state[callee_address].deleted:
+            log.debug("Can not execute dead contract, skipping.")
+            continue
+
+        next_transaction_id = tx_id_manager.get_next_tx_id()
+
+        external_sender = symbol_factory.BitVecSym(
+            "sender_{}".format(next_transaction_id), 256
+        )
+        calldata = SymbolicCalldata(next_transaction_id)
+        transaction = MessageCallTransaction(
+            world_state=open_world_state,
+            identifier=next_transaction_id,
+            gas_price=symbol_factory.BitVecSym(
+                "gas_price{}".format(next_transaction_id), 256
+            ),
+            gas_limit=8000000,  # block gas limit
+            origin=external_sender,
+            caller=external_sender,
+            callee_account=open_world_state[callee_address],
+            call_data=calldata,
+            call_value=symbol_factory.BitVecSym(
+                "call_value{}".format(next_transaction_id), 256
+            ),
+        )
+        constraints = (
+            generate_function_constraints(calldata, func_hashes)
+            if func_hashes
+            else None
+        )
+        _setup_global_state_for_execution(laser_evm, transaction, constraints)
+
+    laser_evm.exec()
+
+
+def execute_contract_creation(
+    laser_evm,
+    contract_initialization_code,
+    contract_name=None,
+    world_state=None,
+    origin=ACTORS["CREATOR"],
+    caller=ACTORS["CREATOR"],
+) -> Account:
+    """Executes a contract creation transaction from all open states.
+
+    :param laser_evm:
+    :param contract_initialization_code:
+    :param contract_name:
+    :return:
+    """
+
+    world_state = world_state or WorldState()
+    open_states = [world_state]
+    del laser_evm.open_states[:]
+    new_account = None
+    for open_world_state in open_states:
+        next_transaction_id = tx_id_manager.get_next_tx_id()
+        # call_data "should" be '[]', but it is easier to model the calldata symbolically
+        # and add logic in codecopy/codesize/calldatacopy/calldatasize than to model code "correctly"
+        transaction = ContractCreationTransaction(
+            world_state=open_world_state,
+            identifier=next_transaction_id,
+            gas_price=symbol_factory.BitVecSym(
+                "gas_price{}".format(next_transaction_id), 256
+            ),
+            gas_limit=8000000,  # block gas limit
+            origin=origin,
+            code=Disassembly(contract_initialization_code),
+            caller=caller,
+            contract_name=contract_name,
+            call_data=None,
+            call_value=symbol_factory.BitVecSym(
+                "call_value{}".format(next_transaction_id), 256
+            ),
+        )
+        _setup_global_state_for_execution(laser_evm, transaction)
+        new_account = new_account or transaction.callee_account
+
+    laser_evm.exec(True)
+
+    return new_account
+
+
+def _setup_global_state_for_execution(
+    laser_evm,
+    transaction: BaseTransaction,
+    initial_constraints: Optional[List[Bool]] = None,
+) -> None:
+    """Sets up global state and cfg for a transactions execution.
+
+    :param laser_evm:
+    :param transaction:
+    """
+    # TODO: Resolve circular import between .transaction and ..svm to import LaserEVM here
+    global_state = transaction.initial_global_state()
+    global_state.transaction_stack.append((transaction, None))
+    global_state.world_state.constraints += initial_constraints or []
+
+    global_state.world_state.constraints.append(
+        Or(*[transaction.caller == actor for actor in ACTORS.addresses.values()])
+    )
+
+    new_node = Node(
+        global_state.environment.active_account.contract_name,
+        function_name=global_state.environment.active_function_name,
+    )
+    if laser_evm.requires_statespace:
+        laser_evm.nodes[new_node.uid] = new_node
+
+    if transaction.world_state.node:
+        if laser_evm.requires_statespace:
+            laser_evm.edges.append(
+                Edge(
+                    transaction.world_state.node.uid,
+                    new_node.uid,
+                    edge_type=JumpType.Transaction,
+                    condition=None,
+                )
+            )
+        new_node.constraints = global_state.world_state.constraints
+
+    global_state.world_state.transaction_sequence.append(transaction)
+    global_state.node = new_node
+    new_node.states.append(global_state)
+    laser_evm.work_list.append(global_state)
+
+
+def execute_transaction(*args, **kwargs):
+    """
+    Chooses the transaction type based on callee address and
+    executes the transaction
+    """
+    laser_evm = args[0]
+    if kwargs["callee_address"] == "":
+        for ws in laser_evm.open_states[:]:
+            execute_contract_creation(
+                laser_evm=laser_evm,
+                contract_initialization_code=kwargs["data"],
+                world_state=ws,
+            )
+        return
+
+    execute_message_call(
+        laser_evm=laser_evm,
+        callee_address=symbol_factory.BitVecVal(int(kwargs["callee_address"], 16), 256),
+    )
diff --git a/mythril_sol/laser/ethereum/transaction/transaction_models.py b/mythril_sol/laser/ethereum/transaction/transaction_models.py
new file mode 100644
index 0000000000000000000000000000000000000000..c6726121d039f2911c3fc6e48320afd000ce166f
--- /dev/null
+++ b/mythril_sol/laser/ethereum/transaction/transaction_models.py
@@ -0,0 +1,286 @@
+"""This module contains the transaction models used throughout LASER's symbolic
+execution."""
+
+from copy import deepcopy
+from z3 import ExprRef
+from typing import Union, Optional
+from mythril.support.support_utils import Singleton
+from mythril.laser.ethereum.state.calldata import ConcreteCalldata
+from mythril.laser.ethereum.state.account import Account
+from mythril.laser.ethereum.state.calldata import BaseCalldata, SymbolicCalldata
+from mythril.laser.ethereum.state.return_data import ReturnData
+from mythril.laser.ethereum.state.environment import Environment
+from mythril.laser.ethereum.state.global_state import GlobalState
+from mythril.laser.ethereum.state.world_state import WorldState
+from mythril.laser.smt import symbol_factory, UGE, BitVec
+import logging
+
+log = logging.getLogger(__name__)
+
+
+class TxIdManager(object, metaclass=Singleton):
+    def __init__(self):
+        self._next_transaction_id = 0
+
+    def get_next_tx_id(self):
+        self._next_transaction_id += 1
+        return str(self._next_transaction_id)
+
+    def restart_counter(self):
+        self._next_transaction_id = 0
+
+    def set_counter(self, tx_id):
+        self._next_transaction_id = tx_id
+
+
+tx_id_manager = TxIdManager()
+
+
+class TransactionEndSignal(Exception):
+    """Exception raised when a transaction is finalized."""
+
+    def __init__(self, global_state: GlobalState, revert=False) -> None:
+        self.global_state = global_state
+        self.revert = revert
+
+
+class TransactionStartSignal(Exception):
+    """Exception raised when a new transaction is started."""
+
+    def __init__(
+        self,
+        transaction: Union["MessageCallTransaction", "ContractCreationTransaction"],
+        op_code: str,
+        global_state: GlobalState,
+    ) -> None:
+        self.transaction = transaction
+        self.op_code = op_code
+        self.global_state = global_state
+
+
+class BaseTransaction:
+    """Basic transaction class holding common data."""
+
+    def __init__(
+        self,
+        world_state: WorldState,
+        callee_account: Account = None,
+        caller: ExprRef = None,
+        call_data=None,
+        identifier: Optional[str] = None,
+        gas_price=None,
+        gas_limit=None,
+        origin=None,
+        code=None,
+        call_value=None,
+        init_call_data=True,
+        static=False,
+        base_fee=None,
+    ) -> None:
+        assert isinstance(world_state, WorldState)
+        self.world_state = world_state
+        self.id = identifier or tx_id_manager.get_next_tx_id()
+
+        self.gas_price = (
+            gas_price
+            if gas_price is not None
+            else symbol_factory.BitVecSym(f"gasprice{identifier}", 256)
+        )
+
+        self.base_fee = (
+            base_fee
+            if base_fee is not None
+            else symbol_factory.BitVecSym(f"basefee{identifier}", 256)
+        )
+
+        self.gas_limit = gas_limit
+
+        self.origin = (
+            origin
+            if origin is not None
+            else symbol_factory.BitVecSym(f"origin{identifier}", 256)
+        )
+        self.code = code
+
+        self.caller = caller
+        self.callee_account = callee_account
+        if call_data is None and init_call_data:
+            self.call_data: BaseCalldata = SymbolicCalldata(self.id)
+        else:
+            self.call_data = (
+                call_data
+                if isinstance(call_data, BaseCalldata)
+                else ConcreteCalldata(self.id, [])
+            )
+
+        self.call_value = (
+            call_value
+            if call_value is not None
+            else symbol_factory.BitVecSym(f"callvalue{identifier}", 256)
+        )
+        self.static = static
+        self.return_data: Optional[ReturnData] = None
+
+    def initial_global_state_from_environment(self, environment, active_function):
+        """
+
+        :param environment:
+        :param active_function:
+        :return:
+        """
+        # Initialize the execution environment
+        global_state = GlobalState(self.world_state, environment, None)
+        global_state.environment.active_function_name = active_function
+
+        sender = environment.sender
+        receiver = environment.active_account.address
+        value = (
+            environment.callvalue
+            if isinstance(environment.callvalue, BitVec)
+            else symbol_factory.BitVecVal(environment.callvalue, 256)
+        )
+
+        global_state.world_state.constraints.append(
+            UGE(global_state.world_state.balances[sender], value)
+        )
+        global_state.world_state.balances[receiver] += value
+        global_state.world_state.balances[sender] -= value
+
+        return global_state
+
+    def initial_global_state(self) -> GlobalState:
+        raise NotImplementedError
+
+    def __str__(self) -> str:
+        if self.callee_account is None or self.callee_account.address.symbolic is False:
+            return "{} {} from {} to {:#42x}".format(
+                self.__class__.__name__,
+                self.id,
+                self.caller,
+                int(str(self.callee_account.address)) if self.callee_account else -1,
+            )
+        else:
+            return "{} {} from {} to {}".format(
+                self.__class__.__name__,
+                self.id,
+                self.caller,
+                str(self.callee_account.address),
+            )
+
+
+class MessageCallTransaction(BaseTransaction):
+    """Transaction object models an transaction."""
+
+    def __init__(self, *args, **kwargs) -> None:
+        super().__init__(*args, **kwargs)
+
+    def initial_global_state(self) -> GlobalState:
+        """Initialize the execution environment."""
+        environment = Environment(
+            self.callee_account,
+            self.caller,
+            self.call_data,
+            self.gas_price,
+            self.call_value,
+            self.origin,
+            self.base_fee,
+            code=self.code or self.callee_account.code,
+            static=self.static,
+        )
+        return super().initial_global_state_from_environment(
+            environment, active_function="fallback"
+        )
+
+    def end(self, global_state: GlobalState, return_data=None, revert=False) -> None:
+        """
+
+        :param global_state:
+        :param return_data:
+        :param revert:
+        """
+        self.return_data = return_data
+
+        raise TransactionEndSignal(global_state, revert)
+
+
+class ContractCreationTransaction(BaseTransaction):
+    """Transaction object models an transaction."""
+
+    def __init__(
+        self,
+        world_state: WorldState,
+        caller: ExprRef = None,
+        call_data=None,
+        identifier: Optional[str] = None,
+        gas_price=None,
+        gas_limit=None,
+        origin=None,
+        code=None,
+        call_value=None,
+        contract_name=None,
+        contract_address=None,
+        base_fee=None,
+    ) -> None:
+        self.prev_world_state = deepcopy(world_state)
+        contract_address = (
+            contract_address if isinstance(contract_address, int) else None
+        )
+        callee_account = world_state.create_account(
+            0, concrete_storage=True, creator=caller.value, address=contract_address
+        )
+        callee_account.contract_name = contract_name or callee_account.contract_name
+        # init_call_data "should" be false, but it is easier to model the calldata symbolically
+        # and add logic in codecopy/codesize/calldatacopy/calldatasize than to model code "correctly"
+        super().__init__(
+            world_state=world_state,
+            callee_account=callee_account,
+            caller=caller,
+            call_data=call_data,
+            identifier=identifier,
+            gas_price=gas_price,
+            gas_limit=gas_limit,
+            origin=origin,
+            code=code,
+            call_value=call_value,
+            init_call_data=True,
+            base_fee=base_fee,
+        )
+
+    def initial_global_state(self) -> GlobalState:
+        """Initialize the execution environment."""
+        environment = Environment(
+            active_account=self.callee_account,
+            sender=self.caller,
+            calldata=self.call_data,
+            gasprice=self.gas_price,
+            callvalue=self.call_value,
+            origin=self.origin,
+            basefee=self.base_fee,
+            code=self.code,
+        )
+        return super().initial_global_state_from_environment(
+            environment, active_function="constructor"
+        )
+
+    def end(self, global_state: GlobalState, return_data=None, revert=False):
+        """
+
+        :param global_state:
+        :param return_data:
+        :param revert:
+        """
+
+        if return_data is None or return_data.size == 0:
+            self.return_data = None
+            raise TransactionEndSignal(global_state, revert=revert)
+
+        global_state.environment.active_account.code.assign_bytecode(
+            tuple(return_data.return_data)
+        )
+        return_data = str(hex(global_state.environment.active_account.address.value))
+        self.return_data: Optional[ReturnData] = ReturnData(
+            return_data, symbol_factory.BitVecVal(len(return_data) // 2, 256)
+        )
+        assert global_state.environment.active_account.code.instruction_list != []
+
+        raise TransactionEndSignal(global_state, revert=revert)
diff --git a/mythril_sol/laser/ethereum/tx_prioritiser/__init__.py b/mythril_sol/laser/ethereum/tx_prioritiser/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..2c078ed771b917feb94687a9402920f56aa36123
--- /dev/null
+++ b/mythril_sol/laser/ethereum/tx_prioritiser/__init__.py
@@ -0,0 +1 @@
+from .rf_prioritiser import RfTxPrioritiser
diff --git a/mythril_sol/laser/ethereum/tx_prioritiser/rf_prioritiser.py b/mythril_sol/laser/ethereum/tx_prioritiser/rf_prioritiser.py
new file mode 100644
index 0000000000000000000000000000000000000000..0820e62c6b5f690678f9546fdee211b45e751cf5
--- /dev/null
+++ b/mythril_sol/laser/ethereum/tx_prioritiser/rf_prioritiser.py
@@ -0,0 +1,62 @@
+import pickle
+from sklearn.ensemble import RandomForestClassifier
+import numpy as np
+from itertools import chain
+
+import logging
+
+log = logging.getLogger(__name__)
+
+
+class RfTxPrioritiser:
+    def __init__(self, contract, depth=3, model_path=None):
+        self.rf_path = None
+        self.contract = contract
+        self.depth = depth
+
+        with open(model_path, "rb") as file:
+            self.model = pickle.load(file)
+        if self.contract.features is None:
+            log.info(
+                "There are no available features. Rf based Tx Prioritisation turned off."
+            )
+            return None
+        self.preprocessed_features = self.preprocess_features(self.contract.features)
+        self.recent_predictions = []
+
+    def preprocess_features(self, features_dict):
+        flat_features = []
+        for function_name, function_features in features_dict.items():
+            function_features_values = list(function_features.values())
+            flat_features.extend(function_features_values)
+
+        return np.array(flat_features).reshape(1, -1)
+
+    def __next__(self, address):
+        predictions_sequence = []
+        current_features = np.concatenate(
+            [
+                self.preprocessed_features,
+                np.array(self.recent_predictions).reshape(1, -1),
+            ],
+            axis=1,
+        )
+
+        for i in range(self.depth):
+            predictions = self.model.predict_proba(current_features)
+            most_likely_next_tx = np.argmax(predictions, axis=1)[0]
+            predictions_sequence.append(most_likely_next_tx)
+            current_features = np.concatenate(
+                [
+                    self.preprocessed_features,
+                    np.array(
+                        self.recent_predictions + predictions_sequence[: i + 1]
+                    ).reshape(1, -1),
+                ],
+                axis=1,
+            )
+
+        self.recent_predictions.extend(predictions_sequence)
+        while len(self.recent_predictions) > self.depth:
+            self.recent_predictions.pop(0)
+        return predictions_sequence
diff --git a/mythril_sol/laser/ethereum/util.py b/mythril_sol/laser/ethereum/util.py
new file mode 100644
index 0000000000000000000000000000000000000000..d0be0d948ebfd68c305bfd2b7312517057cba1a0
--- /dev/null
+++ b/mythril_sol/laser/ethereum/util.py
@@ -0,0 +1,184 @@
+"""This module contains various utility conversion functions and constants for
+LASER."""
+import re
+from typing import Dict, List, Union, TYPE_CHECKING, cast
+
+if TYPE_CHECKING:
+    from mythril.laser.ethereum.state.machine_state import MachineState
+    from mythril.laser.ethereum.state.global_state import GlobalState
+from mythril.laser.smt import BitVec, Bool, Expression, If, simplify, symbol_factory
+
+TT256 = 2**256
+TT256M1 = 2**256 - 1
+TT255 = 2**255
+
+
+def safe_decode(hex_encoded_string: str) -> bytes:
+    """
+
+    :param hex_encoded_string:
+    :return:
+    """
+    if hex_encoded_string.startswith("0x"):
+        return bytes.fromhex(hex_encoded_string[2:])
+    else:
+        return bytes.fromhex(hex_encoded_string)
+
+
+def insert_ret_val(global_state: "GlobalState"):
+    retval = global_state.new_bitvec(
+        "retval_" + str(global_state.get_current_instruction()["address"]), 256
+    )
+    global_state.mstate.stack.append(retval)
+    global_state.world_state.constraints.append(retval == 1)
+
+
+def to_signed(i: int) -> int:
+    """
+
+    :param i:
+    :return:
+    """
+    return i if i < TT255 else i - TT256
+
+
+def get_instruction_index(
+    instruction_list: List[Dict], address: int
+) -> Union[int, None]:
+    """
+
+    :param instruction_list:
+    :param address:
+    :return:
+    """
+    index = 0
+    for instr in instruction_list:
+        if instr["address"] >= address:
+            return index
+        index += 1
+    return None
+
+
+def get_trace_line(instr: Dict, state: "MachineState") -> str:
+    """
+
+    :param instr:
+    :param state:
+    :return:
+    """
+    stack = str(state.stack[::-1])
+    # stack = re.sub("(\d+)",   lambda m: hex(int(m.group(1))), stack)
+    stack = re.sub("\n", "", stack)
+    return str(instr["address"]) + " " + instr["opcode"] + "\tSTACK: " + stack
+
+
+def pop_bitvec(state: "MachineState") -> BitVec:
+    """
+
+    :param state:
+    :return:
+    """
+    # pop one element from stack, converting boolean expressions and
+    # concrete Python variables to BitVecVal
+
+    item = state.stack.pop()
+
+    if isinstance(item, Bool):
+        return If(
+            cast(Bool, item),
+            symbol_factory.BitVecVal(1, 256),
+            symbol_factory.BitVecVal(0, 256),
+        )
+    elif isinstance(item, int):
+        return symbol_factory.BitVecVal(item, 256)
+    else:
+        item = cast(BitVec, item)
+        return simplify(item)
+
+
+def get_concrete_int(item: Union[int, Expression]) -> int:
+    """
+
+    :param item:
+    :return:
+    """
+    if isinstance(item, int):
+        return item
+    elif isinstance(item, BitVec):
+        if item.symbolic:
+            raise TypeError("Got a symbolic BitVecRef")
+        return item.value
+    elif isinstance(item, Bool):
+        value = item.value
+        if value is None:
+            raise TypeError("Symbolic boolref encountered")
+        return value
+
+    assert False, "Unhandled type {} encountered".format(str(type(item)))
+
+
+def concrete_int_from_bytes(
+    concrete_bytes: Union[List[Union[BitVec, int]], bytes], start_index: int
+) -> int:
+    """
+
+    :param concrete_bytes:
+    :param start_index:
+    :return:
+    """
+    concrete_bytes = [
+        byte.value if isinstance(byte, BitVec) and not byte.symbolic else byte
+        for byte in concrete_bytes
+    ]
+    integer_bytes = concrete_bytes[start_index : start_index + 32]
+
+    # The below statement is expected to fail in some circumstances whose error is caught
+    return int.from_bytes(integer_bytes, byteorder="big")  # type: ignore
+
+
+def concrete_int_to_bytes(val):
+    """
+
+    :param val:
+    :return:
+    """
+    # logging.debug("concrete_int_to_bytes " + str(val))
+    if isinstance(val, int):
+        return val.to_bytes(32, byteorder="big")
+    return simplify(val).value.to_bytes(32, byteorder="big")
+
+
+def bytearray_to_int(arr):
+    """
+
+    :param arr:
+    :return:
+    """
+    o = 0
+    for a in arr:
+        o = (o << 8) + a
+    return o
+
+
+def extract_copy(
+    data: bytearray, mem: bytearray, memstart: int, datastart: int, size: int
+):
+    for i in range(size):
+        if datastart + i < len(data):
+            mem[memstart + i] = data[datastart + i]
+        else:
+            mem[memstart + i] = 0
+
+
+def extract32(data: bytearray, i: int) -> int:
+    """
+
+    :param data:
+    :param i:
+    :return:
+    """
+    if i >= len(data):
+        return 0
+    o = data[i : min(i + 32, len(data))]
+    o.extend(bytearray(32 - len(o)))
+    return bytearray_to_int(o)
diff --git a/mythril_sol/laser/execution_info.py b/mythril_sol/laser/execution_info.py
new file mode 100644
index 0000000000000000000000000000000000000000..641ff160da76842925e3dd033043f58c5c31f2e6
--- /dev/null
+++ b/mythril_sol/laser/execution_info.py
@@ -0,0 +1,11 @@
+from abc import ABC, abstractmethod
+
+
+class ExecutionInfo(ABC):
+    @abstractmethod
+    def as_dict(self):
+        """Returns a dictionary with the execution info contained in this object
+
+        The returned dictionary only uses primitive types.
+        """
+        pass
diff --git a/mythril_sol/laser/plugin/__init__.py b/mythril_sol/laser/plugin/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..40bd25fbe1886bc95f6087409292d60307243d8b
--- /dev/null
+++ b/mythril_sol/laser/plugin/__init__.py
@@ -0,0 +1,20 @@
+""" Laser plugins
+
+This module contains everything to do with laser plugins
+
+Laser plugins are a way of extending laser's functionality without complicating the core business logic.
+Different features that have been implemented in the form of plugins are:
+- benchmarking
+- path pruning
+
+Plugins also provide a way to implement optimisations outside of the mythril code base and to inject them.
+The api that laser currently provides is still unstable and will probably change to suit our needs
+as more plugins get developed.
+
+For the implementation of plugins the following modules are of interest:
+- laser.plugins.plugin
+- laser.plugins.signals
+- laser.svm
+
+Which show the basic interfaces with which plugins are able to interact
+"""
diff --git a/mythril_sol/laser/plugin/builder.py b/mythril_sol/laser/plugin/builder.py
new file mode 100644
index 0000000000000000000000000000000000000000..5f37c1d298a0230c5879aebebec817b74c043649
--- /dev/null
+++ b/mythril_sol/laser/plugin/builder.py
@@ -0,0 +1,20 @@
+from mythril.laser.plugin.interface import LaserPlugin
+
+from abc import ABC, abstractmethod
+
+
+class PluginBuilder(ABC):
+    """PluginBuilder
+
+    The plugin builder interface enables construction of Laser plugins
+    """
+
+    name = "Default Plugin Name"
+
+    def __init__(self):
+        self.enabled = True
+
+    @abstractmethod
+    def __call__(self, *args, **kwargs) -> LaserPlugin:
+        """Constructs the plugin"""
+        pass
diff --git a/mythril_sol/laser/plugin/interface.py b/mythril_sol/laser/plugin/interface.py
new file mode 100644
index 0000000000000000000000000000000000000000..02eb29c2bbe7b7cd6dd45af7e0685d4ea26144fe
--- /dev/null
+++ b/mythril_sol/laser/plugin/interface.py
@@ -0,0 +1,23 @@
+from mythril.laser.ethereum.svm import LaserEVM
+
+
+class LaserPlugin:
+    """Base class for laser plugins
+
+    Functionality in laser that the symbolic execution process does not need to depend on
+    can be implemented in the form of a laser plugin.
+
+    Laser plugins implement the function initialize(symbolic_vm) which is called with the laser virtual machine
+    when they are loaded.
+    Regularly a plugin will introduce several hooks into laser in this function
+
+    Plugins can direct actions by raising Signals defined in mythril.laser.ethereum.plugins.signals
+    For example, a pruning plugin might raise the PluginSkipWorldState signal.
+    """
+
+    def initialize(self, symbolic_vm: LaserEVM) -> None:
+        """Initializes this plugin on the symbolic virtual machine
+
+        :param symbolic_vm: symbolic virtual machine to initialize the laser plugin on
+        """
+        raise NotImplementedError
diff --git a/mythril_sol/laser/plugin/loader.py b/mythril_sol/laser/plugin/loader.py
new file mode 100644
index 0000000000000000000000000000000000000000..ad8b743a5bc8fa951f0857863526ae118d0710e7
--- /dev/null
+++ b/mythril_sol/laser/plugin/loader.py
@@ -0,0 +1,75 @@
+import logging
+from typing import Dict, List, Optional
+
+from mythril.laser.ethereum.svm import LaserEVM
+from mythril.laser.plugin.interface import LaserPlugin
+from mythril.laser.plugin.builder import PluginBuilder
+from mythril.support.support_utils import Singleton
+
+log = logging.getLogger(__name__)
+
+
+class LaserPluginLoader(object, metaclass=Singleton):
+    """
+    The LaserPluginLoader is used to abstract the logic relating to plugins.
+    Components outside of laser thus don't have to be aware of the interface that plugins provide
+    """
+
+    def __init__(self) -> None:
+        """Initializes the plugin loader"""
+        self.laser_plugin_builders: Dict[str, PluginBuilder] = {}
+        self.plugin_args: Dict[str, Dict] = {}
+        self.plugin_list: Dict[str, LaserPlugin] = {}
+
+    def add_args(self, plugin_name, **kwargs):
+        self.plugin_args[plugin_name] = kwargs
+
+    def load(self, plugin_builder: PluginBuilder) -> None:
+        """Enables a Laser Plugin
+
+        :param plugin_builder: Builder that constructs the plugin
+        """
+        log.info(f"Loading laser plugin: {plugin_builder.name}")
+        if plugin_builder.name in self.laser_plugin_builders:
+            log.warning(
+                f"Laser plugin with name {plugin_builder.name} was already loaded, skipping..."
+            )
+            return
+        self.laser_plugin_builders[plugin_builder.name] = plugin_builder
+
+    def is_enabled(self, plugin_name: str) -> bool:
+        """Returns whether the plugin is loaded in the symbolic_vm
+
+        :param plugin_name: Name of the plugin to check
+        """
+        if plugin_name not in self.laser_plugin_builders:
+            return False
+        else:
+            return self.laser_plugin_builders[plugin_name].enabled
+
+    def enable(self, plugin_name: str):
+        if plugin_name not in self.laser_plugin_builders:
+            return ValueError(f"Plugin with name: {plugin_name} was not loaded")
+        self.laser_plugin_builders[plugin_name].enabled = True
+
+    def instrument_virtual_machine(
+        self, symbolic_vm: LaserEVM, with_plugins: Optional[List[str]]
+    ):
+        """Load enabled plugins into the passed symbolic virtual machine
+        :param symbolic_vm: The virtual machine to instrument the plugins with
+        :param with_plugins: Override the globally enabled/disabled builders and load all plugins in the list
+        """
+        for plugin_name, plugin_builder in self.laser_plugin_builders.items():
+            enabled = (
+                plugin_builder.enabled
+                if not with_plugins
+                else plugin_name in with_plugins
+            )
+
+            if not enabled:
+                continue
+
+            log.info(f"Instrumenting symbolic vm with plugin: {plugin_name}")
+            plugin = plugin_builder(**self.plugin_args.get(plugin_name, {}))
+            plugin.initialize(symbolic_vm)
+            self.plugin_list[plugin_name] = plugin
diff --git a/mythril_sol/laser/plugin/plugins/__init__.py b/mythril_sol/laser/plugin/plugins/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..ee9fdc6a2d9e44ecf4c804183fbc6c85a85e2fa5
--- /dev/null
+++ b/mythril_sol/laser/plugin/plugins/__init__.py
@@ -0,0 +1,13 @@
+""" Plugin implementations
+
+This module contains the implementation of some features
+
+- benchmarking
+- pruning
+"""
+from mythril.laser.plugin.plugins.benchmark import BenchmarkPluginBuilder
+from mythril.laser.plugin.plugins.coverage.coverage_plugin import CoveragePluginBuilder
+from mythril.laser.plugin.plugins.dependency_pruner import DependencyPrunerBuilder
+from mythril.laser.plugin.plugins.mutation_pruner import MutationPrunerBuilder
+from mythril.laser.plugin.plugins.call_depth_limiter import CallDepthLimitBuilder
+from mythril.laser.plugin.plugins.instruction_profiler import InstructionProfilerBuilder
diff --git a/mythril_sol/laser/plugin/plugins/benchmark.py b/mythril_sol/laser/plugin/plugins/benchmark.py
new file mode 100644
index 0000000000000000000000000000000000000000..c268ad6b69d05371cfca4781ee550ff60de7ce97
--- /dev/null
+++ b/mythril_sol/laser/plugin/plugins/benchmark.py
@@ -0,0 +1,94 @@
+from mythril.laser.ethereum.svm import LaserEVM
+from mythril.laser.plugin.interface import LaserPlugin
+from mythril.laser.plugin.builder import PluginBuilder
+from time import time
+import matplotlib.pyplot as plt
+import logging
+
+log = logging.getLogger(__name__)
+
+
+class BenchmarkPluginBuilder(PluginBuilder):
+    name = "benchmark"
+
+    def __call__(self, *args, **kwargs):
+        return BenchmarkPlugin()
+
+
+# TODO: introduce dependency on coverage plugin
+class BenchmarkPlugin(LaserPlugin):
+    """Benchmark Plugin
+
+    This plugin aggregates the following information:
+    - duration
+    - code coverage over time
+    - final code coverage
+    - total number of executed instructions
+
+    """
+
+    def __init__(self, name=None):
+        """Creates BenchmarkPlugin
+
+        :param name: name of this benchmark, used for storing the results
+        """
+        self.nr_of_executed_insns = 0
+        self.begin = None
+        self.end = None
+        self.coverage = {}
+        self.name = name
+
+    def initialize(self, symbolic_vm: LaserEVM):
+        """Initializes the BenchmarkPlugin
+
+        Introduces hooks in symbolic_vm to track the desired values
+        :param symbolic_vm: Symbolic virtual machine to analyze
+        """
+        self._reset()
+
+        @symbolic_vm.laser_hook("execute_state")
+        def execute_state_hook(_):
+            current_time = time() - self.begin
+            self.nr_of_executed_insns += 1
+
+            for key, value in symbolic_vm.coverage.items():
+                try:
+                    self.coverage[key][current_time] = sum(value[1]) * 100 / value[0]
+                except KeyError:
+                    self.coverage[key] = {}
+                    self.coverage[key][current_time] = sum(value[1]) * 100 / value[0]
+
+        @symbolic_vm.laser_hook("start_sym_exec")
+        def start_sym_exec_hook():
+            self.begin = time()
+
+        @symbolic_vm.laser_hook("stop_sym_exec")
+        def stop_sym_exec_hook():
+            self.end = time()
+
+            self._write_to_graph()
+            self._store_report()
+
+    def _reset(self):
+        """Reset this plugin"""
+        self.nr_of_executed_insns = 0
+        self.begin = None
+        self.end = None
+        self.coverage = {}
+
+    def _store_report(self):
+        """Store the results of this plugin"""
+        pass
+
+    def _write_to_graph(self):
+        """Write the coverage results to a graph"""
+        traces = []
+        for _, trace_data in self.coverage.items():
+            traces += [list(trace_data.keys()), list(trace_data.values()), "r--"]
+
+        plt.plot(*traces)
+        plt.axis([0, self.end - self.begin, 0, 100])
+        plt.xlabel("Duration (seconds)")
+        plt.ylabel("Coverage (percentage)")
+
+        plt.savefig("{}.png".format(self.name))
diff --git a/mythril_sol/laser/plugin/plugins/call_depth_limiter.py b/mythril_sol/laser/plugin/plugins/call_depth_limiter.py
new file mode 100644
index 0000000000000000000000000000000000000000..5a2eb8befbcb39165763fef9de001e5bc7cfc65d
--- /dev/null
+++ b/mythril_sol/laser/plugin/plugins/call_depth_limiter.py
@@ -0,0 +1,30 @@
+from mythril.laser.plugin.signals import PluginSkipState
+from mythril.laser.plugin.interface import LaserPlugin
+from mythril.laser.plugin.builder import PluginBuilder
+from mythril.laser.ethereum.state.global_state import GlobalState
+from mythril.laser.ethereum.svm import LaserEVM
+
+
+class CallDepthLimitBuilder(PluginBuilder):
+    name = "call-depth-limit"
+
+    def __call__(self, *args, **kwargs):
+        return CallDepthLimit(kwargs["call_depth_limit"])
+
+
+class CallDepthLimit(LaserPlugin):
+    def __init__(self, call_depth_limit: int):
+        self.call_depth_limit = call_depth_limit
+
+    def initialize(self, symbolic_vm: LaserEVM):
+        """Initializes the mutation pruner
+
+        Introduces hooks for SSTORE operations
+        :param symbolic_vm:
+        :return:
+        """
+
+        @symbolic_vm.pre_hook("CALL")
+        def sstore_mutator_hook(global_state: GlobalState):
+            if len(global_state.transaction_stack) - 1 == self.call_depth_limit:
+                raise PluginSkipState
diff --git a/mythril_sol/laser/plugin/plugins/coverage/__init__.py b/mythril_sol/laser/plugin/plugins/coverage/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..8afdaf090f49aa6a3ad349ec4567e231df59fc3a
--- /dev/null
+++ b/mythril_sol/laser/plugin/plugins/coverage/__init__.py
@@ -0,0 +1,3 @@
+from mythril.laser.plugin.plugins.coverage.coverage_plugin import (
+    InstructionCoveragePlugin,
+)
diff --git a/mythril_sol/laser/plugin/plugins/coverage/coverage_plugin.py b/mythril_sol/laser/plugin/plugins/coverage/coverage_plugin.py
new file mode 100644
index 0000000000000000000000000000000000000000..323fd91827e9166972c6e378728828b3021bee7c
--- /dev/null
+++ b/mythril_sol/laser/plugin/plugins/coverage/coverage_plugin.py
@@ -0,0 +1,117 @@
+from mythril.laser.ethereum.svm import LaserEVM
+from mythril.laser.plugin.interface import LaserPlugin
+from mythril.laser.plugin.builder import PluginBuilder
+from mythril.laser.ethereum.state.global_state import GlobalState
+
+from typing import Dict, Tuple, List
+
+import logging
+
+log = logging.getLogger(__name__)
+
+
+class CoveragePluginBuilder(PluginBuilder):
+    name = "coverage"
+
+    def __call__(self, *args, **kwargs):
+        return InstructionCoveragePlugin()
+
+
+class InstructionCoveragePlugin(LaserPlugin):
+    """InstructionCoveragePlugin
+
+    This plugin measures the instruction coverage of mythril.
+    The instruction coverage is the ratio between the instructions that have been executed
+    and the total amount of instructions.
+
+    Note that with lazy constraint solving enabled that this metric will be "unsound" as
+    reachability will not be considered for the calculation of instruction coverage.
+
+    """
+
+    def __init__(self):
+        self.coverage: Dict[str, Tuple[int, List[bool]]] = {}
+        self.initial_coverage = 0
+        self.tx_id = 0
+
+    def initialize(self, symbolic_vm: LaserEVM):
+        """Initializes the instruction coverage plugin
+
+        Introduces hooks for each instruction
+        :param symbolic_vm:
+        :return:
+        """
+        self.coverage = {}
+        self.initial_coverage = 0
+        self.tx_id = 0
+
+        @symbolic_vm.laser_hook("stop_sym_exec")
+        def stop_sym_exec_hook():
+            # Print results
+            for code, code_cov in self.coverage.items():
+                if sum(code_cov[1]) == 0 and code_cov[0] == 0:
+                    cov_percentage = 0
+                else:
+                    cov_percentage = sum(code_cov[1]) / float(code_cov[0]) * 100
+                string_code = code
+                if isinstance(code, tuple):
+                    try:
+                        string_code = bytearray(code).hex()
+                    except TypeError:
+                        string_code = "<symbolic code>"
+                log.info(
+                    "Achieved {:.2f}% coverage for code: {}".format(
+                        cov_percentage, string_code
+                    )
+                )
+
+        @symbolic_vm.laser_hook("execute_state")
+        def execute_state_hook(global_state: GlobalState):
+            # Record coverage
+            code = global_state.environment.code.bytecode
+
+            if code not in self.coverage.keys():
+                number_of_instructions = len(
+                    global_state.environment.code.instruction_list
+                )
+                self.coverage[code] = (
+                    number_of_instructions,
+                    [False] * number_of_instructions,
+                )
+            if global_state.mstate.pc >= len(self.coverage[code][1]):
+                # Instruction beyond the instruction list are considered as STOP by EVM
+                # and can be ignored
+                return
+            self.coverage[code][1][global_state.mstate.pc] = True
+
+        @symbolic_vm.laser_hook("start_sym_trans")
+        def execute_start_sym_trans_hook():
+            self.initial_coverage = self._get_covered_instructions()
+
+        @symbolic_vm.laser_hook("stop_sym_trans")
+        def execute_stop_sym_trans_hook():
+            end_coverage = self._get_covered_instructions()
+            log.info(
+                "Number of new instructions covered in tx %d: %d"
+                % (self.tx_id, end_coverage - self.initial_coverage)
+            )
+            self.tx_id += 1
+
+    def _get_covered_instructions(self) -> int:
+        """Gets the total number of covered instructions for all accounts in
+        the svm.
+        :return:
+        """
+        total_covered_instructions = 0
+        for _, cv in self.coverage.items():
+            total_covered_instructions += sum(cv[1])
+        return total_covered_instructions
+
+    def is_instruction_covered(self, bytecode, index):
+        if bytecode not in self.coverage.keys():
+            return False
+
+        try:
+            return self.coverage[bytecode][index]
+        except IndexError:
+            return False
diff --git a/mythril_sol/laser/plugin/plugins/coverage/coverage_strategy.py b/mythril_sol/laser/plugin/plugins/coverage/coverage_strategy.py
new file mode 100644
index 0000000000000000000000000000000000000000..a8b7809df4e66d71125454b4e0b51a6ea0fe996f
--- /dev/null
+++ b/mythril_sol/laser/plugin/plugins/coverage/coverage_strategy.py
@@ -0,0 +1,41 @@
+from mythril.laser.ethereum.strategy import BasicSearchStrategy
+from mythril.laser.ethereum.state.global_state import GlobalState
+from mythril.laser.plugin.plugins.coverage import InstructionCoveragePlugin
+
+
+class CoverageStrategy(BasicSearchStrategy):
+    """Implements a instruction coverage based search strategy
+
+    This strategy is quite simple and effective, it prioritizes the execution of instructions that have previously been
+    uncovered. Once there is no such global state left in the work list, it will resort to using the super_strategy.
+
+    This strategy is intended to be used "on top of" another one
+    """
+
+    def __init__(
+        self,
+        super_strategy: BasicSearchStrategy,
+        instruction_coverage_plugin: InstructionCoveragePlugin,
+    ):
+        self.super_strategy = super_strategy
+        self.instruction_coverage_plugin = instruction_coverage_plugin
+        BasicSearchStrategy.__init__(
+            self, super_strategy.work_list, super_strategy.max_depth
+        )
+
+    def get_strategic_global_state(self) -> GlobalState:
+        """
+        Returns the first uncovered global state in the work list if it exists,
+        otherwise super_strategy.get_strategic_global_state() is returned.
+        """
+        for global_state in self.work_list:
+            if not self._is_covered(global_state):
+                self.work_list.remove(global_state)
+                return global_state
+        return self.super_strategy.get_strategic_global_state()
+
+    def _is_covered(self, global_state: GlobalState) -> bool:
+        """Checks if the instruction for the given global state is already covered"""
+        bytecode = global_state.environment.code.bytecode
+        index = global_state.mstate.pc
+        return self.instruction_coverage_plugin.is_instruction_covered(bytecode, index)
diff --git a/mythril_sol/laser/plugin/plugins/dependency_pruner.py b/mythril_sol/laser/plugin/plugins/dependency_pruner.py
new file mode 100644
index 0000000000000000000000000000000000000000..c3c49878cf0669c2108e874add738a0c0329b196
--- /dev/null
+++ b/mythril_sol/laser/plugin/plugins/dependency_pruner.py
@@ -0,0 +1,337 @@
+from mythril.laser.ethereum.svm import LaserEVM
+from mythril.laser.plugin.interface import LaserPlugin
+from mythril.laser.plugin.builder import PluginBuilder
+from mythril.laser.plugin.signals import PluginSkipState
+from mythril.laser.plugin.plugins.plugin_annotations import (
+    DependencyAnnotation,
+    WSDependencyAnnotation,
+)
+from mythril.laser.ethereum.state.global_state import GlobalState
+from mythril.laser.ethereum.transaction.transaction_models import (
+    ContractCreationTransaction,
+)
+from mythril.exceptions import UnsatError
+from mythril.analysis import solver
+from typing import cast, List, Dict, Set
+import logging
+
+
+log = logging.getLogger(__name__)
+
+
+def get_dependency_annotation(state: GlobalState) -> DependencyAnnotation:
+    """Returns a dependency annotation
+
+    :param state: A global state object
+    """
+
+    annotations = cast(
+        List[DependencyAnnotation], list(state.get_annotations(DependencyAnnotation))
+    )
+
+    if len(annotations) == 0:
+
+        """FIXME: Hack for carrying over state annotations from the STOP and RETURN states of
+        the previous states. The states are pushed on a stack in the world state annotation
+        and popped off the stack in the subsequent iteration. This might break if any
+        other strategy than bfs is used (?).
+        """
+
+        try:
+            world_state_annotation = get_ws_dependency_annotation(state)
+            annotation = world_state_annotation.annotations_stack.pop()
+        except IndexError:
+            annotation = DependencyAnnotation()
+
+        state.annotate(annotation)
+    else:
+        annotation = annotations[0]
+
+    return annotation
+
+
+def get_ws_dependency_annotation(state: GlobalState) -> WSDependencyAnnotation:
+    """Returns the world state annotation
+
+    :param state: A global state object
+    """
+
+    annotations = cast(
+        List[WSDependencyAnnotation],
+        list(state.world_state.get_annotations(WSDependencyAnnotation)),
+    )
+
+    if len(annotations) == 0:
+        annotation = WSDependencyAnnotation()
+        state.world_state.annotate(annotation)
+    else:
+        annotation = annotations[0]
+
+    return annotation
+
+
+class DependencyPrunerBuilder(PluginBuilder):
+    name = "dependency-pruner"
+
+    def __call__(self, *args, **kwargs):
+        return DependencyPruner()
+
+
+class DependencyPruner(LaserPlugin):
+    """Dependency Pruner Plugin
+
+    For every basic block, this plugin keeps a list of storage locations that
+    are accessed (read) in the execution path containing that block. This map
+    is built up over the whole symbolic execution run.
+
+    After the initial build up of the map in the first transaction, blocks are
+    executed only if any of the storage locations written to in the previous
+    transaction can have an effect on that block or any of its successors.
+    """
+
+    def __init__(self):
+        """Creates DependencyPruner"""
+        self._reset()
+
+    def _reset(self):
+        self.iteration = 0
+        self.calls_on_path: Dict[int, bool] = {}
+        self.sloads_on_path: Dict[int, List[object]] = {}
+        self.sstores_on_path: Dict[int, List[object]] = {}
+        self.storage_accessed_global: Set = set()
+
+    def update_sloads(self, path: List[int], target_location: object) -> None:
+        """Update the dependency map for the block offsets on the given path.
+
+        :param path
+        :param target_location
+        """
+
+        for address in path:
+            if address in self.sloads_on_path:
+                if target_location not in self.sloads_on_path[address]:
+                    self.sloads_on_path[address].append(target_location)
+            else:
+                self.sloads_on_path[address] = [target_location]
+
+    def update_sstores(self, path: List[int], target_location: object) -> None:
+        """Update the dependency map for the block offsets on the given path.
+
+        :param path
+        :param target_location
+        """
+
+        for address in path:
+            if address in self.sstores_on_path:
+                if target_location not in self.sstores_on_path[address]:
+                    self.sstores_on_path[address].append(target_location)
+            else:
+                self.sstores_on_path[address] = [target_location]
+
+    def update_calls(self, path: List[int]) -> None:
+        """Update the dependency map for the block offsets on the given path.
+
+        :param path
+        :param target_location
+        """
+
+        for address in path:
+            if address in self.sstores_on_path:
+                self.calls_on_path[address] = True
+
+    def wanna_execute(self, address: int, annotation: DependencyAnnotation) -> bool:
+        """Decide whether the basic block starting at 'address' should be executed.
+
+        :param address
+        :param storage_write_cache
+        """
+
+        storage_write_cache = annotation.get_storage_write_cache(self.iteration - 1)
+
+        if address in self.calls_on_path:
+            return True
+
+        # Skip "pure" paths that don't have any dependencies.
+
+        if address not in self.sloads_on_path:
+            return False
+
+        # Execute the path if there are state modifications along it that *could* be relevant
+
+        if address in self.storage_accessed_global:
+            for location in self.sstores_on_path:
+                try:
+                    solver.get_model((location == address,))
+                    return True
+
+                except UnsatError:
+                    continue
+
+        dependencies = self.sloads_on_path[address]
+
+        # Execute the path if there's any dependency on state modified in the previous transaction
+
+        for location in storage_write_cache:
+            for dependency in dependencies:
+
+                # Is there a known read operation along this path that matches a write in the previous transaction?
+
+                try:
+                    solver.get_model((location == dependency,))
+                    return True
+
+                except UnsatError:
+                    continue
+
+            # Has the *currently executed* path been influenced by a write operation in the previous transaction?
+
+            for dependency in annotation.storage_loaded:
+                try:
+                    solver.get_model((location == dependency,))
+                    return True
+                except UnsatError:
+                    continue
+
+        return False
+
+    def initialize(self, symbolic_vm: LaserEVM) -> None:
+        """Initializes the DependencyPruner
+
+        :param symbolic_vm
+        """
+        self._reset()
+
+        @symbolic_vm.laser_hook("start_sym_trans")
+        def start_sym_trans_hook():
+            self.iteration += 1
+
+        @symbolic_vm.post_hook("JUMP")
+        def jump_hook(state: GlobalState):
+            try:
+                address = state.get_current_instruction()["address"]
+            except IndexError:
+                raise PluginSkipState
+            annotation = get_dependency_annotation(state)
+            annotation.path.append(address)
+
+            _check_basic_block(address, annotation)
+
+        @symbolic_vm.post_hook("JUMPI")
+        def jumpi_hook(state: GlobalState):
+            try:
+                address = state.get_current_instruction()["address"]
+            except IndexError:
+                raise PluginSkipState
+            annotation = get_dependency_annotation(state)
+            annotation.path.append(address)
+
+            _check_basic_block(address, annotation)
+
+        @symbolic_vm.pre_hook("SSTORE")
+        def sstore_hook(state: GlobalState):
+            annotation = get_dependency_annotation(state)
+
+            location = state.mstate.stack[-1]
+
+            self.update_sstores(annotation.path, location)
+            annotation.extend_storage_write_cache(self.iteration, location)
+
+        @symbolic_vm.pre_hook("SLOAD")
+        def sload_hook(state: GlobalState):
+            annotation = get_dependency_annotation(state)
+            location = state.mstate.stack[-1]
+
+            if location not in annotation.storage_loaded:
+                annotation.storage_loaded.add(location)
+
+            # We backwards-annotate the path here as sometimes execution never reaches a stop or return
+            # (and this may change in a future transaction).
+
+            self.update_sloads(annotation.path, location)
+            self.storage_accessed_global.add(location)
+
+        @symbolic_vm.pre_hook("CALL")
+        def call_hook(state: GlobalState):
+            annotation = get_dependency_annotation(state)
+
+            self.update_calls(annotation.path)
+            annotation.has_call = True
+
+        @symbolic_vm.pre_hook("STATICCALL")
+        def staticcall_hook(state: GlobalState):
+            annotation = get_dependency_annotation(state)
+
+            self.update_calls(annotation.path)
+            annotation.has_call = True
+
+        @symbolic_vm.pre_hook("STOP")
+        def stop_hook(state: GlobalState):
+            _transaction_end(state)
+
+        @symbolic_vm.pre_hook("RETURN")
+        def return_hook(state: GlobalState):
+            _transaction_end(state)
+
+        def _transaction_end(state: GlobalState) -> None:
+            """When a stop or return is reached, the storage locations read along the path are entered into
+            the dependency map for all nodes encountered in this path.
+
+            :param state:
+            """
+
+            annotation = get_dependency_annotation(state)
+
+            for index in annotation.storage_loaded:
+                self.update_sloads(annotation.path, index)
+
+            for index in annotation.storage_written:
+                self.update_sstores(annotation.path, index)
+
+            if annotation.has_call:
+                self.update_calls(annotation.path)
+
+        def _check_basic_block(address: int, annotation: DependencyAnnotation):
+            """This method is where the actual pruning happens.
+
+            :param address: Start address (bytecode offset) of the block
+            :param annotation:
+            """
+
+            # Don't skip any blocks in the contract creation transaction
+            if self.iteration < 2:
+                return
+
+            # Don't skip newly discovered blocks
+            if address not in annotation.blocks_seen:
+                annotation.blocks_seen.add(address)
+                return
+
+            if self.wanna_execute(address, annotation):
+                return
+            else:
+                log.debug(
+                    "Skipping state: Storage slots {} not read in block at address {}, function".format(
+                        annotation.get_storage_write_cache(self.iteration - 1), address
+                    )
+                )
+
+                raise PluginSkipState
+
+        @symbolic_vm.laser_hook("add_world_state")
+        def world_state_filter_hook(state: GlobalState):
+
+            if isinstance(state.current_transaction, ContractCreationTransaction):
+                # Reset iteration variable
+                self.iteration = 0
+                return
+
+            world_state_annotation = get_ws_dependency_annotation(state)
+            annotation = get_dependency_annotation(state)
+
+            # Reset the state annotation except for storage written which is carried on to
+            # the next transaction
+
+            annotation.path = [0]
+            annotation.storage_loaded = set()
+
+            world_state_annotation.annotations_stack.append(annotation)
diff --git a/mythril_sol/laser/plugin/plugins/instruction_profiler.py b/mythril_sol/laser/plugin/plugins/instruction_profiler.py
new file mode 100644
index 0000000000000000000000000000000000000000..d5034fda98a5699e4e3846c8914b7d3b849acff6
--- /dev/null
+++ b/mythril_sol/laser/plugin/plugins/instruction_profiler.py
@@ -0,0 +1,115 @@
+from collections import namedtuple
+from datetime import datetime
+from typing import Dict, List, Tuple
+from mythril.laser.plugin.builder import PluginBuilder
+from mythril.laser.plugin.interface import LaserPlugin
+from mythril.laser.ethereum.svm import LaserEVM
+from mythril.laser.ethereum.state.global_state import GlobalState
+from datetime import datetime
+import logging
+
+# Type annotations:
+#   start_time: datetime
+#   end_time: datetime
+_InstrExecRecord = namedtuple("_InstrExecRecord", ["start_time", "end_time"])
+
+# Type annotations:
+#   total_time: float
+#   total_nr: float
+#   min_time: float
+#   max_time: float
+_InstrExecStatistic = namedtuple(
+    "_InstrExecStatistic", ["total_time", "total_nr", "min_time", "max_time"]
+)
+
+# Map the instruction opcode to its records if all execution times
+_InstrExecRecords = Dict[str, List[_InstrExecRecord]]
+
+# Map the instruction opcode to the statistic of its execution times
+_InstrExecStatistics = Dict[str, _InstrExecStatistic]
+
+log = logging.getLogger(__name__)
+
+
+class InstructionProfilerBuilder(PluginBuilder):
+    name = "instruction-profiler"
+
+    def __call__(self, *args, **kwargs):
+        return InstructionProfiler()
+
+
+class InstructionProfiler(LaserPlugin):
+    """Performance profile for the execution of each instruction."""
+
+    def __init__(self):
+        self._reset()
+
+    def _reset(self):
+        self.records = dict()
+        self.start_time = None
+
+    def initialize(self, symbolic_vm: LaserEVM) -> None:
+        @symbolic_vm.instr_hook("pre", None)
+        def get_start_time(op_code: str):
+            def start_time_wrapper(global_state: GlobalState):
+                self.start_time = datetime.now()
+
+            return start_time_wrapper
+
+        @symbolic_vm.instr_hook("post", None)
+        def record(op_code: str):
+            def record_opcode(global_state: GlobalState):
+                end_time = datetime.now()
+                try:
+                    self.records[op_code].append(
+                        _InstrExecRecord(self.start_time, end_time)
+                    )
+                except KeyError:
+                    self.records[op_code] = [
+                        _InstrExecRecord(self.start_time, end_time)
+                    ]
+
+            return record_opcode
+
+        @symbolic_vm.laser_hook("stop_sym_exec")
+        def print_stats():
+            total, stats = self._make_stats()
+
+            s = "Total: {} s\n".format(total)
+
+            for op in sorted(stats):
+                stat = stats[op]
+                s += "[{:12s}] {:>8.4f} %,  nr {:>6},  total {:>8.4f} s,  avg {:>8.4f} s,  min {:>8.4f} s,  max {:>8.4f} s\n".format(
+                    op,
+                    stat.total_time * 100 / total,
+                    stat.total_nr,
+                    stat.total_time,
+                    stat.total_time / stat.total_nr,
+                    stat.min_time,
+                    stat.max_time,
+                )
+
+            log.info(s)
+
+    def _make_stats(self) -> Tuple[float, _InstrExecStatistics]:
+        periods = {
+            op: list(
+                map(lambda r: r.end_time.timestamp() - r.start_time.timestamp(), rs)
+            )
+            for op, rs in self.records.items()
+        }
+
+        stats = dict()
+        total_time = 0
+
+        for _, (op, times) in enumerate(periods.items()):
+            stat = _InstrExecStatistic(
+                total_time=sum(times),
+                total_nr=len(times),
+                min_time=min(times),
+                max_time=max(times),
+            )
+            total_time += stat.total_time
+            stats[op] = stat
+
+        return total_time, stats
diff --git a/mythril_sol/laser/plugin/plugins/mutation_pruner.py b/mythril_sol/laser/plugin/plugins/mutation_pruner.py
new file mode 100644
index 0000000000000000000000000000000000000000..6a8b86fe53afc98df769b122769356cc17a979dd
--- /dev/null
+++ b/mythril_sol/laser/plugin/plugins/mutation_pruner.py
@@ -0,0 +1,89 @@
+from mythril.laser.plugin.signals import PluginSkipWorldState
+from mythril.laser.plugin.interface import LaserPlugin
+from mythril.laser.plugin.builder import PluginBuilder
+from mythril.laser.plugin.plugins.plugin_annotations import MutationAnnotation
+from mythril.laser.ethereum.state.global_state import GlobalState
+from mythril.laser.ethereum.svm import LaserEVM
+from mythril.laser.smt import UGT, symbol_factory
+from mythril.laser.ethereum.transaction.transaction_models import (
+    ContractCreationTransaction,
+)
+from mythril.analysis import solver
+from mythril.exceptions import UnsatError
+
+
+class MutationPrunerBuilder(PluginBuilder):
+    name = "mutation-pruner"
+
+    def __call__(self, *args, **kwargs):
+        return MutationPruner()
+
+
+class MutationPruner(LaserPlugin):
+    """Mutation pruner plugin
+
+    Let S be a world state from which T is a symbolic transaction, and S' is the resulting world state.
+    In a situation where T does not execute any mutating instructions we can safely abandon further analysis on top of
+    state S'. This is for the reason that we already performed analysis on S, which is equivalent.
+
+    This optimization inhibits path explosion caused by "clean" behaviour
+
+    The basic operation of this plugin is as follows:
+     - Hook all mutating operations and introduce a MutationAnnotation to the global state on execution of the hook
+     - Hook the svm EndTransaction on execution filter the states that do not have a mutation annotation
+
+    """
+
+    def initialize(self, symbolic_vm: LaserEVM):
+        """Initializes the mutation pruner
+
+        Introduces hooks for SSTORE operations
+        :param symbolic_vm:
+        :return:
+        """
+
+        @symbolic_vm.pre_hook("SSTORE")
+        def sstore_mutator_hook(global_state: GlobalState):
+            global_state.annotate(MutationAnnotation())
+
+        """FIXME: Check for changes in world_state.balances instead of adding MutationAnnotation for all calls.
+           Requires world_state.starting_balances to be initialized at every tx start *after* call value has been added.
+        """
+
+        @symbolic_vm.pre_hook("CALL")
+        def call_mutator_hook(global_state: GlobalState):
+            global_state.annotate(MutationAnnotation())
+
+        @symbolic_vm.pre_hook("STATICCALL")
+        def staticcall_mutator_hook(global_state: GlobalState):
+            global_state.annotate(MutationAnnotation())
+
+        @symbolic_vm.laser_hook("add_world_state")
+        def world_state_filter_hook(global_state: GlobalState):
+
+            if isinstance(
+                global_state.current_transaction, ContractCreationTransaction
+            ):
+                return
+
+            if isinstance(global_state.environment.callvalue, int):
+                callvalue = symbol_factory.BitVecVal(
+                    global_state.environment.callvalue, 256
+                )
+            else:
+                callvalue = global_state.environment.callvalue
+
+            try:
+
+                constraints = global_state.world_state.constraints + [
+                    UGT(callvalue, symbol_factory.BitVecVal(0, 256))
+                ]
+
+                solver.get_model(constraints)
+                return
+            except UnsatError:
+                # callvalue is constrained to 0, therefore there is no balance based world state mutation
+                pass
+
+            if len(list(global_state.get_annotations(MutationAnnotation))) == 0:
+                raise PluginSkipWorldState
diff --git a/mythril_sol/laser/plugin/plugins/plugin_annotations.py b/mythril_sol/laser/plugin/plugins/plugin_annotations.py
new file mode 100644
index 0000000000000000000000000000000000000000..f1bf43a573d3a92fcfbdcd9093389fb1d0389ac0
--- /dev/null
+++ b/mythril_sol/laser/plugin/plugins/plugin_annotations.py
@@ -0,0 +1,123 @@
+from mythril.laser.ethereum.state.annotation import (
+    StateAnnotation,
+    MergeableStateAnnotation,
+)
+
+from copy import copy
+from typing import Dict, List, Set
+import logging
+
+log = logging.getLogger(__name__)
+
+
+class MutationAnnotation(StateAnnotation):
+    """Mutation Annotation
+
+    This is the annotation used by the MutationPruner plugin to record mutations
+    """
+
+    def __init__(self):
+        pass
+
+    @property
+    def persist_over_calls(self) -> bool:
+        return True
+
+
+class DependencyAnnotation(MergeableStateAnnotation):
+    """Dependency Annotation
+
+    This annotation tracks read and write access to the state during each transaction.
+    """
+
+    def __init__(self):
+        self.storage_loaded: Set = set()
+        self.storage_written: Dict[int, Set] = {}
+        self.has_call: bool = False
+        self.path: List = [0]
+        self.blocks_seen: Set[int] = set()
+
+    def __copy__(self):
+        result = DependencyAnnotation()
+        result.storage_loaded = copy(self.storage_loaded)
+        result.storage_written = copy(self.storage_written)
+        result.has_call = self.has_call
+        result.path = copy(self.path)
+        result.blocks_seen = copy(self.blocks_seen)
+        return result
+
+    def get_storage_write_cache(self, iteration: int):
+        return self.storage_written.get(iteration, set())
+
+    def extend_storage_write_cache(self, iteration: int, value: object):
+        if iteration not in self.storage_written:
+            self.storage_written[iteration] = set()
+        self.storage_written[iteration].add(value)
+
+    def check_merge_annotation(self, other: "DependencyAnnotation"):
+        if not isinstance(other, DependencyAnnotation):
+            raise TypeError("Expected an instance of DependencyAnnotation")
+        return self.has_call == other.has_call and self.path == other.path
+
+    def merge_annotation(self, other: "DependencyAnnotation"):
+        merged_annotation = DependencyAnnotation()
+        merged_annotation.blocks_seen = self.blocks_seen.union(other.blocks_seen)
+        merged_annotation.has_call = self.has_call
+        merged_annotation.path = copy(self.path)
+        merged_annotation.storage_loaded = self.storage_loaded.union(
+            other.storage_loaded
+        )
+        keys = set(
+            list(other.storage_written.keys()) + list(self.storage_written.keys())
+        )
+        for key in keys:
+            other_set = other.storage_written.get(key, set())
+            merged_annotation.storage_written[key] = self.storage_written.get(
+                key, set()
+            ).union(other_set)
+        return merged_annotation
+
+
+class WSDependencyAnnotation(MergeableStateAnnotation):
+    """Dependency Annotation for World state
+
+    This  world state annotation maintains a stack of state annotations.
+    It is used to transfer individual state annotations from one transaction to the next.
+    """
+
+    def __init__(self):
+        self.annotations_stack: List[DependencyAnnotation] = []
+
+    def __copy__(self):
+        result = WSDependencyAnnotation()
+        result.annotations_stack = copy(self.annotations_stack)
+        return result
+
+    def check_merge_annotation(self, annotation: "WSDependencyAnnotation") -> bool:
+        if len(self.annotations_stack) != len(annotation.annotations_stack):
+            # We can only merge worldstate annotations that have seen an equal amount of transactions
+            # since the beginning of symbolic execution
+            return False
+        for a1, a2 in zip(self.annotations_stack, annotation.annotations_stack):
+            if a1 == a2:
+                continue
+            if (
+                isinstance(a1, MergeableStateAnnotation)
+                and isinstance(a2, MergeableStateAnnotation)
+                and a1.check_merge_annotation(a2) is True
+            ):
+                continue
+            log.debug("Aborting merge between annotations {} and {}".format(a1, a2))
+            return False
+
+        return True
+
+    def merge_annotation(
+        self, annotation: "WSDependencyAnnotation"
+    ) -> "WSDependencyAnnotation":
+        merged_annotation = WSDependencyAnnotation()
+        for a1, a2 in zip(self.annotations_stack, annotation.annotations_stack):
+            if a1 == a2:
+                merged_annotation.annotations_stack.append(copy(a1))
+            merged_annotation.annotations_stack.append(a1.merge_annotation(a2))
+        return merged_annotation
diff --git a/mythril_sol/laser/plugin/plugins/summary_backup/__init__.py b/mythril_sol/laser/plugin/plugins/summary_backup/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/mythril_sol/laser/plugin/signals.py b/mythril_sol/laser/plugin/signals.py
new file mode 100644
index 0000000000000000000000000000000000000000..cb4aab0655d5fa987a058eaaec993fc1292f6315
--- /dev/null
+++ b/mythril_sol/laser/plugin/signals.py
@@ -0,0 +1,27 @@
+class PluginSignal(Exception):
+    """Base plugin signal
+
+    These signals are used by the laser plugins to create intent for certain actions in the symbolic virtual machine
+    """
+
+    pass
+
+
+class PluginSkipWorldState(PluginSignal):
+    """Plugin to skip world state
+
+    Plugins that raise this signal while the add_world_state hook is being executed
+    will force laser to abandon that world state.
+    """
+
+    pass
+
+
+class PluginSkipState(PluginSignal):
+    """Plugin to skip world state
+
+    Plugins that raise this signal while the add_world_state hook is being executed
+    will force laser to abandon that world state.
+    """
+
+    pass
diff --git a/mythril_sol/laser/smt/__init__.py b/mythril_sol/laser/smt/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..09e5b243e924764150d8b36923ac46c5a7fb302a
--- /dev/null
+++ b/mythril_sol/laser/smt/__init__.py
@@ -0,0 +1,154 @@
+from mythril.laser.smt.bitvec import BitVec
+
+from mythril.laser.smt.bitvec_helper import (
+    If,
+    UGT,
+    ULT,
+    ULE,
+    Concat,
+    Extract,
+    URem,
+    SRem,
+    UDiv,
+    UGE,
+    Sum,
+    BVAddNoOverflow,
+    BVMulNoOverflow,
+    BVSubNoUnderflow,
+    LShR,
+)
+
+from mythril.laser.smt.expression import Expression, simplify
+from mythril.laser.smt.bool import Bool, is_true, is_false, Or, Not, And
+from mythril.laser.smt.array import K, Array, BaseArray
+from mythril.laser.smt.function import Function
+from mythril.laser.smt.solver import Solver, Optimize, SolverStatistics
+from mythril.laser.smt.model import Model
+from mythril.laser.smt.bool import Bool as SMTBool
+from typing import Union, Any, Optional, Set, TypeVar, Generic
+import z3
+
+
+Annotations = Optional[Set[Any]]
+T = TypeVar("T", bound=Union[SMTBool, z3.BoolRef])
+U = TypeVar("U", bound=Union[BitVec, z3.BitVecRef])
+
+
+class SymbolFactory(Generic[T, U]):
+    """A symbol factory provides a default interface for all the components of mythril to create symbols"""
+
+    @staticmethod
+    def Bool(value: "__builtins__.bool", annotations: Annotations = None) -> T:
+        """
+        Creates a Bool with concrete value
+        :param value: The boolean value
+        :param annotations: The annotations to initialize the bool with
+        :return: The freshly created Bool()
+        """
+        raise NotImplementedError
+
+    @staticmethod
+    def BoolSym(name: str, annotations: Annotations = None) -> T:
+        """
+        Creates a boolean symbol
+        :param name: The name of the Bool variable
+        :param annotations: The annotations to initialize the bool with
+        :return: The freshly created Bool()
+        """
+        raise NotImplementedError
+
+    @staticmethod
+    def BitVecVal(value: int, size: int, annotations: Annotations = None) -> U:
+        """Creates a new bit vector with a concrete value.
+
+        :param value: The concrete value to set the bit vector to
+        :param size: The size of the bit vector
+        :param annotations: The annotations to initialize the bit vector with
+        :return: The freshly created bit vector
+        """
+        raise NotImplementedError()
+
+    @staticmethod
+    def BitVecSym(name: str, size: int, annotations: Annotations = None) -> U:
+        """Creates a new bit vector with a symbolic value.
+
+        :param name: The name of the symbolic bit vector
+        :param size: The size of the bit vector
+        :param annotations: The annotations to initialize the bit vector with
+        :return: The freshly created bit vector
+        """
+        raise NotImplementedError()
+
+
+class _SmtSymbolFactory(SymbolFactory[SMTBool, BitVec]):
+    """
+    An implementation of a SymbolFactory that creates symbols using
+    the classes in: mythril.laser.smt
+    """
+
+    @staticmethod
+    def Bool(value: "__builtins__.bool", annotations: Annotations = None) -> SMTBool:
+        """
+        Creates a Bool with concrete value
+        :param value: The boolean value
+        :param annotations: The annotations to initialize the bool with
+        :return: The freshly created Bool()
+        """
+        raw = z3.BoolVal(value)
+        return SMTBool(raw, annotations)
+
+    @staticmethod
+    def BoolSym(name: str, annotations: Annotations = None) -> SMTBool:
+        """
+        Creates a boolean symbol
+        :param name: The name of the Bool variable
+        :param annotations: The annotations to initialize the bool with
+        :return: The freshly created Bool()
+        """
+        raw = z3.Bool(name)
+        return SMTBool(raw, annotations)
+
+    @staticmethod
+    def BitVecVal(value: int, size: int, annotations: Annotations = None) -> BitVec:
+        """Creates a new bit vector with a concrete value."""
+        raw = z3.BitVecVal(value, size)
+        return BitVec(raw, annotations)
+
+    @staticmethod
+    def BitVecSym(name: str, size: int, annotations: Annotations = None) -> BitVec:
+        """Creates a new bit vector with a symbolic value."""
+        raw = z3.BitVec(name, size)
+        return BitVec(raw, annotations)
+
+
+class _Z3SymbolFactory(SymbolFactory[z3.BoolRef, z3.BitVecRef]):
+    """
+    An implementation of a SymbolFactory that directly returns
+    z3 symbols
+    """
+
+    @staticmethod
+    def Bool(value: "__builtins__.bool", annotations: Annotations = None) -> z3.BoolRef:
+        """Creates a new bit vector with a concrete value"""
+        return z3.BoolVal(value)
+
+    @staticmethod
+    def BitVecVal(
+        value: int, size: int, annotations: Annotations = None
+    ) -> z3.BitVecRef:
+        """Creates a new bit vector with a concrete value."""
+        return z3.BitVecVal(value, size)
+
+    @staticmethod
+    def BitVecSym(
+        name: str, size: int, annotations: Annotations = None
+    ) -> z3.BitVecRef:
+        """Creates a new bit vector with a symbolic value."""
+        return z3.BitVec(name, size)
+
+
+# This is the instance that other parts of mythril should use
+
+# Type hints are not allowed here in 3.5
+# symbol_factory: SymbolFactory = _SmtSymbolFactory()
+symbol_factory = _SmtSymbolFactory()
diff --git a/mythril_sol/laser/smt/array.py b/mythril_sol/laser/smt/array.py
new file mode 100644
index 0000000000000000000000000000000000000000..66bccd6cd6d6956fbc3c322d0a4d08d46d289a5e
--- /dev/null
+++ b/mythril_sol/laser/smt/array.py
@@ -0,0 +1,73 @@
+"""This module contains an SMT abstraction of arrays.
+
+This includes an Array class to implement basic store and set
+operations, as well as as a K-array, which can be initialized with
+default values over a certain range.
+"""
+
+from typing import cast
+import z3
+
+from mythril.laser.smt.bitvec import BitVec
+
+
+class BaseArray:
+    """Base array type, which implements basic store and set operations."""
+
+    def __init__(self, raw):
+        self.raw = raw
+
+    def __getitem__(self, item: BitVec) -> BitVec:
+        """Gets item from the array, item can be symbolic."""
+        if isinstance(item, slice):
+            raise ValueError(
+                "Instance of BaseArray, does not support getitem with slices"
+            )
+        return BitVec(cast(z3.BitVecRef, z3.Select(self.raw, item.raw)))
+
+    def __setitem__(self, key: BitVec, value: BitVec) -> None:
+        """Sets an item in the array, key can be symbolic."""
+        self.raw = z3.Store(self.raw, key.raw, value.raw)
+
+    def substitute(self, original_expression, new_expression):
+        """
+
+        :param original_expression:
+        :param new_expression:
+        """
+        if self.raw is None:
+            return
+        original_z3 = original_expression.raw
+        new_z3 = new_expression.raw
+        self.raw = z3.substitute(self.raw, (original_z3, new_z3))
+
+
+class Array(BaseArray):
+    """A basic symbolic array."""
+
+    def __init__(self, name: str, domain: int, value_range: int):
+        """Initializes a symbolic array.
+
+        :param name: Name of the array
+        :param domain: The domain for the array (10 -> all the values that a bv of size 10 could take)
+        :param value_range: The range for the values in the array (10 -> all the values that a bv of size 10 could take)
+        """
+        self.domain = z3.BitVecSort(domain)
+        self.range = z3.BitVecSort(value_range)
+        super(Array, self).__init__(z3.Array(name, self.domain, self.range))
+
+
+class K(BaseArray):
+    """A basic symbolic array, which can be initialized with a default
+    value."""
+
+    def __init__(self, domain: int, value_range: int, value: int):
+        """Initializes an array with a default value.
+
+        :param domain: The domain for the array (10 -> all the values that a bv of size 10 could take)
+        :param value_range: The range for the values in the array (10 -> all the values that a bv of size 10 could take)
+        :param value: The default value to use for this array
+        """
+        self.domain = z3.BitVecSort(domain)
+        self.value = z3.BitVecVal(value, value_range)
+        self.raw = z3.K(self.domain, self.value)
diff --git a/mythril_sol/laser/smt/bitvec.py b/mythril_sol/laser/smt/bitvec.py
new file mode 100644
index 0000000000000000000000000000000000000000..22acc1c37f9b6c55f11e073aa157dd44f1ada950
--- /dev/null
+++ b/mythril_sol/laser/smt/bitvec.py
@@ -0,0 +1,253 @@
+"""This module provides classes for an SMT abstraction of bit vectors."""
+
+from operator import lshift, rshift, ne, eq
+from typing import Union, Set, cast, Any, Optional, Callable
+
+import z3
+
+from mythril.laser.smt.bool import Bool
+from mythril.laser.smt.expression import Expression
+
+Annotations = Set[Any]
+
+# fmt: off
+
+
+def _padded_operation(a: z3.BitVec, b: z3.BitVec, operator):
+    if a.size() == b.size():
+        return operator(a, b)
+    if a.size() < b.size():
+        a, b = b, a
+    b = z3.Concat(z3.BitVecVal(0, a.size() - b.size()), b)
+    return operator(a, b)
+
+
+class BitVec(Expression[z3.BitVecRef]):
+    """A bit vector symbol."""
+
+    def __init__(self, raw: z3.BitVecRef, annotations: Optional[Annotations] = None):
+        """
+
+        :param raw:
+        :param annotations:
+        """
+        super().__init__(raw, annotations)
+
+    def size(self) -> int:
+        """TODO: documentation
+
+        :return:
+        """
+        return self.raw.size()
+
+    @property
+    def symbolic(self) -> bool:
+        """Returns whether this symbol doesn't have a concrete value.
+
+        :return:
+        """
+        self.simplify()
+        return not isinstance(self.raw, z3.BitVecNumRef)
+
+    @property
+    def value(self) -> Optional[int]:
+        """Returns the value of this symbol if concrete, otherwise None.
+
+        :return:
+        """
+        if self.symbolic:
+            return None
+        assert isinstance(self.raw, z3.BitVecNumRef)
+        return self.raw.as_long()
+
+    def __add__(self, other: Union[int, "BitVec"]) -> "BitVec":
+        """Create an addition expression.
+
+        :param other:
+        :return:
+        """
+        if isinstance(other, int):
+            return BitVec(self.raw + other, annotations=self.annotations)
+
+        union = self.annotations.union(other.annotations)
+        return BitVec(self.raw + other.raw, annotations=union)
+
+    def __sub__(self, other: Union[int, "BitVec"]) -> "BitVec":
+        """Create a subtraction expression.
+
+        :param other:
+        :return:
+        """
+        if isinstance(other, int):
+            return BitVec(self.raw - other, annotations=self.annotations)
+
+        union = self.annotations.union(other.annotations)
+        return BitVec(self.raw - other.raw, annotations=union)
+
+    def __mul__(self, other: "BitVec") -> "BitVec":
+        """Create a multiplication expression.
+
+        :param other:
+        :return:
+        """
+        union = self.annotations.union(other.annotations)
+        return BitVec(self.raw * other.raw, annotations=union)
+
+    def __truediv__(self, other: "BitVec") -> "BitVec":
+        """Create a signed division expression.
+
+        :param other:
+        :return:
+        """
+        union = self.annotations.union(other.annotations)
+        return BitVec(self.raw / other.raw, annotations=union)
+
+    def __and__(self, other: Union[int, "BitVec"]) -> "BitVec":
+        """Create an and expression.
+
+        :param other:
+        :return:
+        """
+        if not isinstance(other, BitVec):
+            other = BitVec(z3.BitVecVal(other, self.size()))
+        union = self.annotations.union(other.annotations)
+        return BitVec(self.raw & other.raw, annotations=union)
+
+    def __or__(self, other: Union[int, "BitVec"]) -> "BitVec":
+        """Create an or expression.
+
+        :param other:
+        :return:
+        """
+        if not isinstance(other, BitVec):
+            other = BitVec(z3.BitVecVal(other, self.size()))
+        union = self.annotations.union(other.annotations)
+        return BitVec(self.raw | other.raw, annotations=union)
+
+    def __xor__(self, other: Union[int, "BitVec"]) -> "BitVec":
+        """Create a xor expression.
+
+        :param other:
+        :return:
+        """
+        if not isinstance(other, BitVec):
+            other = BitVec(z3.BitVecVal(other, self.size()))
+        union = self.annotations.union(other.annotations)
+        return BitVec(self.raw ^ other.raw, annotations=union)
+
+    def __lt__(self, other: Union[int, "BitVec"]) -> Bool:
+        """Create a signed less than expression.
+
+        :param other:
+        :return:
+        """
+        if not isinstance(other, BitVec):
+            other = BitVec(z3.BitVecVal(other, self.size()))
+        union = self.annotations.union(other.annotations)
+        return Bool(self.raw < other.raw, annotations=union)
+
+    def __gt__(self, other: Union[int, "BitVec"]) -> Bool:
+        """Create a signed greater than expression.
+
+        :param other:
+        :return:
+        """
+        if not isinstance(other, BitVec):
+            other = BitVec(z3.BitVecVal(other, self.size()))
+        union = self.annotations.union(other.annotations)
+        return Bool(self.raw > other.raw, annotations=union)
+
+    def __le__(self, other: Union[int, "BitVec"]) -> Bool:
+        """Create a signed less than expression.
+
+        :param other:
+        :return:
+        """
+        if not isinstance(other, BitVec):
+            other = BitVec(z3.BitVecVal(other, self.size()))
+        union = self.annotations.union(other.annotations)
+        return Bool(self.raw <= other.raw, annotations=union)
+
+    def __ge__(self, other: Union[int, "BitVec"]) -> Bool:
+        """Create a signed greater than expression.
+
+        :param other:
+        :return:
+        """
+        if not isinstance(other, BitVec):
+            other = BitVec(z3.BitVecVal(other, self.size()))
+        union = self.annotations.union(other.annotations)
+        return Bool(self.raw >= other.raw, annotations=union)
+
+    # MYPY: fix complains about overriding __eq__
+    def __eq__(self, other: Union[int, "BitVec"]) -> Bool:  # type: ignore
+        """Create an equality expression.
+
+        :param other:
+        :return:
+        """
+        if not isinstance(other, BitVec):
+            return Bool(
+                cast(z3.BoolRef, self.raw == other), annotations=self.annotations
+            )
+
+        union = self.annotations.union(other.annotations)
+        # Some of the BitVecs can be 512 bit due to sha3()
+        eq_check = _padded_operation(self.raw, other.raw, eq)
+        # MYPY: fix complaints due to z3 overriding __eq__
+        return Bool(cast(z3.BoolRef, eq_check), annotations=union)
+
+    # MYPY: fix complains about overriding __ne__
+    def __ne__(self, other: Union[int, "BitVec"]) -> Bool:  # type: ignore
+        """Create an inequality expression.
+
+        :param other:
+        :return:
+        """
+        if not isinstance(other, BitVec):
+            return Bool(
+                cast(z3.BoolRef, self.raw != other), annotations=self.annotations
+            )
+
+        union = self.annotations.union(other.annotations)
+        # Some of the BitVecs can be 512 bit due to sha3()
+        neq_check = _padded_operation(self.raw, other.raw, ne)
+        # MYPY: fix complaints due to z3 overriding __eq__
+        return Bool(cast(z3.BoolRef, neq_check), annotations=union)
+
+    def _handle_shift(self, other: Union[int, "BitVec"], operator: Callable) -> "BitVec":
+        """
+        Handles shift
+        :param other: The other BitVector
+        :param operator: The shift operator
+        :return: the resulting output
+        """
+        if not isinstance(other, BitVec):
+            return BitVec(
+                operator(self.raw, other), annotations=self.annotations
+            )
+        union = self.annotations.union(other.annotations)
+        return BitVec(operator(self.raw, other.raw), annotations=union)
+
+    def __lshift__(self, other: Union[int, "BitVec"]) -> "BitVec":
+        """
+
+        :param other:
+        :return:
+        """
+        return self._handle_shift(other, lshift)
+
+    def __rshift__(self, other: Union[int, "BitVec"]) -> "BitVec":
+        """
+
+        :param other:
+        :return:
+        """
+        return self._handle_shift(other, rshift)
+
+    def __hash__(self) -> int:
+        """
+
+        :return:
+        """
+        return self.raw.__hash__()
diff --git a/mythril_sol/laser/smt/bitvec_helper.py b/mythril_sol/laser/smt/bitvec_helper.py
new file mode 100644
index 0000000000000000000000000000000000000000..aadcefad0d2da4700d0af80636781374a3cd0c99
--- /dev/null
+++ b/mythril_sol/laser/smt/bitvec_helper.py
@@ -0,0 +1,246 @@
+from typing import Union, overload, List, Set, cast, Any, Callable
+import z3
+
+from mythril.laser.smt.bool import Bool, Or
+from mythril.laser.smt.bitvec import BitVec
+from mythril.laser.smt.array import BaseArray, Array
+
+Annotations = Set[Any]
+
+
+def _z3_array_converter(array: Union[z3.Array, z3.K]) -> Array:
+    new_array = Array(
+        "name_to_be_overwritten", array.domain().size(), array.range().size()
+    )
+    new_array.raw = array
+    return new_array
+
+
+def _comparison_helper(a: BitVec, b: BitVec, operation: Callable) -> Bool:
+    annotations = a.annotations.union(b.annotations)
+    return Bool(operation(a.raw, b.raw), annotations)
+
+
+def _arithmetic_helper(a: BitVec, b: BitVec, operation: Callable) -> BitVec:
+    raw = operation(a.raw, b.raw)
+    union = a.annotations.union(b.annotations)
+    return BitVec(raw, annotations=union)
+
+
+def LShR(a: BitVec, b: BitVec):
+    return _arithmetic_helper(a, b, z3.LShR)
+
+
+@overload
+def If(a: Union[Bool, bool], b: Union[BitVec, int], c: Union[BitVec, int]) -> BitVec:
+    ...
+
+
+@overload
+def If(a: Union[Bool, bool], b: BaseArray, c: BaseArray) -> BaseArray:
+    ...
+
+
+def If(
+    a: Union[Bool, bool],
+    b: Union[BaseArray, BitVec, int],
+    c: Union[BaseArray, BitVec, int],
+) -> Union[BitVec, BaseArray]:
+    """Create an if-then-else expression.
+
+    :param a:
+    :param b:
+    :param c:
+    :return:
+    """
+    if not isinstance(a, Bool):
+        a = Bool(z3.BoolVal(a))
+
+    if isinstance(b, BaseArray) and isinstance(c, BaseArray):
+        array = z3.If(a.raw, b.raw, c.raw)
+        return _z3_array_converter(array)
+    default_sort_size = 256
+    if isinstance(b, BitVec):
+        default_sort_size = b.size()
+    if isinstance(c, BitVec):
+        default_sort_size = c.size()
+    if not isinstance(b, BitVec):
+        b = BitVec(z3.BitVecVal(b, default_sort_size))
+    if not isinstance(c, BitVec):
+        c = BitVec(z3.BitVecVal(c, default_sort_size))
+    union = a.annotations.union(b.annotations).union(c.annotations)
+    return BitVec(z3.If(a.raw, b.raw, c.raw), union)
+
+
+def UGT(a: BitVec, b: BitVec) -> Bool:
+    """Create an unsigned greater than expression.
+
+    :param a:
+    :param b:
+    :return:
+    """
+    return _comparison_helper(a, b, z3.UGT)
+
+
+def UGE(a: BitVec, b: BitVec) -> Bool:
+    """Create an unsigned greater than or equal to expression.
+
+    :param a:
+    :param b:
+    :return:
+    """
+    return Or(UGT(a, b), a == b)
+
+
+def ULT(a: BitVec, b: BitVec) -> Bool:
+    """Create an unsigned less than expression.
+
+    :param a:
+    :param b:
+    :return:
+    """
+    return _comparison_helper(a, b, z3.ULT)
+
+
+def ULE(a: BitVec, b: BitVec) -> Bool:
+    """Create an unsigned less than or equal to expression.
+
+    :param a:
+    :param b:
+    :return:
+    """
+    return Or(ULT(a, b), a == b)
+
+
+@overload
+def Concat(*args: List[BitVec]) -> BitVec:
+    ...
+
+
+@overload
+def Concat(*args: BitVec) -> BitVec:
+    ...
+
+
+def Concat(*args: Union[BitVec, List[BitVec]]) -> BitVec:
+    """Create a concatenation expression.
+
+    :param args:
+    :return:
+    """
+    # The following statement is used if a list is provided as an argument to concat
+    if len(args) == 1 and isinstance(args[0], list):
+        bvs: List[BitVec] = args[0]
+    else:
+        bvs = cast(List[BitVec], args)
+
+    nraw = z3.Concat([a.raw for a in bvs])
+    annotations: Annotations = set()
+
+    for bv in bvs:
+        annotations = annotations.union(bv.annotations)
+    return BitVec(nraw, annotations)
+
+
+def Extract(high: int, low: int, bv: BitVec) -> BitVec:
+    """Create an extract expression.
+
+    :param high:
+    :param low:
+    :param bv:
+    :return:
+    """
+    raw = z3.Extract(high, low, bv.raw)
+    return BitVec(raw, annotations=bv.annotations)
+
+
+def URem(a: BitVec, b: BitVec) -> BitVec:
+    """Create an unsigned remainder expression.
+
+    :param a:
+    :param b:
+    :return:
+    """
+    return _arithmetic_helper(a, b, z3.URem)
+
+
+def SRem(a: BitVec, b: BitVec) -> BitVec:
+    """Create a signed remainder expression.
+
+    :param a:
+    :param b:
+    :return:
+    """
+    return _arithmetic_helper(a, b, z3.SRem)
+
+
+def UDiv(a: BitVec, b: BitVec) -> BitVec:
+    """Create an unsigned division expression.
+
+    :param a:
+    :param b:
+    :return:
+    """
+    return _arithmetic_helper(a, b, z3.UDiv)
+
+
+def Sum(*args: BitVec) -> BitVec:
+    """Create sum expression.
+
+    :return:
+    """
+    raw = z3.Sum([a.raw for a in args])
+    annotations: Annotations = set()
+
+    for bv in args:
+        annotations = annotations.union(bv.annotations)
+    return BitVec(raw, annotations)
+
+
+def BVAddNoOverflow(a: Union[BitVec, int], b: Union[BitVec, int], signed: bool) -> Bool:
+    """Creates predicate that verifies that the addition doesn't overflow.
+
+    :param a:
+    :param b:
+    :param signed:
+    :return:
+    """
+    if not isinstance(a, BitVec):
+        a = BitVec(z3.BitVecVal(a, 256))
+    if not isinstance(b, BitVec):
+        b = BitVec(z3.BitVecVal(b, 256))
+    return Bool(z3.BVAddNoOverflow(a.raw, b.raw, signed))
+
+
+def BVMulNoOverflow(a: Union[BitVec, int], b: Union[BitVec, int], signed: bool) -> Bool:
+    """Creates predicate that verifies that the multiplication doesn't
+    overflow.
+
+    :param a:
+    :param b:
+    :param signed:
+    :return:
+    """
+    if not isinstance(a, BitVec):
+        a = BitVec(z3.BitVecVal(a, 256))
+    if not isinstance(b, BitVec):
+        b = BitVec(z3.BitVecVal(b, 256))
+    return Bool(z3.BVMulNoOverflow(a.raw, b.raw, signed))
+
+
+def BVSubNoUnderflow(
+    a: Union[BitVec, int], b: Union[BitVec, int], signed: bool
+) -> Bool:
+    """Creates predicate that verifies that the subtraction doesn't overflow.
+
+    :param a:
+    :param b:
+    :param signed:
+    :return:
+    """
+    if not isinstance(a, BitVec):
+        a = BitVec(z3.BitVecVal(a, 256))
+    if not isinstance(b, BitVec):
+        b = BitVec(z3.BitVecVal(b, 256))
+
+    return Bool(z3.BVSubNoUnderflow(a.raw, b.raw, signed))
diff --git a/mythril_sol/laser/smt/bool.py b/mythril_sol/laser/smt/bool.py
new file mode 100644
index 0000000000000000000000000000000000000000..cc3f8d1337565c1b4192fe1253d3745fd89a2787
--- /dev/null
+++ b/mythril_sol/laser/smt/bool.py
@@ -0,0 +1,152 @@
+"""This module provides classes for an SMT abstraction of boolean
+expressions."""
+
+from typing import Union, cast, Set
+
+import z3
+
+from mythril.laser.smt.expression import Expression
+
+# fmt: off
+
+
+class Bool(Expression[z3.BoolRef]):
+    """This is a Bool expression."""
+
+    @property
+    def is_false(self) -> bool:
+        """Specifies whether this variable can be simplified to false.
+
+        :return:
+        """
+        self.simplify()
+        return z3.is_false(self.raw)
+
+    @property
+    def is_true(self) -> bool:
+        """Specifies whether this variable can be simplified to true.
+
+        :return:
+        """
+        self.simplify()
+        return z3.is_true(self.raw)
+
+    @property
+    def value(self) -> Union[bool, None]:
+        """Returns the concrete value of this bool if concrete, otherwise None.
+
+        :return: Concrete value or None
+        """
+        self.simplify()
+        if self.is_true:
+            return True
+        elif self.is_false:
+            return False
+        else:
+            return None
+
+    # MYPY: complains about overloading __eq__ # noqa
+    def __eq__(self, other: object) -> "Bool":  # type: ignore
+        """
+
+        :param other:
+        :return:
+        """
+        if isinstance(other, Expression):
+            return Bool(cast(z3.BoolRef, self.raw == other.raw),
+                        self.annotations.union(other.annotations))
+        return Bool(cast(z3.BoolRef, self.raw == other), self.annotations)
+
+    # MYPY: complains about overloading __ne__ # noqa
+    def __ne__(self, other: object) -> "Bool":  # type: ignore
+        """
+
+        :param other:
+        :return:
+        """
+        if isinstance(other, Expression):
+            return Bool(cast(z3.BoolRef, self.raw != other.raw),
+                        self.annotations.union(other.annotations))
+        return Bool(cast(z3.BoolRef, self.raw != other), self.annotations)
+
+    def __bool__(self) -> bool:
+        """
+
+        :return:
+        """
+        if self.value is not None:
+            return self.value
+        else:
+            return False
+
+    def substitute(self, original_expression, new_expression):
+        """
+
+        :param original_expression:
+        :param new_expression:
+        """
+        if self.raw is None:
+            return
+        original_z3 = original_expression.raw
+        new_z3 = new_expression.raw
+        self.raw = z3.substitute(self.raw, (original_z3, new_z3))
+
+    def __hash__(self) -> int:
+        return self.raw.__hash__()
+
+
+def And(*args: Union[Bool, bool]) -> Bool:
+    """Create an And expression."""
+    annotations: Set = set()
+    args_list = [arg if isinstance(arg, Bool) else Bool(arg) for arg in args]
+    for arg in args_list:
+        annotations = annotations.union(arg.annotations)
+    return Bool(z3.And([a.raw for a in args_list]), annotations)
+
+
+def Xor(a: Bool, b: Bool) -> Bool:
+    """Create an And expression."""
+
+    union = a.annotations.union(b.annotations)
+    return Bool(z3.Xor(a.raw, b.raw), union)
+
+
+def Or(*args: Union[Bool, bool]) -> Bool:
+    """Create an or expression.
+
+    :param a:
+    :param b:
+    :return:
+    """
+    args_list = [arg if isinstance(arg, Bool) else Bool(arg) for arg in args]
+    annotations: Set = set()
+    for arg in args_list:
+        annotations = annotations.union(arg.annotations)
+    return Bool(z3.Or([a.raw for a in args_list]), annotations=annotations)
+
+
+def Not(a: Bool) -> Bool:
+    """Create a Not expression.
+
+    :param a:
+    :return:
+    """
+    return Bool(z3.Not(a.raw), a.annotations)
+
+
+def is_false(a: Bool) -> bool:
+    """Returns whether the provided bool can be simplified to false.
+
+    :param a:
+    :return:
+    """
+    return z3.is_false(a.raw)
+
+
+def is_true(a: Bool) -> bool:
+    """Returns whether the provided bool can be simplified to true.
+
+    :param a:
+    :return:
+    """
+    return z3.is_true(a.raw)
diff --git a/mythril_sol/laser/smt/expression.py b/mythril_sol/laser/smt/expression.py
new file mode 100644
index 0000000000000000000000000000000000000000..ea1bdad53bb2c16e770bb6679cdba8a2506430e1
--- /dev/null
+++ b/mythril_sol/laser/smt/expression.py
@@ -0,0 +1,71 @@
+"""This module contains the SMT abstraction for a basic symbol expression."""
+from typing import Optional, Set, Any, TypeVar, Generic, cast
+import z3
+
+
+Annotations = Set[Any]
+T = TypeVar("T", bound=z3.ExprRef)
+
+
+class Expression(Generic[T]):
+    """This is the base symbol class and maintains functionality for
+    simplification and annotations."""
+
+    def __init__(self, raw: T, annotations: Optional[Annotations] = None):
+        """
+
+        :param raw:
+        :param annotations:
+        """
+        self.raw = raw
+
+        if annotations:
+            assert isinstance(annotations, set)
+
+        self._annotations = annotations or set()
+
+    @property
+    def annotations(self) -> Annotations:
+        """Gets the annotations for this expression.
+
+        :return:
+        """
+
+        return self._annotations
+
+    def annotate(self, annotation: Any) -> None:
+        """Annotates this expression with the given annotation.
+
+        :param annotation:
+        """
+
+        self._annotations.add(annotation)
+
+    def simplify(self) -> None:
+        """Simplify this expression."""
+        self.raw = cast(T, z3.simplify(self.raw))
+
+    def __repr__(self) -> str:
+        return repr(self.raw)
+
+    def size(self):
+        return self.raw.size()
+
+    def __hash__(self) -> int:
+        return self.raw.__hash__()
+
+    def get_annotations(self, annotation: Any):
+        return list(filter(lambda x: isinstance(x, annotation), self.annotations))
+
+
+G = TypeVar("G", bound=Expression)
+
+
+def simplify(expression: G) -> G:
+    """Simplify the expression .
+
+    :param expression:
+    :return:
+    """
+    expression.simplify()
+    return expression
diff --git a/mythril_sol/laser/smt/function.py b/mythril_sol/laser/smt/function.py
new file mode 100644
index 0000000000000000000000000000000000000000..a6a6bcda2bb077573255d81738e907d66558b22c
--- /dev/null
+++ b/mythril_sol/laser/smt/function.py
@@ -0,0 +1,29 @@
+from typing import cast, List, Any, Set
+import z3
+
+from mythril.laser.smt.bitvec import BitVec
+
+
+class Function:
+    """An uninterpreted function."""
+
+    def __init__(self, name: str, domain: List[int], value_range: int):
+        """Initializes an uninterpreted function.
+
+        :param name: Name of the Function
+        :param domain: The domain for the Function (10 -> all the values that a bv of size 10 could take)
+        :param value_range: The range for the values of the function (10 -> all the values that a bv of size 10 could take)
+        """
+        self.domain = []
+        for element in domain:
+            self.domain.append(z3.BitVecSort(element))
+        self.range = z3.BitVecSort(value_range)
+        self.raw = z3.Function(name, *self.domain, self.range)
+
+    def __call__(self, *items) -> BitVec:
+        """Function accessor, item can be symbolic."""
+        annotations: Set[Any] = set().union(*[item.annotations for item in items])
+        return BitVec(
+            cast(z3.BitVecRef, self.raw(*[item.raw for item in items])),
+            annotations=annotations,
+        )
diff --git a/mythril_sol/laser/smt/model.py b/mythril_sol/laser/smt/model.py
new file mode 100644
index 0000000000000000000000000000000000000000..ffb105792fe4741d29a6e93c7c1228b0dfac97cc
--- /dev/null
+++ b/mythril_sol/laser/smt/model.py
@@ -0,0 +1,59 @@
+import z3
+
+from typing import Union, List
+
+
+class Model:
+    """The model class wraps a z3 model
+
+    This implementation allows for multiple internal models, this is required for the use of an independence solver
+    which has models for multiple queries which need an uniform output.
+    """
+
+    def __init__(self, models: List[z3.ModelRef] = None):
+        """
+        Initialize a model object
+        :param models: the internal z3 models that this model should use
+        """
+        self.raw = models or []
+
+    def decls(self) -> List[z3.ExprRef]:
+        """Get the declarations for this model"""
+        result: List[z3.ExprRef] = []
+        for internal_model in self.raw:
+            result.extend(internal_model.decls())
+        return result
+
+    def __getitem__(self, item) -> Union[None, z3.ExprRef]:
+        """Get declaration from model
+        If item is an int, then the declaration at offset item is returned
+        If item is a declaration, then the interpretation is returned
+        """
+        for internal_model in self.raw:
+            is_last_model = self.raw.index(internal_model) == len(self.raw) - 1
+
+            try:
+                result = internal_model[item]
+                if result is not None:
+                    return result
+            except IndexError:
+                if is_last_model:
+                    raise
+                continue
+        return None
+
+    def eval(
+        self, expression: z3.ExprRef, model_completion: bool = False
+    ) -> Union[None, z3.ExprRef]:
+        """Evaluate the expression using this model
+
+        :param expression: The expression to evaluate
+        :param model_completion: Use the default value if the model has no interpretation of the given expression
+        :return: The evaluated expression
+        """
+        for internal_model in self.raw:
+            is_last_model = self.raw.index(internal_model) == len(self.raw) - 1
+            is_relevant_model = expression.decl() in list(internal_model.decls())
+            if is_relevant_model or is_last_model:
+                return internal_model.eval(expression, model_completion)
+        return None
diff --git a/mythril_sol/laser/smt/solver/__init__.py b/mythril_sol/laser/smt/solver/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..46717949c9d5032d079d3e0a0dc7b0a05c5d0ddb
--- /dev/null
+++ b/mythril_sol/laser/smt/solver/__init__.py
@@ -0,0 +1,9 @@
+import z3
+
+from mythril.laser.smt.solver.solver import Solver, Optimize, BaseSolver
+from mythril.laser.smt.solver.independence_solver import IndependenceSolver
+from mythril.laser.smt.solver.solver_statistics import SolverStatistics
+from mythril.support.support_args import args
+
+if args.parallel_solving:
+    z3.set_param("parallel.enable", True)
diff --git a/mythril_sol/laser/smt/solver/independence_solver.py b/mythril_sol/laser/smt/solver/independence_solver.py
new file mode 100644
index 0000000000000000000000000000000000000000..6c54d18a9579b5c2eb27b1662fa327fa0b3092a3
--- /dev/null
+++ b/mythril_sol/laser/smt/solver/independence_solver.py
@@ -0,0 +1,152 @@
+import z3
+
+from mythril.laser.smt.model import Model
+from mythril.laser.smt.bool import Bool
+from mythril.laser.smt.solver.solver_statistics import stat_smt_query
+
+from typing import Set, Tuple, Dict, List, cast
+
+
+def _get_expr_variables(expression: z3.ExprRef) -> List[z3.ExprRef]:
+    """
+    Gets the variables that make up the current expression
+    :param expression:
+    :return:
+    """
+    result = []
+    if not expression.children() and not isinstance(expression, z3.BitVecNumRef):
+        result.append(expression)
+    for child in expression.children():
+        c_children = _get_expr_variables(child)
+        result.extend(c_children)
+    return result
+
+
+class DependenceBucket:
+    """Bucket object to contain a set of conditions that are dependent on each other"""
+
+    def __init__(self, variables=None, conditions=None):
+        """
+        Initializes a DependenceBucket object
+        :param variables: Variables contained in the conditions
+        :param conditions: The conditions that are dependent on each other
+        """
+        self.variables: List[z3.ExprRef] = variables or []
+        self.conditions: List[z3.ExprRef] = conditions or []
+
+
+class DependenceMap:
+    """DependenceMap object that maintains a set of dependence buckets, used to separate independent smt queries"""
+
+    def __init__(self):
+        """Initializes a DependenceMap object"""
+        self.buckets: List[DependenceBucket] = []
+        self.variable_map: Dict[str, DependenceBucket] = {}
+
+    def add_condition(self, condition: z3.BoolRef) -> None:
+        """
+        Add condition to the dependence map
+        :param condition: The condition that is to be added to the dependence map
+        """
+        variables = set(_get_expr_variables(condition))
+        relevant_buckets = set()
+        for variable in variables:
+            try:
+                bucket = self.variable_map[str(variable)]
+                relevant_buckets.add(bucket)
+            except KeyError:
+                continue
+
+        new_bucket = DependenceBucket(variables, [condition])
+        self.buckets.append(new_bucket)
+
+        if relevant_buckets:
+            # Merge buckets, and rewrite variable map accordingly
+            relevant_buckets.add(new_bucket)
+            new_bucket = self._merge_buckets(relevant_buckets)
+
+        for variable in new_bucket.variables:
+            self.variable_map[str(variable)] = new_bucket
+
+    def _merge_buckets(self, bucket_list: Set[DependenceBucket]) -> DependenceBucket:
+        """Merges the buckets in bucket list"""
+        variables: List[str] = []
+        conditions: List[z3.BoolRef] = []
+        for bucket in bucket_list:
+            self.buckets.remove(bucket)
+            variables += bucket.variables
+            conditions += bucket.conditions
+
+        new_bucket = DependenceBucket(variables, conditions)
+        self.buckets.append(new_bucket)
+
+        return new_bucket
+
+
+class IndependenceSolver:
+    """An SMT solver object that uses independence optimization"""
+
+    def __init__(self):
+        """"""
+        self.raw = z3.Solver()
+        self.constraints = []
+        self.models = []
+
+    def set_timeout(self, timeout: int) -> None:
+        """Sets the timeout that will be used by this solver, timeout is in
+        milliseconds.
+
+        :param timeout:
+        """
+        self.raw.set(timeout=timeout)
+
+    def add(self, *constraints: Bool) -> None:
+        """Adds the constraints to this solver.
+
+        :param constraints: constraints to add
+        """
+        raw_constraints: List[z3.BoolRef] = [
+            c.raw for c in cast(Tuple[Bool], constraints)
+        ]
+        self.constraints.extend(raw_constraints)
+
+    def append(self, *constraints: Tuple[Bool]) -> None:
+        """Adds the constraints to this solver.
+
+        :param constraints: constraints to add
+        """
+        raw_constraints: List[z3.BoolRef] = [
+            c.raw for c in cast(Tuple[Bool], constraints)
+        ]
+        self.constraints.extend(raw_constraints)
+
+    @stat_smt_query
+    def check(self) -> z3.CheckSatResult:
+        """Returns z3 smt check result."""
+        dependence_map = DependenceMap()
+        for constraint in self.constraints:
+            dependence_map.add_condition(constraint)
+
+        self.models = []
+        for bucket in dependence_map.buckets:
+            self.raw.reset()
+            self.raw.append(*bucket.conditions)
+            check_result = self.raw.check()
+            if check_result == z3.sat:
+                self.models.append(self.raw.model())
+            else:
+                return check_result
+
+        return z3.sat
+
+    def model(self) -> Model:
+        """Returns z3 model for a solution."""
+        return Model(self.models)
+
+    def reset(self) -> None:
+        """Reset this solver."""
+        self.constraints = []
+
+    def pop(self, num) -> None:
+        """Pop num constraints from this solver."""
+        self.constraints.pop(num)
diff --git a/mythril_sol/laser/smt/solver/solver.py b/mythril_sol/laser/smt/solver/solver.py
new file mode 100644
index 0000000000000000000000000000000000000000..bb729b90430c34a04177918cbb36cb7cd38f0478
--- /dev/null
+++ b/mythril_sol/laser/smt/solver/solver.py
@@ -0,0 +1,121 @@
+"""This module contains an abstract SMT representation of an SMT solver."""
+import logging
+import os
+import sys
+import z3
+from typing import Union, cast, TypeVar, Generic, List, Sequence
+
+from mythril.laser.smt.expression import Expression
+from mythril.laser.smt.model import Model
+from mythril.laser.smt.bool import Bool
+from mythril.laser.smt.solver.solver_statistics import stat_smt_query
+
+T = TypeVar("T", bound=Union[z3.Solver, z3.Optimize])
+
+log = logging.getLogger(__name__)
+
+
+class BaseSolver(Generic[T]):
+    def __init__(self, raw: T) -> None:
+        """"""
+        self.raw = raw
+
+    def set_timeout(self, timeout: int) -> None:
+        """Sets the timeout that will be used by this solver, timeout is in
+        milliseconds.
+
+        :param timeout:
+        """
+        self.raw.set(timeout=timeout)
+
+    def add(self, *constraints: Bool) -> None:
+        """Adds the constraints to this solver.
+
+        :param constraints:
+        :return:
+        """
+        z3_constraints: Sequence[z3.BoolRef] = [
+            c.raw for c in cast(List[Bool], constraints)
+        ]
+        self.raw.add(z3_constraints)
+
+    def append(self, *constraints: Bool) -> None:
+        """Adds the constraints to this solver.
+
+        :param constraints:
+        :return:
+        """
+        self.add(*constraints)
+
+    @stat_smt_query
+    def check(self, *args) -> z3.CheckSatResult:
+        """Returns z3 smt check result.
+        Also suppresses the stdout when running z3 library's check() to avoid unnecessary output
+        :return: The evaluated result which is either of sat, unsat or unknown
+        """
+        old_stdout = sys.stdout
+        with open(os.devnull, "w") as dev_null_fd:
+            sys.stdout = dev_null_fd
+            try:
+                evaluate = self.raw.check(args)
+            except z3.z3types.Z3Exception as e:
+                # Some requests crash the solver
+                evaluate = z3.unknown
+                log.info(f"Encountered Z3 exception when checking the constraints: {e}")
+        sys.stdout = old_stdout
+        return evaluate
+
+    def model(self) -> Model:
+        """Returns z3 model for a solution.
+
+        :return:
+        """
+        try:
+            return Model([self.raw.model()])
+        except z3.z3types.Z3Exception as e:
+            log.info(f"Encountered a Z3 exception while querying for the model: {e}")
+            return Model()
+
+    def sexpr(self):
+        return self.raw.sexpr()
+
+
+class Solver(BaseSolver[z3.Solver]):
+    """An SMT solver object."""
+
+    def __init__(self) -> None:
+        """"""
+        super().__init__(z3.Solver())
+
+    def reset(self) -> None:
+        """Reset this solver."""
+        self.raw.reset()
+
+    def pop(self, num: int) -> None:
+        """Pop num constraints from this solver.
+
+        :param num:
+        """
+        self.raw.pop(num)
+
+
+class Optimize(BaseSolver[z3.Optimize]):
+    """An optimizing smt solver."""
+
+    def __init__(self) -> None:
+        """Create a new optimizing solver instance."""
+        super().__init__(z3.Optimize())
+
+    def minimize(self, element: Expression[z3.ExprRef]) -> None:
+        """In solving this solver will try to minimize the passed expression.
+
+        :param element:
+        """
+        self.raw.minimize(element.raw)
+
+    def maximize(self, element: Expression[z3.ExprRef]) -> None:
+        """In solving this solver will try to maximize the passed expression.
+
+        :param element:
+        """
+        self.raw.maximize(element.raw)
diff --git a/mythril_sol/laser/smt/solver/solver_statistics.py b/mythril_sol/laser/smt/solver/solver_statistics.py
new file mode 100644
index 0000000000000000000000000000000000000000..e87dfbb47a714e0cfcdaa2a0a017edffdd8e803a
--- /dev/null
+++ b/mythril_sol/laser/smt/solver/solver_statistics.py
@@ -0,0 +1,43 @@
+from time import time
+
+from mythril.support.support_utils import Singleton
+
+from typing import Callable
+
+
+def stat_smt_query(func: Callable):
+    """Measures statistics for annotated smt query check function"""
+    stat_store = SolverStatistics()
+
+    def function_wrapper(*args, **kwargs):
+        if not stat_store.enabled:
+            return func(*args, **kwargs)
+
+        stat_store.query_count += 1
+        begin = time()
+
+        result = func(*args, **kwargs)
+
+        end = time()
+        stat_store.solver_time += end - begin
+
+        return result
+
+    return function_wrapper
+
+
+class SolverStatistics(object, metaclass=Singleton):
+    """Solver Statistics Class
+
+    Keeps track of the important statistics around smt queries
+    """
+
+    def __init__(self):
+        self.enabled = False
+        self.query_count = 0
+        self.solver_time = 0
+
+    def __repr__(self):
+        return "Query count: {} \nSolver time: {}".format(
+            self.query_count, self.solver_time
+        )
diff --git a/mythril_sol/mythril/__init__.py b/mythril_sol/mythril/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..fc0a4935e45061899290125c6cf70485783556af
--- /dev/null
+++ b/mythril_sol/mythril/__init__.py
@@ -0,0 +1,3 @@
+from .mythril_disassembler import MythrilDisassembler
+from .mythril_analyzer import MythrilAnalyzer
+from .mythril_config import MythrilConfig
diff --git a/mythril_sol/mythril/mythril_analyzer.py b/mythril_sol/mythril/mythril_analyzer.py
new file mode 100644
index 0000000000000000000000000000000000000000..8951027f9110815b6528cb24de8b15ed1fa071f9
--- /dev/null
+++ b/mythril_sol/mythril/mythril_analyzer.py
@@ -0,0 +1,199 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+
+import logging
+import traceback
+from typing import Optional, List
+from argparse import Namespace
+
+from . import MythrilDisassembler
+from mythril.support.source_support import Source
+from mythril.support.loader import DynLoader
+from mythril.support.support_args import args
+from mythril.analysis.symbolic import SymExecWrapper
+from mythril.analysis.callgraph import generate_graph
+from mythril.analysis.traceexplore import get_serializable_statespace
+from mythril.analysis.security import fire_lasers, retrieve_callback_issues
+from mythril.analysis.report import Report, Issue
+from mythril.ethereum.evmcontract import EVMContract
+from mythril.laser.smt import SolverStatistics
+from mythril.support.start_time import StartTime
+from mythril.exceptions import DetectorNotFoundError
+from mythril.laser.execution_info import ExecutionInfo
+
+log = logging.getLogger(__name__)
+
+LARGE_TIME = 300
+
+
+class MythrilAnalyzer:
+    """
+    The Mythril Analyzer class
+    Responsible for the analysis of the smart contracts
+    """
+
+    def __init__(
+        self,
+        disassembler: MythrilDisassembler,
+        cmd_args: Namespace,
+        strategy: str = "dfs",
+        address: Optional[str] = None,
+    ):
+        """
+
+        :param disassembler: The MythrilDisassembler class
+        :param cmd_args: The command line args Namespace
+        :param strategy: Search strategy
+        :param address: Address of the contract
+        """
+        self.eth = disassembler.eth
+        self.contracts: List[EVMContract] = disassembler.contracts or []
+        self.enable_online_lookup = disassembler.enable_online_lookup
+        self.use_onchain_data = not cmd_args.no_onchain_data
+        self.strategy = strategy
+        self.address = address
+        self.max_depth = cmd_args.max_depth
+        self.execution_timeout = cmd_args.execution_timeout
+        self.loop_bound = cmd_args.loop_bound
+        self.create_timeout = cmd_args.create_timeout
+        self.disable_dependency_pruning = cmd_args.disable_dependency_pruning
+        self.custom_modules_directory = (
+            cmd_args.custom_modules_directory
+            if cmd_args.custom_modules_directory
+            else ""
+        )
+        args.pruning_factor = cmd_args.pruning_factor
+        args.solver_timeout = cmd_args.solver_timeout
+        args.parallel_solving = cmd_args.parallel_solving
+        args.unconstrained_storage = cmd_args.unconstrained_storage
+        args.call_depth_limit = cmd_args.call_depth_limit
+        args.disable_iprof = cmd_args.disable_iprof
+        args.solver_log = cmd_args.solver_log
+        args.transaction_sequences = cmd_args.transaction_sequences
+        args.disable_coverage_strategy = cmd_args.disable_coverage_strategy
+        args.disable_mutation_pruner = cmd_args.disable_mutation_pruner
+
+        if args.pruning_factor is None:
+            if self.execution_timeout > LARGE_TIME:
+                args.pruning_factor = 1
+            else:
+                args.pruning_factor = 0
+
+    def dump_statespace(self, contract: EVMContract = None) -> str:
+        """
+        Returns serializable statespace of the contract
+        :param contract: The Contract on which the analysis should be done
+        :return: The serialized state space
+        """
+        sym = SymExecWrapper(
+            contract or self.contracts[0],
+            self.address,
+            self.strategy,
+            dynloader=DynLoader(self.eth, active=self.use_onchain_data),
+            max_depth=self.max_depth,
+            execution_timeout=self.execution_timeout,
+            create_timeout=self.create_timeout,
+            disable_dependency_pruning=self.disable_dependency_pruning,
+            run_analysis_modules=False,
+            custom_modules_directory=self.custom_modules_directory,
+        )
+
+        return get_serializable_statespace(sym)
+
+    def graph_html(
+        self,
+        contract: EVMContract = None,
+        enable_physics: bool = False,
+        phrackify: bool = False,
+        transaction_count: Optional[int] = None,
+    ) -> str:
+        """
+
+        :param contract: The Contract on which the analysis should be done
+        :param enable_physics: If true then enables the graph physics simulation
+        :param phrackify: If true generates Phrack-style call graph
+        :param transaction_count: The amount of transactions to be executed
+        :return: The generated graph in html format
+        """
+
+        sym = SymExecWrapper(
+            contract or self.contracts[0],
+            self.address,
+            self.strategy,
+            dynloader=DynLoader(self.eth, active=self.use_onchain_data),
+            max_depth=self.max_depth,
+            execution_timeout=self.execution_timeout,
+            transaction_count=transaction_count,
+            create_timeout=self.create_timeout,
+            disable_dependency_pruning=self.disable_dependency_pruning,
+            run_analysis_modules=False,
+            custom_modules_directory=self.custom_modules_directory,
+        )
+        return generate_graph(sym, physics=enable_physics, phrackify=phrackify)
+
+    def fire_lasers(
+        self,
+        modules: Optional[List[str]] = None,
+        transaction_count: Optional[int] = None,
+    ) -> Report:
+        """
+        :param modules: The analysis modules which should be executed
+        :param transaction_count: The amount of transactions to be executed
+        :return: The Report class which contains the all the issues/vulnerabilities
+        """
+        all_issues: List[Issue] = []
+        SolverStatistics().enabled = True
+        exceptions = []
+        execution_info: Optional[List[ExecutionInfo]] = None
+        for contract in self.contracts:
+            StartTime()  # Reinitialize start time for new contracts
+            try:
+                sym = SymExecWrapper(
+                    contract,
+                    self.address,
+                    self.strategy,
+                    dynloader=DynLoader(self.eth, active=self.use_onchain_data),
+                    max_depth=self.max_depth,
+                    execution_timeout=self.execution_timeout,
+                    loop_bound=self.loop_bound,
+                    create_timeout=self.create_timeout,
+                    transaction_count=transaction_count,
+                    modules=modules,
+                    compulsory_statespace=False,
+                    disable_dependency_pruning=self.disable_dependency_pruning,
+                    custom_modules_directory=self.custom_modules_directory,
+                )
+                issues = fire_lasers(sym, modules)
+                execution_info = sym.execution_info
+            except DetectorNotFoundError as e:
+                # Bubble up
+                raise e
+            except KeyboardInterrupt:
+                log.critical("Keyboard Interrupt")
+                issues = retrieve_callback_issues(modules)
+            except Exception:
+                log.critical(
+                    "Exception occurred, aborting analysis. Please report this issue to the Mythril GitHub page.\n"
+                    + traceback.format_exc()
+                )
+                issues = retrieve_callback_issues(modules)
+                exceptions.append(traceback.format_exc())
+            for issue in issues:
+                issue.add_code_info(contract)
+
+            all_issues += issues
+            log.info("Solver statistics: \n{}".format(str(SolverStatistics())))
+
+        source_data = Source()
+        source_data.get_source_from_contracts_list(self.contracts)
+
+        # Finally, output the results
+        report = Report(
+            contracts=self.contracts,
+            exceptions=exceptions,
+            execution_info=execution_info,
+        )
+        for issue in all_issues:
+            report.append_issue(issue)
+
+        return report
diff --git a/mythril_sol/mythril/mythril_config.py b/mythril_sol/mythril/mythril_config.py
new file mode 100644
index 0000000000000000000000000000000000000000..14b3bc362c30ed0db730179a4374b3eda0c0eedf
--- /dev/null
+++ b/mythril_sol/mythril/mythril_config.py
@@ -0,0 +1,221 @@
+import codecs
+import logging
+import os
+import re
+
+from pathlib import Path
+from shutil import copyfile
+from configparser import ConfigParser
+from typing import Optional
+
+from mythril.exceptions import CriticalError
+from mythril.ethereum.interface.rpc.client import EthJsonRpc
+from mythril.support.lock import LockFile
+
+log = logging.getLogger(__name__)
+
+
+class MythrilConfig:
+    """
+    The Mythril Analyzer class
+    Responsible for setup of the mythril environment
+    """
+
+    def __init__(self):
+        self.infura_id: str = os.getenv("INFURA_ID")
+        self.mythril_dir = self.init_mythril_dir()
+        self.config_path = os.path.join(self.mythril_dir, "config.ini")
+        self._init_config()
+        self.eth: Optional[EthJsonRpc] = None
+
+    def set_api_infura_id(self, id):
+        self.infura_id = id
+
+    @staticmethod
+    def init_mythril_dir() -> str:
+        """
+        Initializes the mythril dir and config.ini file
+        :return: The mythril dir's path
+        """
+
+        try:
+            mythril_dir = os.environ["MYTHRIL_DIR"]
+        except KeyError:
+            mythril_dir = os.path.join(os.path.expanduser("~"), ".mythril")
+
+        if not os.path.exists(mythril_dir):
+            # Initialize data directory
+            log.info("Creating mythril data directory")
+            os.mkdir(mythril_dir)
+
+        db_path = str(Path(mythril_dir) / "signatures.db")
+        if not os.path.exists(db_path):
+            # if the default mythril dir doesn't contain a signature DB
+            # initialize it with the default one from the project root
+            asset_dir = Path(__file__).parent.parent / "support" / "assets"
+            copyfile(str(asset_dir / "signatures.db"), db_path)
+
+        return mythril_dir
+
+    def _init_config(self):
+        """If no config file exists, create it and add default options.
+        Defaults:-
+            - dynamic loading is set to infura by default in the file
+        """
+
+        if not os.path.exists(self.config_path):
+            log.info("No config file found. Creating default: " + self.config_path)
+            open(self.config_path, "a").close()
+
+        config = ConfigParser(allow_no_value=True)
+
+        config.optionxform = str
+        with LockFile(self.config_path):
+            config.read(self.config_path, "utf-8")
+
+            if "defaults" not in config.sections():
+                self._add_default_options(config)
+
+            if not config.has_option("defaults", "dynamic_loading"):
+                self._add_dynamic_loading_option(config)
+
+            if not config.has_option("defaults", "infura_id"):
+                config.set("defaults", "infura_id", "")
+
+            with codecs.open(self.config_path, "w", "utf-8") as fp:
+                config.write(fp)
+
+            if not self.infura_id:
+                self.infura_id = config.get("defaults", "infura_id", fallback="")
+
+    @staticmethod
+    def _add_default_options(config: ConfigParser) -> None:
+        """
+        Adds defaults option to config.ini
+        :param config: The config file object
+        :return: None
+        """
+        config.add_section("defaults")
+
+    @staticmethod
+    def _add_dynamic_loading_option(config: ConfigParser) -> None:
+        """
+        Sets the dynamic loading config option in .mythril/config.ini file
+        :param config: The config file object
+        :return: None
+        """
+        config.set(
+            "defaults", "#– To connect to Infura use dynamic_loading: infura", ""
+        )
+        config.set(
+            "defaults",
+            "#– To connect to Rpc use "
+            "dynamic_loading: HOST:PORT / ganache / infura-[network_name]",
+            "",
+        )
+        config.set(
+            "defaults", "#– To connect to local host use dynamic_loading: localhost", ""
+        )
+        config.set("defaults", "dynamic_loading", "infura")
+
+    def set_api_rpc_infura(self) -> None:
+        """Set the RPC mode to INFURA on Mainnet."""
+        log.info("Using INFURA Main Net for RPC queries")
+        self.eth = EthJsonRpc(
+            "mainnet.infura.io/v3/{}".format(self.infura_id), None, True
+        )
+
+    def set_api_rpc(self, rpc: str = None, rpctls: bool = False) -> None:
+        """
+        Sets the RPC mode to either of ganache or infura
+        :param rpc: either of the strings - ganache, infura-mainnet, infura-rinkeby, infura-kovan, infura-ropsten,
+        infura-goerli, avalanche, arbitrum, bsc, optimism, polygon
+        """
+
+        if rpc == "ganache":
+            rpcconfig = ("localhost", 7545, False)
+
+        elif rpc.startswith("infura-"):
+            network = rpc.replace("infura-", "")
+            layer_one = ["mainnet", "rinkeby", "kovan", "ropsten", "goerli", "sepolia"]
+            layer_two = [
+                "avalanche",
+                "arbitrum",
+                "bsc",
+                "optimism",
+                "polygon",
+                "celo",
+                "starknet",
+                "aurora",
+                "near",
+                "palm",
+            ]
+            if network in layer_one + layer_two:
+                if self.infura_id in (None, ""):
+                    log.info(
+                        "Infura key not provided, so onchain access is disabled. "
+                        "Use --infura-id <INFURA_ID> "
+                        "or set it in the environment variable INFURA_ID "
+                        "or in the ~/.mythril/config.ini file"
+                    )
+                    self.eth = None
+                    return
+                if network in layer_one:
+                    rpcconfig = (
+                        f"{network}.infura.io/v3/{self.infura_id}",
+                        None,
+                        True,
+                    )
+                else:
+                    rpcconfig = (
+                        f"{network}-mainnet.infura.io/v3/{self.infura_id}",
+                        None,
+                        True,
+                    )
+            else:
+                raise CriticalError(
+                    f"Invalid network {network}, use 'mainnet', 'rinkeby', 'kovan', 'ropsten', 'goerli', 'avalanche', 'arbitrum', 'optimism', or 'polygon'"
+                )
+        else:
+            try:
+                host, port = rpc.split(":")
+                rpcconfig = (host, int(port), rpctls)
+            except ValueError:
+                raise CriticalError(
+                    "Invalid RPC argument, use 'ganache', 'infura-[network]', or 'HOST:PORT'"
+                )
+
+        if rpcconfig:
+            log.info("Using RPC settings: %s" % str(rpcconfig))
+            self.eth = EthJsonRpc(rpcconfig[0], rpcconfig[1], rpcconfig[2])
+        else:
+            raise CriticalError("Invalid RPC settings, check help for details.")
+
+    def set_api_rpc_localhost(self) -> None:
+        """Set the RPC mode to a local instance."""
+        log.info("Using default RPC settings: http://localhost:8545")
+        self.eth = EthJsonRpc("localhost", 8545)
+
+    def set_api_from_config_path(self) -> None:
+        """Set the RPC mode based on a given config file."""
+        config = ConfigParser(allow_no_value=False)
+        config.optionxform = str
+        config.read(self.config_path, "utf-8")
+        if config.has_option("defaults", "dynamic_loading"):
+            dynamic_loading = config.get("defaults", "dynamic_loading")
+        else:
+            dynamic_loading = "infura"
+        self._set_rpc(dynamic_loading)
+
+    def _set_rpc(self, rpc_type: str) -> None:
+        """
+        Sets rpc based on the type
+        :param rpc_type: The type of connection: like infura, ganache, localhost
+        :return:
+        """
+        if rpc_type == "infura":
+            self.set_api_rpc_infura()
+        elif rpc_type == "localhost":
+            self.set_api_rpc_localhost()
+        else:
+            self.set_api_rpc(rpc_type)
diff --git a/mythril_sol/mythril/mythril_disassembler.py b/mythril_sol/mythril/mythril_disassembler.py
new file mode 100644
index 0000000000000000000000000000000000000000..236327af8f714648def7fc3b8f2f74d4f0bd3c65
--- /dev/null
+++ b/mythril_sol/mythril/mythril_disassembler.py
@@ -0,0 +1,426 @@
+import json
+import logging
+import os
+from pathlib import Path
+import re
+import shutil
+import solc
+import subprocess
+import sys
+import warnings
+
+from eth_utils import int_to_big_endian
+from semantic_version import Version, NpmSpec
+from typing import List, Tuple, Optional, TYPE_CHECKING
+
+from mythril.support.support_utils import sha3, zpad
+from mythril.ethereum import util
+from mythril.ethereum.interface.rpc.client import EthJsonRpc
+from mythril.exceptions import CriticalError, CompilerError, NoContractFoundError
+from mythril.support import signatures
+from mythril.support.support_utils import rzpad
+from mythril.support.support_args import args
+from mythril.ethereum.evmcontract import EVMContract
+from mythril.ethereum.interface.rpc.exceptions import ConnectionError
+from mythril.solidity.soliditycontract import (
+    SolidityContract,
+    get_contracts_from_file,
+    get_contracts_from_foundry,
+)
+from mythril.support.support_args import args
+
+
+def format_warning(message, category, filename, lineno, line=""):
+    return "{}: {}\n\n".format(str(filename), str(message))
+
+
+warnings.formatwarning = format_warning
+
+
+log = logging.getLogger(__name__)
+
+
+class MythrilDisassembler:
+    """
+    The Mythril Disassembler class
+    Responsible for generating disassembly of smart contracts:
+        - Compiles solc code from file/onchain
+        - Can also be used to access onchain storage data
+    """
+
+    def __init__(
+        self,
+        eth: Optional[EthJsonRpc] = None,
+        solc_version: str = None,
+        solc_settings_json: str = None,
+        enable_online_lookup: bool = False,
+        solc_args=None,
+    ) -> None:
+        args.solc_args = solc_args
+        self.solc_version = solc_version
+        self.solc_binary = self._init_solc_binary(solc_version)
+        self.solc_settings_json = solc_settings_json
+        self.eth = eth
+        self.enable_online_lookup = enable_online_lookup
+        self.sigs = signatures.SignatureDB(enable_online_lookup=enable_online_lookup)
+        self.contracts: List[EVMContract] = []
+
+    @staticmethod
+    def _init_solc_binary(version: str) -> Optional[str]:
+        """
+        Only proper versions are supported. No nightlies, commits etc (such as available in remix).
+        This functions extracts
+        :param version: Version of the solc binary required
+        :return: AThe solc binary of the corresponding version
+        """
+
+        if not version:
+            return None
+
+        # tried converting input to semver, seemed not necessary so just slicing for now
+        try:
+            main_version = solc.get_solc_version_string()
+        except:
+            main_version = ""  # allow missing solc will download instead
+        main_version_number = re.search(r"\d+.\d+.\d+", main_version)
+
+        if version.startswith("v"):
+            version = version[1:]
+        if version == main_version_number:
+            log.info("Given version matches installed version")
+            solc_binary = os.environ.get("SOLC") or "solc"
+        else:
+            solc_binary = util.solc_exists(version)
+            if solc_binary is None:
+                raise CriticalError(
+                    "The version of solc that is needed cannot be installed automatically"
+                )
+            else:
+                log.info("Setting the compiler to %s", solc_binary)
+
+        return solc_binary
+
+    def load_from_bytecode(
+        self, code: str, bin_runtime: bool = False, address: Optional[str] = None
+    ) -> Tuple[str, EVMContract]:
+        """
+        Returns the address and the contract class for the given bytecode
+        :param code: Bytecode
+        :param bin_runtime: Whether the code is runtime code or creation code
+        :param address: address of contract
+        :return: tuple(address, Contract class)
+        """
+        if address is None:
+            address = util.get_indexed_address(0)
+
+        if bin_runtime:
+            self.contracts.append(
+                EVMContract(
+                    code=code,
+                    name="MAIN",
+                    enable_online_lookup=self.enable_online_lookup,
+                )
+            )
+        else:
+            self.contracts.append(
+                EVMContract(
+                    creation_code=code,
+                    name="MAIN",
+                    enable_online_lookup=self.enable_online_lookup,
+                )
+            )
+        return address, self.contracts[-1]  # return address and contract object
+
+    def load_from_address(self, address: str) -> Tuple[str, EVMContract]:
+        """
+        Returns the contract given it's on chain address
+        :param address: The on chain address of a contract
+        :return: tuple(address, contract)
+        """
+        if not re.match(r"0x[a-fA-F0-9]{40}", address):
+            raise CriticalError("Invalid contract address. Expected format is '0x...'.")
+
+        if self.eth is None:
+            raise CriticalError(
+                "Please check whether the Infura key is set or use a different RPC method."
+            )
+
+        try:
+            code = self.eth.eth_getCode(address)
+        except FileNotFoundError as e:
+            raise CriticalError("IPC error: " + str(e))
+        except ConnectionError:
+            raise CriticalError(
+                "Could not connect to RPC server. Make sure that your node is running and that RPC parameters are set correctly."
+            )
+        except Exception as e:
+            raise CriticalError("IPC / RPC error: " + str(e))
+
+        if code == "0x" or code == "0x0":
+            raise CriticalError(
+                "Received an empty response from eth_getCode. Check the contract address and verify that you are on the correct chain."
+            )
+        else:
+            self.contracts.append(
+                EVMContract(
+                    code, name=address, enable_online_lookup=self.enable_online_lookup
+                )
+            )
+        return address, self.contracts[-1]  # return address and contract object
+
+    def load_from_foundry(self):
+        project_root = os.getcwd()
+
+        cmd = ["forge", "build", "--build-info", "--force"]
+
+        with subprocess.Popen(
+            cmd,
+            stdout=subprocess.PIPE,
+            stderr=subprocess.PIPE,
+            cwd=project_root,
+            executable=shutil.which(cmd[0]),
+        ) as p:
+
+            stdout, stderr = p.communicate()
+            stdout, stderr = (stdout.decode(), stderr.decode())
+            if stderr:
+                log.error(stderr)
+
+            build_dir = Path(project_root, "artifacts", "contracts", "build-info")
+
+        build_dir = os.path.join(project_root, "artifacts", "contracts", "build-info")
+
+        address = util.get_indexed_address(0)
+
+        files = sorted(
+            os.listdir(build_dir), key=lambda x: os.path.getmtime(Path(build_dir, x))
+        )
+
+        files = [str(f) for f in files if str(f).endswith(".json")]
+        if not files:
+            txt = f"`compile` failed. Can you run it?\n{build_dir} is empty"
+            raise Exception(txt)
+        contracts = []
+        for file in files:
+            build_info = Path(build_dir, file)
+
+            uniq_id = file if ".json" not in file else file[0:-5]
+
+            with open(build_info, encoding="utf8") as file_desc:
+                loaded_json = json.load(file_desc)
+
+                targets_json = loaded_json["output"]
+
+                version_from_config = loaded_json["solcVersion"]
+                input_json = loaded_json["input"]
+                compiler = "solc" if input_json["language"] == "Solidity" else "vyper"
+                optimizer = input_json["settings"]["optimizer"]["enabled"]
+
+                if compiler == "vyper":
+                    raise NotImplementedError("Support for Vyper is not implemented.")
+
+                if "contracts" in targets_json:
+                    for original_filename, contracts_info in targets_json[
+                        "contracts"
+                    ].items():
+                        for contract in get_contracts_from_foundry(
+                            original_filename, targets_json
+                        ):
+                            self.contracts.append(contract)
+                            contracts.append(contract)
+                            self.sigs.add_sigs(original_filename, targets_json)
+        return address, contracts
+
+    def check_run_integer_module(self, source_file):
+
+        with open(source_file, "r") as f:
+            for line in f:
+                if "unchecked" in line:
+                    return True
+
+        if self.solc_version is None:
+            # Runs the version installed in the system (likely 0.8.0+)
+            # Post 0.8.0 versions automatically add assertions to sanity check arithmetic
+            return False
+
+        # Strip leading 'v' from version if it's there
+        normalized_version = self.solc_version.lstrip("v")
+
+        # Check if solc_version is not provided or doesn't match the required version
+        # As post 0.8.0 solc versions automatically add assertions to sanity check arithmetic
+        if not self.solc_version or not NpmSpec("^0.8.0").match(
+            Version(normalized_version)
+        ):
+            return True
+
+        return False
+
+    def load_from_solidity(
+        self, solidity_files: List[str]
+    ) -> Tuple[str, List[SolidityContract]]:
+        """
+
+        :param solidity_files: List of solidity_files
+        :return: tuple of address, contract class list
+        """
+        address = util.get_indexed_address(0)
+        contracts = []
+        for file in solidity_files:
+            if ":" in file:
+                file, contract_name = file.split(":")
+            else:
+                contract_name = None
+
+            file = os.path.expanduser(file)
+            solc_binary = self.solc_binary
+            if solc_binary is None:
+                solc_binary, self.solc_version = util.extract_binary(file)
+            if self.check_run_integer_module(file) is False:
+                args.use_integer_module = False
+            try:
+                # import signatures from solidity source
+                self.sigs.import_solidity_file(
+                    file,
+                    solc_binary=solc_binary,
+                    solc_settings_json=self.solc_settings_json,
+                )
+                if contract_name is not None:
+                    contract = SolidityContract(
+                        input_file=file,
+                        name=contract_name,
+                        solc_settings_json=self.solc_settings_json,
+                        solc_binary=solc_binary,
+                    )
+                    self.contracts.append(contract)
+                    contracts.append(contract)
+                else:
+                    for contract in get_contracts_from_file(
+                        input_file=file,
+                        solc_settings_json=self.solc_settings_json,
+                        solc_binary=solc_binary,
+                    ):
+                        self.contracts.append(contract)
+                        contracts.append(contract)
+
+            except FileNotFoundError as e:
+                raise CriticalError(f"Input file not found {e}")
+            except CompilerError as e:
+                error_msg = str(e)
+                # Check if error is related to solidity version mismatch
+                if (
+                    "Error: Source file requires different compiler version"
+                    in error_msg
+                ):
+                    # Grab relevant line "pragma solidity <solv>...", excluding any comments
+                    solv_pragma_line = error_msg.split("\n")[-3].split("//")[0]
+                    # Grab solidity version from relevant line
+                    solv_match = re.findall(r"[0-9]+\.[0-9]+\.[0-9]+", solv_pragma_line)
+                    error_suggestion = (
+                        "<version_number>" if len(solv_match) != 1 else solv_match[0]
+                    )
+                    error_msg = (
+                        error_msg
+                        + '\nSolidityVersionMismatch: Try adding the option "--solv '
+                        + error_suggestion
+                        + '"\n'
+                    )
+
+                raise CriticalError(error_msg)
+            except NoContractFoundError:
+                log.error(
+                    "The file " + file + " does not contain a compilable contract."
+                )
+
+        return address, contracts
+
+    @staticmethod
+    def hash_for_function_signature(func: str) -> str:
+        """
+        Return function nadmes corresponding signature hash
+        :param func: function name
+        :return: Its hash signature
+        """
+        return "0x%s" % sha3(func)[:4].hex()
+
+    def get_state_variable_from_storage(
+        self, address: str, params: Optional[List[str]] = None
+    ) -> str:
+        """
+        Get variables from the storage
+        :param address: The contract address
+        :param params: The list of parameters param types: [position, length] or ["mapping", position, key1, key2, ...  ]
+                       or [position, length, array]
+        :return: The corresponding storage slot and its value
+        """
+        params = params or []
+        (position, length, mappings) = (0, 1, [])
+        try:
+            if params[0] == "mapping":
+                if len(params) < 3:
+                    raise CriticalError("Invalid number of parameters.")
+                position = int(params[1])
+                position_formatted = zpad(int_to_big_endian(position), 32)
+                for i in range(2, len(params)):
+                    key = bytes(params[i], "utf8")
+                    key_formatted = rzpad(key, 32)
+                    mappings.append(
+                        int.from_bytes(
+                            sha3(key_formatted + position_formatted), byteorder="big"
+                        )
+                    )
+
+                length = len(mappings)
+                if length == 1:
+                    position = mappings[0]
+
+            else:
+                if len(params) >= 4:
+                    raise CriticalError("Invalid number of parameters.")
+
+                if len(params) >= 1:
+                    position = int(params[0])
+                if len(params) >= 2:
+                    length = int(params[1])
+                if len(params) == 3 and params[2] == "array":
+                    position_formatted = zpad(int_to_big_endian(position), 32)
+                    position = int.from_bytes(sha3(position_formatted), byteorder="big")
+
+        except ValueError:
+            raise CriticalError(
+                "Invalid storage index. Please provide a numeric value."
+            )
+
+        outtxt = []
+
+        try:
+            if length == 1:
+                outtxt.append(
+                    "{}: {}".format(
+                        position, self.eth.eth_getStorageAt(address, position)
+                    )
+                )
+            else:
+                if len(mappings) > 0:
+                    for i in range(0, len(mappings)):
+                        position = mappings[i]
+                        outtxt.append(
+                            "{}: {}".format(
+                                hex(position),
+                                self.eth.eth_getStorageAt(address, position),
+                            )
+                        )
+                else:
+                    for i in range(position, position + length):
+                        outtxt.append(
+                            "{}: {}".format(
+                                hex(i), self.eth.eth_getStorageAt(address, i)
+                            )
+                        )
+        except FileNotFoundError as e:
+            raise CriticalError("IPC error: " + str(e))
+        except ConnectionError:
+            raise CriticalError(
+                "Could not connect to RPC server. "
+                "Make sure that your node is running and that RPC parameters are set correctly."
+            )
+        return "\n".join(outtxt)
diff --git a/mythril_sol/plugin/__init__.py b/mythril_sol/plugin/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..28aa0f9722f30c2b94c33ed8b8836f8bd2aaf5d3
--- /dev/null
+++ b/mythril_sol/plugin/__init__.py
@@ -0,0 +1,2 @@
+from mythril.plugin.interface import MythrilPlugin, MythrilCLIPlugin
+from mythril.plugin.loader import MythrilPluginLoader
diff --git a/mythril_sol/plugin/discovery.py b/mythril_sol/plugin/discovery.py
new file mode 100644
index 0000000000000000000000000000000000000000..9f7ea02eab05f5d35510dba7bcaefce4d4923253
--- /dev/null
+++ b/mythril_sol/plugin/discovery.py
@@ -0,0 +1,57 @@
+import pkg_resources
+from mythril.support.support_utils import Singleton
+from mythril.plugin.interface import MythrilPlugin
+
+from typing import List, Dict, Any, Optional
+
+
+class PluginDiscovery(object, metaclass=Singleton):
+    """PluginDiscovery class
+
+    This plugin implements the logic to discover and build plugins in installed python packages
+    """
+
+    # Installed plugins structure. Retrieves all modules that have an entry point for mythril.plugins
+    _installed_plugins: Optional[Dict[str, Any]] = None
+
+    def init_installed_plugins(self):
+        self._installed_plugins = {
+            entry_point.name: entry_point.load()
+            for entry_point in pkg_resources.iter_entry_points("mythril.plugins")
+        }
+
+    @property
+    def installed_plugins(self):
+        if self._installed_plugins is None:
+            self.init_installed_plugins()
+        return self._installed_plugins
+
+    def is_installed(self, plugin_name: str) -> bool:
+        """Returns whether there is python package with a plugin with plugin_name"""
+        return plugin_name in self.installed_plugins.keys()
+
+    def build_plugin(self, plugin_name: str, plugin_args: Dict) -> MythrilPlugin:
+        """Returns the plugin for the given plugin_name  if it is installed"""
+        if not self.is_installed(plugin_name):
+            raise ValueError(f"Plugin with name: `{plugin_name}` is not installed")
+
+        plugin = self.installed_plugins.get(plugin_name)
+        if plugin is None or not issubclass(plugin, MythrilPlugin):
+            raise ValueError(f"No valid plugin was found for {plugin_name}")
+
+        return plugin(**plugin_args)
+
+    def get_plugins(self, default_enabled=None) -> List[str]:
+        """Gets a list of installed mythril plugins
+
+        :param default_enabled: Select plugins that are enabled by default
+        :return: List of plugin names
+        """
+        if default_enabled is None:
+            return list(self.installed_plugins.keys())
+
+        return [
+            plugin_name
+            for plugin_name, plugin_class in self.installed_plugins.items()
+            if plugin_class.plugin_default_enabled == default_enabled
+        ]
diff --git a/mythril_sol/plugin/interface.py b/mythril_sol/plugin/interface.py
new file mode 100644
index 0000000000000000000000000000000000000000..fca6387a9965bd24421cc5ae1a3faa12c41fed8a
--- /dev/null
+++ b/mythril_sol/plugin/interface.py
@@ -0,0 +1,45 @@
+from abc import ABC
+from mythril.laser.plugin.builder import PluginBuilder as LaserPluginBuilder
+
+
+class MythrilPlugin:
+    """MythrilPlugin interface
+
+    Mythril Plugins can be used to extend Mythril in different ways:
+    1. Extend Laser, in which case the LaserPlugin interface must also be extended
+    2. Extend Laser with a new search strategy in which case the SearchStrategy needs to be implemented
+    3. Add an analysis module, in this case the AnalysisModule interface needs to be implemented
+    4. Add new commands to the Mythril cli, using the MythrilCLIPlugin Interface
+    """
+
+    author = "Default Author"
+    name = "Plugin Name"
+    plugin_license = "All rights reserved."
+    plugin_type = "Mythril Plugin"
+    plugin_version = "0.0.1 "
+    plugin_description = "This is an example plugin description"
+
+    def __init__(self, **kwargs):
+        pass
+
+    def __repr__(self):
+        plugin_name = type(self).__name__
+        return f"{plugin_name} - {self.plugin_version} - {self.author}"
+
+
+class MythrilCLIPlugin(MythrilPlugin):
+    """MythrilCLIPlugin interface
+
+    This interface should be implemented by mythril plugins that aim to add commands to the mythril cli
+    """
+
+    pass
+
+
+class MythrilLaserPlugin(MythrilPlugin, LaserPluginBuilder, ABC):
+    """Mythril Laser Plugin interface
+
+    Plugins of this type are used to instrument the laser EVM
+    """
+
+    pass
diff --git a/mythril_sol/plugin/loader.py b/mythril_sol/plugin/loader.py
new file mode 100644
index 0000000000000000000000000000000000000000..b41bc16eb9ab8a4352d85662796e09fa8781d508
--- /dev/null
+++ b/mythril_sol/plugin/loader.py
@@ -0,0 +1,78 @@
+from mythril.analysis.module import DetectionModule
+
+from mythril.plugin.interface import MythrilPlugin, MythrilLaserPlugin
+from mythril.plugin.discovery import PluginDiscovery
+from mythril.support.support_utils import Singleton
+
+from mythril.analysis.module.loader import ModuleLoader
+from mythril.laser.plugin.loader import LaserPluginLoader
+from typing import Dict
+import logging
+
+log = logging.getLogger(__name__)
+
+
+class UnsupportedPluginType(Exception):
+    """Raised when a plugin with an unsupported type is loaded"""
+
+    pass
+
+
+class MythrilPluginLoader(object, metaclass=Singleton):
+    """MythrilPluginLoader singleton
+
+    This object permits loading MythrilPlugin's
+    """
+
+    def __init__(self):
+        log.info("Initializing mythril plugin loader")
+        self.loaded_plugins = []
+        self.plugin_args: Dict[str, Dict] = dict()
+        self._load_default_enabled()
+
+    def set_args(self, plugin_name: str, **kwargs):
+        self.plugin_args[plugin_name] = kwargs
+
+    def load(self, plugin: MythrilPlugin):
+        """Loads the passed plugin
+
+        This function handles input validation and dispatches loading to type specific loaders.
+        Supported plugin types:
+         - laser plugins
+         - detection modules
+        """
+        if not isinstance(plugin, MythrilPlugin):
+            raise ValueError("Passed plugin is not of type MythrilPlugin")
+        logging.info(f"Loading plugin: {plugin.name}")
+
+        log.info(f"Loading plugin: {str(plugin)}")
+        if isinstance(plugin, DetectionModule):
+            self._load_detection_module(plugin)
+        elif isinstance(plugin, MythrilLaserPlugin):
+            self._load_laser_plugin(plugin)
+        else:
+            raise UnsupportedPluginType("Passed plugin type is not yet supported")
+
+        self.loaded_plugins.append(plugin)
+        log.info(f"Finished loading plugin: {plugin.name}")
+
+    @staticmethod
+    def _load_detection_module(plugin: DetectionModule):
+        """Loads the passed detection module"""
+        log.info(f"Loading detection module: {plugin.name}")
+        ModuleLoader().register_module(plugin)
+
+    @staticmethod
+    def _load_laser_plugin(plugin: MythrilLaserPlugin):
+        """Loads the laser plugin"""
+        log.info(f"Loading laser plugin: {plugin.name}")
+        LaserPluginLoader().load(plugin)
+
+    def _load_default_enabled(self):
+        """Loads the plugins that have the default enabled flag"""
+        log.info("Loading installed analysis modules that are enabled by default")
+        for plugin_name in PluginDiscovery().get_plugins(default_enabled=True):
+            plugin = PluginDiscovery().build_plugin(
+                plugin_name, self.plugin_args.get(plugin_name, {})
+            )
+            self.load(plugin)
diff --git a/mythril_sol/solidity/__init__.py b/mythril_sol/solidity/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/mythril_sol/solidity/features.py b/mythril_sol/solidity/features.py
new file mode 100644
index 0000000000000000000000000000000000000000..59b711b09e87aacc6db2921a352a0d2126aabb65
--- /dev/null
+++ b/mythril_sol/solidity/features.py
@@ -0,0 +1,234 @@
+TRANSFER_METHODS = ["transfer", "send"]
+
+
+class SolidityFeatureExtractor:
+    def __init__(self, ast):
+        self.ast = ast
+
+    def extract_features(self):
+        function_features = {}
+        function_nodes = self.find_function_nodes(self.ast)
+        modifier_vars = {}
+        for modifier_node in self.find_modifier_nodes(self.ast):
+            modifier_vars[modifier_node["name"]] = self.find_variables_in_require(
+                modifier_node
+            )
+            modifier_vars[modifier_node["name"]].update(
+                self.find_variables_in_if(modifier_node)
+            )
+
+        for node in function_nodes:
+            function_name = self.get_function_name(node)
+            contains_selfdestruct = self.contains_selfdestruct(node)
+            contains_call = self.contains_call(node)
+            contains_delegatecall = self.contains_delegatecall(node)
+            contains_callcode = self.contains_callcode(node)
+            contains_staticcall = self.contains_staticcall(node)
+            all_require_vars = self.find_variables_in_require(node)
+            ether_vars = self.extract_address_variable(node)
+
+            for potential_modifier in node.get("modifiers", []):
+                # Issues with AST, sometimes, non-modifiers pop up here
+                if potential_modifier["modifierName"]["name"] in modifier_vars:
+                    all_require_vars.update(
+                        modifier_vars[potential_modifier["modifierName"]["name"]]
+                    )
+            is_payable = self.is_function_payable(node)
+            has_isowner_modifier = self.has_isowner_modifier(node)
+            contains_assert = self.contains_assert(node)
+            function_features[function_name] = {
+                "contains_selfdestruct": contains_selfdestruct,
+                "contains_call": contains_call,
+                "is_payable": is_payable,
+                "has_owner_modifier": has_isowner_modifier,
+                "contains_assert": contains_assert,
+                "contains_callcode": contains_callcode,
+                "contains_delegatecall": contains_delegatecall,
+                "contains_staticcall": contains_staticcall,
+                "all_require_vars": all_require_vars,
+                "transfer_vars": ether_vars,
+            }
+
+        return function_features
+
+    def find_function_nodes(self, node):
+        if node["nodeType"] == "FunctionDefinition":
+            yield node
+
+        if "nodes" in node:
+            for child_node in node["nodes"]:
+                yield from self.find_function_nodes(child_node)
+
+    def find_modifier_nodes(self, node):
+        if node["nodeType"] == "ModifierDefinition":
+            yield node
+
+        if "nodes" in node:
+            for child_node in node["nodes"]:
+                yield from self.find_modifier_nodes(child_node)
+
+    def get_function_name(self, node):
+        return node["name"]
+
+    def contains_command(self, node, command):
+        if isinstance(node, dict):
+            if command in node.values():
+                return True
+
+            for value in node.values():
+                if isinstance(value, (dict, list)):
+                    if self.contains_command(value, command):
+                        return True
+
+        elif isinstance(node, list):
+            for item in node:
+                if self.contains_command(item, command):
+                    return True
+
+        return False
+
+    def contains_call(self, node):
+        return self.contains_command(node, "call")
+
+    def is_function_payable(self, node):
+        return node.get("stateMutability") == "payable"
+
+    def has_isowner_modifier(self, node):
+        if "modifiers" in node:
+            for modifier in node["modifiers"]:
+                if modifier["modifierName"]["name"].lower() in ("isowner", "onlyowner"):
+                    return True
+        return False
+
+    def contains_assert(self, node):
+        return self.contains_command(node, "assert")
+
+    def contains_selfdestruct(self, node):
+        return self.contains_command(node, "selfdestruct")
+
+    def contains_delegatecall(self, node):
+        return self.contains_command(node, "delegatecall")
+
+    def contains_callcode(self, node):
+        return self.contains_command(node, "callcode")
+
+    def contains_staticcall(self, node):
+        return self.contains_command(node, "staticcall")
+
+    def contains_require(self, node):
+        return self.contains_command(node, "require")
+
+    def extract_nodes(self, node, command, parent=None):
+        node_list = []
+        if isinstance(node, dict):
+            if command in node.values():
+                node_list.append((parent, node))
+
+            for key, value in node.items():
+                if isinstance(value, (dict, list)):
+                    node_list.extend(self.extract_nodes(value, command, parent=node))
+        elif isinstance(node, list):
+            for item in node:
+                node_list.extend(self.extract_nodes(item, command, parent=node))
+        return node_list
+
+    def find_all_variables(self, node):
+        variables = set()
+
+        def traverse(node):
+            if isinstance(node, dict):
+                for key, value in node.items():
+                    if key == "nodeType" and value == "Identifier":
+                        if "name" in node:
+                            variables.add(node["name"])
+                    elif isinstance(value, (dict, list)):
+                        traverse(value)
+            elif isinstance(node, list):
+                for item in node:
+                    traverse(item)
+
+        traverse(node)
+        return variables
+
+    def find_variables_in_require(self, node):
+
+        nodes = self.extract_nodes(node, "require")
+        variables = set()
+        for parent, _ in nodes:
+            if "arguments" in parent:
+                arguments = parent["arguments"]
+                for argument in arguments:
+                    variables.update(self.find_all_variables(argument))
+        return variables
+
+    def find_variables_in_if(self, node):
+        variables = []
+
+        def traverse(node):
+            if "condition" in node:
+                condition = node["condition"]
+                if (
+                    "leftExpression" in condition
+                    and condition["leftExpression"]["nodeType"] == "Identifier"
+                ):
+                    variables.append(condition["leftExpression"]["name"])
+                if (
+                    "rightExpression" in condition
+                    and condition["rightExpression"]["nodeType"] == "Identifier"
+                ):
+                    variables.append(condition["rightExpression"]["name"])
+
+                traverse(condition)
+
+            if "falseBody" in node and node["falseBody"]:
+                traverse(node["falseBody"])
+
+            if "trueBody" in node and node["trueBody"]:
+                if (
+                    "nodeType" in node["trueBody"]
+                    and node["trueBody"]["nodeType"] == "Block"
+                ):
+                    statements = node["trueBody"].get("statements", [])
+                    for statement in statements:
+                        traverse(statement)
+                else:
+                    traverse(node["trueBody"])
+
+            if "body" in node and node["body"]:
+                if "nodeType" in node["body"] and node["body"]["nodeType"] == "Block":
+                    statements = node["body"].get("statements", [])
+                    for statement in statements:
+                        traverse(statement)
+                else:
+                    traverse(node["body"])
+
+        traverse(node)
+
+        return variables
+
+    def extract_address_variable(self, node):
+        if node is None or isinstance(node, (int, str)):
+            return set([])
+        transfer_vars = set([])
+        if (
+            node.get("nodeType", "") == "ExpressionStatement"
+            and node.get("expression", {}).get("nodeType") == "FunctionCall"
+        ):
+            expression = node["expression"].get("expression", None)
+            if expression is not None and (
+                expression["nodeType"] == "MemberAccess"
+                and expression["memberName"] in TRANSFER_METHODS
+            ):
+                address_variable = expression["expression"].get("name")
+                if address_variable:
+                    transfer_vars.update(set([address_variable]))
+
+        for key, value in node.items():
+            if isinstance(value, dict):
+                transfer_vars.update(self.extract_address_variable(value))
+
+            elif isinstance(value, list):
+                for item in value:
+                    transfer_vars.update(self.extract_address_variable(item))
+
+        return transfer_vars
diff --git a/mythril_sol/solidity/soliditycontract.py b/mythril_sol/solidity/soliditycontract.py
new file mode 100644
index 0000000000000000000000000000000000000000..a7f368ff2d5eb2b23e8fd90fb121da74db870020
--- /dev/null
+++ b/mythril_sol/solidity/soliditycontract.py
@@ -0,0 +1,394 @@
+"""This module contains representation classes for Solidity files, contracts
+and source mappings."""
+from typing import Dict, Set
+import logging
+
+import mythril.laser.ethereum.util as helper
+from mythril.ethereum.evmcontract import EVMContract
+from mythril.ethereum.util import get_solc_json
+from mythril.exceptions import NoContractFoundError
+from mythril.solidity.features import SolidityFeatureExtractor
+
+log = logging.getLogger(__name__)
+
+
+class SolcAST:
+    def __init__(self, ast):
+        self.ast = ast
+
+    @property
+    def node_type(self):
+        if "nodeType" in self.ast:
+            return self.ast["nodeType"]
+        if "name" in self.ast:
+            return self.ast["name"]
+        assert False, "Unknown AST type has been fed to SolcAST"
+
+    @property
+    def abs_path(self):
+        if "absolutePath" in self.ast:
+            return self.ast["absolutePath"]
+        else:
+            return None
+
+    @property
+    def nodes(self):
+        if "nodes" in self.ast:
+            return self.ast["nodes"]
+        if "children" in self.ast:
+            return self.ast["children"]
+        assert False, "Unknown AST type has been fed to SolcAST"
+
+    def __next__(self):
+        yield self.ast.__next__()
+
+    def __getitem__(self, item):
+        return self.ast[item]
+
+
+class SolcSource:
+    def __init__(self, source):
+        self.source = source
+
+    @property
+    def ast(self):
+        if "ast" in self.source:
+            return SolcAST(self.source["ast"])
+        if "legacyAST" in self.source:
+            return SolcAST(self.source["legacyAST"])
+        assert False, "Unknown source type has been fed to SolcSource"
+
+    @property
+    def id(self):
+        return self.source["id"]
+
+    @property
+    def name(self):
+        return self.source["name"]
+
+    @property
+    def contents(self):
+        return self.source["contents"]
+
+
+class SourceMapping:
+    def __init__(self, solidity_file_idx, offset, length, lineno, mapping):
+        """Representation of a source mapping for a Solidity file."""
+
+        self.solidity_file_idx = solidity_file_idx
+        self.offset = offset
+        self.length = length
+        self.lineno = lineno
+        self.solc_mapping = mapping
+
+
+class SolidityFile:
+    """Representation of a file containing Solidity code."""
+
+    def __init__(self, filename: str, data: str, full_contract_src_maps: Set[str]):
+        """
+        Metadata class containing data regarding a specific solidity file
+        :param filename: The filename of the solidity file
+        :param data: The code of the solidity file
+        :param full_contract_src_maps: The set of contract source mappings of all the contracts in the file
+        """
+        self.filename = filename
+        self.data = data
+        self.full_contract_src_maps = full_contract_src_maps
+
+
+class SourceCodeInfo:
+    def __init__(self, filename, lineno, code, mapping):
+        """Metadata class containing a code reference for a specific file."""
+
+        self.filename = filename
+        self.lineno = lineno
+        self.code = code
+        self.solc_mapping = mapping
+
+
+def get_contracts_from_file(input_file, solc_settings_json=None, solc_binary="solc"):
+    """
+
+    :param input_file:
+    :param solc_settings_json:
+    :param solc_binary:
+    """
+    data = get_solc_json(
+        input_file, solc_settings_json=solc_settings_json, solc_binary=solc_binary
+    )
+
+    try:
+        contract_names = data["contracts"][input_file].keys()
+    except KeyError:
+        raise NoContractFoundError
+
+    for contract_name in contract_names:
+        if len(
+            data["contracts"][input_file][contract_name]["evm"]["deployedBytecode"][
+                "object"
+            ]
+        ):
+            yield SolidityContract(
+                input_file=input_file,
+                name=contract_name,
+                solc_settings_json=solc_settings_json,
+                solc_binary=solc_binary,
+            )
+
+
+def get_contracts_from_foundry(input_file, foundry_json):
+    """
+
+    :param input_file:
+    :param solc_settings_json:
+    :param solc_binary:
+    """
+
+    try:
+        contract_names = foundry_json["contracts"][input_file].keys()
+    except KeyError:
+        raise NoContractFoundError
+
+    for contract_name in contract_names:
+        if len(
+            foundry_json["contracts"][input_file][contract_name]["evm"][
+                "deployedBytecode"
+            ]["object"]
+        ):
+
+            yield SolidityContract(
+                input_file=input_file,
+                name=contract_name,
+                solc_settings_json=None,
+                solc_binary=None,
+                solc_data=foundry_json,
+            )
+
+
+class SolidityContract(EVMContract):
+    """Representation of a Solidity contract."""
+
+    def __init__(
+        self,
+        input_file,
+        name=None,
+        solc_settings_json=None,
+        solc_binary="solc",
+        solc_data=None,
+    ):
+
+        if solc_data is None:
+            data = get_solc_json(
+                input_file,
+                solc_settings_json=solc_settings_json,
+                solc_binary=solc_binary,
+            )
+        else:
+            data = solc_data
+
+        self.solc_indices = self.get_solc_indices(input_file, data)
+        self.solc_json = data
+        self.input_file = input_file
+        if "ast" in data["sources"][str(input_file)]:
+            # Not available in old solidity versions, around ~0.4.11
+            self.features = SolidityFeatureExtractor(
+                data["sources"][str(input_file)]["ast"]
+            ).extract_features()
+        else:
+            self.features = None
+        has_contract = False
+
+        # If a contract name has been specified, find the bytecode of that specific contract
+        srcmap_constructor = []
+        srcmap = []
+        if name:
+            contract = data["contracts"][input_file][name]
+            if len(contract["evm"]["deployedBytecode"]["object"]):
+                code = contract["evm"]["deployedBytecode"]["object"]
+                creation_code = contract["evm"]["bytecode"]["object"]
+                srcmap = contract["evm"]["deployedBytecode"]["sourceMap"].split(";")
+                srcmap_constructor = contract["evm"]["bytecode"]["sourceMap"].split(";")
+                has_contract = True
+
+        # If no contract name is specified, get the last bytecode entry for the input file
+
+        else:
+            for contract_name, contract in sorted(
+                data["contracts"][input_file].items()
+            ):
+                if len(contract["evm"]["deployedBytecode"]["object"]):
+                    name = contract_name
+                    code = contract["evm"]["deployedBytecode"]["object"]
+                    creation_code = contract["evm"]["bytecode"]["object"]
+                    srcmap = contract["evm"]["deployedBytecode"]["sourceMap"].split(";")
+                    srcmap_constructor = contract["evm"]["bytecode"]["sourceMap"].split(
+                        ";"
+                    )
+                    has_contract = True
+
+        if not has_contract:
+            raise NoContractFoundError
+
+        self.mappings = []
+
+        self.constructor_mappings = []
+
+        self._get_solc_mappings(srcmap)
+        self._get_solc_mappings(srcmap_constructor, constructor=True)
+
+        super().__init__(code, creation_code, name=name)
+
+    @staticmethod
+    def get_sources(indices_data: Dict, source_data: Dict) -> None:
+        """
+        Get source indices mapping. Function not needed for older solc versions.
+        """
+
+        if "generatedSources" not in source_data:
+            return
+        sources = source_data["generatedSources"]
+        for source in sources:
+            full_contract_src_maps = SolidityContract.get_full_contract_src_maps(
+                SolcAST(source["ast"])
+            )
+            indices_data[source["id"]] = SolidityFile(
+                source["name"], source["contents"], full_contract_src_maps
+            )
+
+    @staticmethod
+    def get_solc_indices(input_file: str, data: Dict) -> Dict:
+        """
+        Returns solc file indices
+        """
+        indices: Dict = {}
+        for contract_data in data["contracts"].values():
+            for source_data in contract_data.values():
+                SolidityContract.get_sources(indices, source_data["evm"]["bytecode"])
+                SolidityContract.get_sources(
+                    indices, source_data["evm"]["deployedBytecode"]
+                )
+        for source in data["sources"].values():
+            source = SolcSource(source)
+            full_contract_src_maps = SolidityContract.get_full_contract_src_maps(
+                source.ast
+            )
+            if source.ast.abs_path is not None:
+                abs_path = source.ast.abs_path
+            else:
+                abs_path = input_file
+
+            with open(abs_path, "rb") as f:
+                code = f.read()
+                indices[source.id] = SolidityFile(
+                    abs_path,
+                    code.decode("utf-8"),
+                    full_contract_src_maps,
+                )
+        return indices
+
+    @staticmethod
+    def get_full_contract_src_maps(ast: SolcAST) -> Set[str]:
+        """
+        Takes a solc AST and gets the src mappings for all the contracts defined in the top level of the ast
+        :param ast: AST of the contract
+        :return: The source maps
+        """
+        source_maps = set()
+        if ast.node_type == "SourceUnit":
+            for child in ast.nodes:
+                if child.get("contractKind"):
+                    source_maps.add(child["src"])
+        elif ast.node_type == "YulBlock":
+            for child in ast["statements"]:
+                source_maps.add(child["src"])
+
+        return source_maps
+
+    def get_source_info(self, address, constructor=False):
+        """
+
+        :param address:
+        :param constructor:
+        :return:
+        """
+
+        disassembly = self.creation_disassembly if constructor else self.disassembly
+        mappings = self.constructor_mappings if constructor else self.mappings
+        index = helper.get_instruction_index(disassembly.instruction_list, address)
+
+        if index is None or index >= len(mappings):
+            # TODO: Find why this scenario happens. Possibly an external call
+            return None
+
+        file_index = mappings[index].solidity_file_idx
+
+        if file_index == -1:
+            # If issue is detected in an internal file
+            return None
+
+        solidity_file = self.solc_indices[file_index]
+        filename = solidity_file.filename
+
+        offset = mappings[index].offset
+        length = mappings[index].length
+
+        code = solidity_file.data.encode("utf-8")[offset : offset + length].decode(
+            "utf-8", errors="ignore"
+        )
+        lineno = mappings[index].lineno
+        return SourceCodeInfo(filename, lineno, code, mappings[index].solc_mapping)
+
+    def _is_autogenerated_code(self, offset: int, length: int, file_index: int) -> bool:
+        """
+        Checks whether the code is autogenerated or not
+        :param offset: offset of the code
+        :param length: length of the code
+        :param file_index: file the code corresponds to
+        :return: True if the code is internally generated, else false
+        """
+
+        if file_index == -1:
+            return True
+        # Handle the common code src map for the entire code.
+        if (
+            "{}:{}:{}".format(offset, length, file_index)
+            in self.solc_indices[file_index].full_contract_src_maps
+        ):
+            return True
+
+        return False
+
+    def _get_solc_mappings(self, srcmap, constructor=False):
+        """
+
+        :param srcmap:
+        :param constructor:
+        """
+        mappings = self.constructor_mappings if constructor else self.mappings
+        prev_item = ""
+        for item in srcmap:
+            if item == "":
+                item = prev_item
+            mapping = item.split(":")
+
+            if len(mapping) > 0 and len(mapping[0]) > 0:
+                offset = int(mapping[0])
+
+            if len(mapping) > 1 and len(mapping[1]) > 0:
+                length = int(mapping[1])
+
+            if len(mapping) > 2 and len(mapping[2]) > 0:
+                idx = int(mapping[2])
+
+            if self._is_autogenerated_code(offset, length, idx):
+                lineno = None
+            else:
+                lineno = (
+                    self.solc_indices[idx]
+                    .data.encode("utf-8")[0:offset]
+                    .count("\n".encode("utf-8"))
+                    + 1
+                )
+            prev_item = item
+            mappings.append(SourceMapping(idx, offset, length, lineno, item))
diff --git a/mythril_sol/support/__init__.py b/mythril_sol/support/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/mythril_sol/support/assets/signatures.db b/mythril_sol/support/assets/signatures.db
new file mode 100644
index 0000000000000000000000000000000000000000..9cc9e31831dc8e5f4d8e6660470505c74ee3c27e
Binary files /dev/null and b/mythril_sol/support/assets/signatures.db differ
diff --git a/mythril_sol/support/loader.py b/mythril_sol/support/loader.py
new file mode 100644
index 0000000000000000000000000000000000000000..d8a457365e0543c8f1cae3b2f1225d92a5c0d46d
--- /dev/null
+++ b/mythril_sol/support/loader.py
@@ -0,0 +1,102 @@
+"""This module contains the dynamic loader logic to get on-chain storage data
+and dependencies."""
+from mythril.disassembler.disassembly import Disassembly
+import logging
+import re
+import functools
+from mythril.ethereum.interface.rpc.client import EthJsonRpc
+from typing import Optional
+
+LRU_CACHE_SIZE = 4096
+
+log = logging.getLogger(__name__)
+
+
+class DynLoader:
+    """The dynamic loader class."""
+
+    def __init__(self, eth: Optional[EthJsonRpc], active=True):
+        """
+
+        :param eth:
+        :param active:
+        """
+        self.eth = eth
+        self.active = active
+
+    @functools.lru_cache(LRU_CACHE_SIZE)
+    def read_storage(self, contract_address: str, index: int) -> str:
+        """
+
+        :param contract_address:
+        :param index:
+        :return:
+        """
+        if not self.active:
+            raise ValueError("Loader is disabled")
+        if not self.eth:
+            raise ValueError("Cannot load from the storage when eth is None")
+
+        value = self.eth.eth_getStorageAt(
+            contract_address, position=index, block="latest"
+        )
+        if value.startswith("0x"):
+            value = "0x0000000000000000000000000000000000000000000000000000000000000000"
+        return value
+
+    @functools.lru_cache(LRU_CACHE_SIZE)
+    def read_balance(self, address: str) -> str:
+        """
+
+        :param address:
+        :return:
+        """
+        if not self.active:
+            raise ValueError("Cannot load from storage when the loader is disabled")
+        if not self.eth:
+            raise ValueError(
+                "Cannot load from the chain when eth is None, please use rpc, or specify infura-id"
+            )
+
+        return self.eth.eth_getBalance(address)
+
+    @functools.lru_cache(LRU_CACHE_SIZE)
+    def dynld(self, dependency_address: str) -> Optional[Disassembly]:
+        """
+        :param dependency_address:
+        :return:
+        """
+        if not self.active:
+            raise ValueError("Loader is disabled")
+        if not self.eth:
+            raise ValueError(
+                "Cannot load from the chain when eth is None, please use rpc, or specify infura-id"
+            )
+
+        log.debug("Dynld at contract %s", dependency_address)
+
+        # Ensure that dependency_address is the correct length, with 0s prepended as needed.
+
+        if isinstance(dependency_address, int):
+            dependency_address = "0x{:040X}".format(dependency_address)
+        else:
+            dependency_address = (
+                "0x" + "0" * (42 - len(dependency_address)) + dependency_address[2:]
+            )
+
+        m = re.match(r"^(0x[0-9a-fA-F]{40})$", dependency_address)
+
+        if m:
+            dependency_address = m.group(1)
+
+        else:
+            return None
+
+        log.debug("Dependency address: %s", dependency_address)
+
+        code = self.eth.eth_getCode(dependency_address)
+
+        if code.startswith("0x"):
+            return None
+        else:
+            return Disassembly(code)
diff --git a/mythril_sol/support/lock.py b/mythril_sol/support/lock.py
new file mode 100644
index 0000000000000000000000000000000000000000..df14cc877e8700df36084f788d5185d33ff2895c
--- /dev/null
+++ b/mythril_sol/support/lock.py
@@ -0,0 +1,78 @@
+import os
+import time
+import errno
+
+"""
+credits: https://github.com/dmfrey/FileLock
+"""
+
+
+class LockFileException(Exception):
+    pass
+
+
+class LockFile(object):
+    """
+    Locks files.
+    """
+
+    def __init__(self, file_name, timeout=100, delay=0.05):
+        """
+        Initialises the file locker
+        """
+        if timeout is not None and delay is None:
+            raise ValueError("If timeout is not None, then delay must not be None.")
+        self.is_locked = False
+        self.lockfile = os.path.join(os.getcwd(), f"{file_name}.lock")
+        self.file_name = file_name
+        self.timeout = timeout
+        self.delay = delay
+
+    def acquire(self):
+        """
+        Acquires a lock when possible.
+        """
+        start_time = time.time()
+        while True:
+            try:
+                self.fd = os.open(self.lockfile, os.O_CREAT | os.O_EXCL | os.O_RDWR)
+                self.is_locked = True
+                break
+            except OSError as e:
+                if e.errno != errno.EEXIST:
+                    raise
+                if (time.time() - start_time) >= self.timeout:
+                    raise FileLockException(
+                        f"Stuck for more than {self.timeout} seconds waiting to unlock the file {self.filename}."
+                    )
+                time.sleep(self.delay)
+
+    def release(self):
+        """
+        Releases the lock
+        """
+        if self.is_locked:
+            os.close(self.fd)
+            os.unlink(self.lockfile)
+            self.is_locked = False
+
+    def __enter__(self):
+        """
+        Lock gets acquired at the `with` statement.
+        """
+        if not self.is_locked:
+            self.acquire()
+        return self
+
+    def __exit__(self, type, value, traceback):
+        """
+        Lock get's released at the end of the `with` block
+        """
+        if self.is_locked:
+            self.release()
+
+    def __del__(self):
+        """
+        Releases the lock during deletion.
+        """
+        self.release()
diff --git a/mythril_sol/support/model.py b/mythril_sol/support/model.py
new file mode 100644
index 0000000000000000000000000000000000000000..6dff04842e9b40496166933fb628da97a9380b74
--- /dev/null
+++ b/mythril_sol/support/model.py
@@ -0,0 +1,130 @@
+from mythril.support.support_utils import ModelCache
+from mythril.support.support_args import args
+from mythril.laser.smt import Optimize, simplify, And
+from mythril.laser.ethereum.time_handler import time_handler
+from mythril.exceptions import UnsatError, SolverTimeOutException
+
+import logging
+import os
+import signal
+import sys
+import threading
+
+from collections import OrderedDict
+from copy import deepcopy
+from functools import lru_cache
+from multiprocessing.pool import ThreadPool
+from multiprocessing import TimeoutError
+from pathlib import Path
+from time import time
+from z3 import sat, unknown, is_true
+
+log = logging.getLogger(__name__)
+
+
+model_cache = ModelCache()
+
+
+def solver_worker(
+    constraints,
+    minimize=(),
+    maximize=(),
+    solver_timeout=None,
+):
+    """
+    Returns a model based on given constraints as a tuple
+    :param constraints: Tuple of constraints
+    :param minimize: Tuple of minimization conditions
+    :param maximize: Tuple of maximization conditions
+    :param solver_timeout: The timeout for solver
+    :return:
+    """
+    s = Optimize()
+    s.set_timeout(solver_timeout)
+
+    for constraint in constraints:
+        s.add(constraint)
+    for e in minimize:
+        s.minimize(e)
+    for e in maximize:
+        s.maximize(e)
+    if args.solver_log:
+        Path(args.solver_log).mkdir(parents=True, exist_ok=True)
+        constraint_hash_input = tuple(
+            list(constraints)
+            + list(minimize)
+            + list(maximize)
+            + [len(constraints), len(minimize), len(maximize)]
+        )
+        with open(
+            args.solver_log + f"/{abs(hash(constraint_hash_input))}.smt2", "w"
+        ) as f:
+            f.write(s.sexpr())
+
+    result = s.check()
+    return result, s
+
+
+@lru_cache(maxsize=2**23)
+def get_model(
+    constraints,
+    minimize=(),
+    maximize=(),
+    solver_timeout=None,
+):
+    """
+    Returns a model based on given constraints as a tuple
+    :param constraints: Tuple of constraints
+    :param minimize: Tuple of minimization conditions
+    :param maximize: Tuple of maximization conditions
+    :param solver_timeout: The solver timeout
+    :return:
+    """
+
+    solver_timeout = solver_timeout or args.solver_timeout
+    solver_timeout = min(solver_timeout, time_handler.time_remaining())
+    if solver_timeout <= 0:
+        raise SolverTimeOutException
+    for constraint in constraints:
+        if isinstance(constraint, bool) and not constraint:
+            raise UnsatError
+
+    if isinstance(constraints, tuple) is False:
+        constraints = constraints.get_all_constraints()
+    constraints = [
+        constraint
+        for constraint in constraints
+        if isinstance(constraint, bool) is False
+    ]
+
+    if len(maximize) + len(minimize) == 0:
+        ret_model = model_cache.check_quick_sat(simplify(And(*constraints)).raw)
+        if ret_model:
+            return ret_model
+    pool = ThreadPool(1)
+    try:
+        thread_result = pool.apply_async(
+            solver_worker, args=(constraints, minimize, maximize, solver_timeout)
+        )
+        try:
+            result, s = thread_result.get(solver_timeout)
+        except TimeoutError:
+            result = unknown
+        except Exception:
+            log.warning("Encountered an exception while solving expression using z3")
+            result = unknown
+    finally:
+        # This is to prevent any segmentation faults from being displayed from z3
+        sys.stdout = open(os.devnull, "w")
+        sys.stderr = open(os.devnull, "w")
+        pool.terminate()
+        sys.stdout = sys.__stdout__
+        sys.stderr = sys.__stderr__
+
+    if result == sat:
+        model_cache.model_cache.put(s.model(), 1)
+        return s.model()
+    elif result == unknown:
+        log.debug("Timeout/Error encountered while solving expression using z3")
+        raise SolverTimeOutException
+    raise UnsatError
diff --git a/mythril_sol/support/opcodes.py b/mythril_sol/support/opcodes.py
new file mode 100644
index 0000000000000000000000000000000000000000..c927b5823371c3fcbff8d30143762f61a1689a72
--- /dev/null
+++ b/mythril_sol/support/opcodes.py
@@ -0,0 +1,145 @@
+from typing import Dict
+
+
+Z_OPERATOR_TUPLE = (0, 1)
+UN_OPERATOR_TUPLE = (1, 1)
+BIN_OPERATOR_TUPLE = (2, 1)
+T_OPERATOR_TUPLE = (3, 1)
+GAS = "gas"
+STACK = "stack"
+ADDRESS = "address"
+
+# Gas tuple contains (min_gas, max_gas)
+# stack tuple contains (no_of_elements_popped, no_of_elements_pushed)
+
+# TODO: Make this more specific when TypedDict supports key re-usage.
+OPCODES: Dict = {
+    "STOP": {GAS: (0, 0), STACK: (0, 0), ADDRESS: 0x00},
+    "ADD": {GAS: (3, 3), STACK: BIN_OPERATOR_TUPLE, ADDRESS: 0x01},
+    "MUL": {GAS: (5, 5), STACK: BIN_OPERATOR_TUPLE, ADDRESS: 0x02},
+    "SUB": {GAS: (3, 3), STACK: BIN_OPERATOR_TUPLE, ADDRESS: 0x03},
+    "DIV": {GAS: (5, 5), STACK: BIN_OPERATOR_TUPLE, ADDRESS: 0x04},
+    "SDIV": {GAS: (5, 5), STACK: BIN_OPERATOR_TUPLE, ADDRESS: 0x05},
+    "MOD": {GAS: (5, 5), STACK: BIN_OPERATOR_TUPLE, ADDRESS: 0x06},
+    "SMOD": {GAS: (5, 5), STACK: BIN_OPERATOR_TUPLE, ADDRESS: 0x07},
+    "ADDMOD": {GAS: (8, 8), STACK: BIN_OPERATOR_TUPLE, ADDRESS: 0x08},
+    "MULMOD": {GAS: (8, 8), STACK: T_OPERATOR_TUPLE, ADDRESS: 0x09},
+    "EXP": {
+        GAS: (10, 340),
+        STACK: BIN_OPERATOR_TUPLE,
+        ADDRESS: 0x0A,
+    },  # exponent max 2^32
+    "SIGNEXTEND": {GAS: (5, 5), STACK: BIN_OPERATOR_TUPLE, ADDRESS: 0x0B},
+    "LT": {GAS: (3, 3), STACK: BIN_OPERATOR_TUPLE, ADDRESS: 0x10},
+    "GT": {GAS: (3, 3), STACK: BIN_OPERATOR_TUPLE, ADDRESS: 0x11},
+    "SLT": {GAS: (3, 3), STACK: BIN_OPERATOR_TUPLE, ADDRESS: 0x12},
+    "SGT": {GAS: (3, 3), STACK: BIN_OPERATOR_TUPLE, ADDRESS: 0x13},
+    "EQ": {GAS: (3, 3), STACK: BIN_OPERATOR_TUPLE, ADDRESS: 0x14},
+    "ISZERO": {GAS: (3, 3), STACK: UN_OPERATOR_TUPLE, ADDRESS: 0x15},
+    "AND": {GAS: (3, 3), STACK: BIN_OPERATOR_TUPLE, ADDRESS: 0x16},
+    "OR": {GAS: (3, 3), STACK: BIN_OPERATOR_TUPLE, ADDRESS: 0x17},
+    "XOR": {GAS: (3, 3), STACK: BIN_OPERATOR_TUPLE, ADDRESS: 0x18},
+    "NOT": {GAS: (3, 3), STACK: UN_OPERATOR_TUPLE, ADDRESS: 0x19},
+    "BYTE": {GAS: (3, 3), STACK: BIN_OPERATOR_TUPLE, ADDRESS: 0x1A},
+    "SHL": {GAS: (3, 3), STACK: BIN_OPERATOR_TUPLE, ADDRESS: 0x1B},
+    "SHR": {GAS: (3, 3), STACK: BIN_OPERATOR_TUPLE, ADDRESS: 0x1C},
+    "SAR": {GAS: (3, 3), STACK: BIN_OPERATOR_TUPLE, ADDRESS: 0x1D},
+    "SHA3": {
+        GAS: (
+            30,
+            30 + 6 * 8,
+        ),  # max can be larger, but usually storage location with 8 words
+        STACK: BIN_OPERATOR_TUPLE,
+        ADDRESS: 0x20,
+    },
+    "ADDRESS": {GAS: (2, 2), STACK: Z_OPERATOR_TUPLE, ADDRESS: 0x30},
+    "BALANCE": {GAS: (700, 700), STACK: UN_OPERATOR_TUPLE, ADDRESS: 0x31},
+    "ORIGIN": {GAS: (2, 2), STACK: Z_OPERATOR_TUPLE, ADDRESS: 0x32},
+    "CALLER": {GAS: (2, 2), STACK: Z_OPERATOR_TUPLE, ADDRESS: 0x33},
+    "CALLVALUE": {GAS: (2, 2), STACK: Z_OPERATOR_TUPLE, ADDRESS: 0x34},
+    "CALLDATALOAD": {GAS: (3, 3), STACK: UN_OPERATOR_TUPLE, ADDRESS: 0x35},
+    "CALLDATASIZE": {GAS: (2, 2), STACK: Z_OPERATOR_TUPLE, ADDRESS: 0x36},
+    "CALLDATACOPY": {
+        GAS: (2, 2 + 3 * 768),  # https://ethereum.stackexchange.com/a/47556
+        STACK: (3, 0),
+        ADDRESS: 0x37,
+    },
+    "CODESIZE": {GAS: (2, 2), STACK: Z_OPERATOR_TUPLE, ADDRESS: 0x38},
+    "CODECOPY": {
+        GAS: (2, 2 + 3 * 768),  # https://ethereum.stackexchange.com/a/47556,
+        STACK: (3, 0),
+        ADDRESS: 0x39,
+    },
+    "GASPRICE": {GAS: (2, 2), STACK: Z_OPERATOR_TUPLE, ADDRESS: 0x3A},
+    "EXTCODESIZE": {GAS: (700, 700), STACK: Z_OPERATOR_TUPLE, ADDRESS: 0x3B},
+    "EXTCODECOPY": {
+        GAS: (700, 700 + 3 * 768),  # https://ethereum.stackexchange.com/a/47556
+        STACK: (4, 0),
+        ADDRESS: 0x3C,
+    },
+    "RETURNDATASIZE": {GAS: (2, 2), STACK: Z_OPERATOR_TUPLE, ADDRESS: 0x3D},
+    "RETURNDATACOPY": {GAS: (3, 3), STACK: (3, 0), ADDRESS: 0x3E},
+    "EXTCODEHASH": {GAS: (700, 700), STACK: UN_OPERATOR_TUPLE, ADDRESS: 0x3F},
+    "BLOCKHASH": {GAS: (20, 20), STACK: UN_OPERATOR_TUPLE, ADDRESS: 0x40},
+    "COINBASE": {GAS: (2, 2), STACK: Z_OPERATOR_TUPLE, ADDRESS: 0x41},
+    "TIMESTAMP": {GAS: (2, 2), STACK: Z_OPERATOR_TUPLE, ADDRESS: 0x42},
+    "NUMBER": {GAS: (2, 2), STACK: Z_OPERATOR_TUPLE, ADDRESS: 0x43},
+    "DIFFICULTY": {GAS: (2, 2), STACK: Z_OPERATOR_TUPLE, ADDRESS: 0x44},
+    "GASLIMIT": {GAS: (2, 2), STACK: Z_OPERATOR_TUPLE, ADDRESS: 0x45},
+    "CHAINID": {GAS: (2, 2), STACK: Z_OPERATOR_TUPLE, ADDRESS: 0x46},
+    "SELFBALANCE": {GAS: (2, 2), STACK: Z_OPERATOR_TUPLE, ADDRESS: 0x47},
+    "BASEFEE": {GAS: (2, 2), STACK: Z_OPERATOR_TUPLE, ADDRESS: 0x48},
+    "POP": {GAS: (2, 2), STACK: (1, 0), ADDRESS: 0x50},
+    # assume 1KB memory r/w cost as upper bound
+    "MLOAD": {GAS: (3, 96), STACK: UN_OPERATOR_TUPLE, ADDRESS: 0x51},
+    "MSTORE": {GAS: (3, 98), STACK: (2, 0), ADDRESS: 0x52},
+    "MSTORE8": {GAS: (3, 98), STACK: (2, 0), ADDRESS: 0x53},
+    # assume 64 byte r/w cost as upper bound
+    "SLOAD": {GAS: (800, 800), STACK: UN_OPERATOR_TUPLE, ADDRESS: 0x54},
+    "SSTORE": {GAS: (5000, 25000), STACK: (1, 0), ADDRESS: 0x55},
+    "JUMP": {GAS: (8, 8), STACK: (1, 0), ADDRESS: 0x56},
+    "JUMPI": {GAS: (10, 10), STACK: (2, 0), ADDRESS: 0x57},
+    "PC": {GAS: (2, 2), STACK: Z_OPERATOR_TUPLE, ADDRESS: 0x58},
+    "MSIZE": {GAS: (2, 2), STACK: Z_OPERATOR_TUPLE, ADDRESS: 0x59},
+    "GAS": {GAS: (2, 2), STACK: Z_OPERATOR_TUPLE, ADDRESS: 0x5A},
+    "JUMPDEST": {GAS: (1, 1), STACK: (0, 0), ADDRESS: 0x5B},
+    "BEGINSUB": {GAS: (2, 2), STACK: (0, 0), ADDRESS: 0x5C},
+    "RETURNSUB": {GAS: (5, 5), STACK: (0, 0), ADDRESS: 0x5D},
+    "JUMPSUB": {GAS: (10, 10), STACK: (1, 0), ADDRESS: 0x5E},
+    # apparently Solidity only allows byte32 as input to the log
+    # function. Virtually it could be as large as the block gas limit
+    # allows, but let's stick to the reasonable standard here.
+    # https://ethereum.stackexchange.com/a/1691
+    "LOG0": {GAS: (375, 375 + 8 * 32), STACK: (2, 0), ADDRESS: 0xA0},
+    "LOG1": {GAS: (2 * 375, 2 * 375 + 8 * 32), STACK: (3, 0), ADDRESS: 0xA1},
+    "LOG2": {GAS: (3 * 375, 3 * 375 + 8 * 32), STACK: (4, 0), ADDRESS: 0xA2},
+    "LOG3": {GAS: (4 * 375, 4 * 375 + 8 * 32), STACK: (5, 0), ADDRESS: 0xA3},
+    "LOG4": {GAS: (5 * 375, 5 * 375 + 8 * 32), STACK: (6, 0), ADDRESS: 0xA4},
+    "CREATE": {GAS: (32000, 32000), STACK: T_OPERATOR_TUPLE, ADDRESS: 0xF0},
+    "CREATE2": {
+        GAS: (32000, 32000),  # TODO: Make the gas values dynamic
+        STACK: (4, 1),
+        ADDRESS: 0xF5,
+    },
+    "CALL": {GAS: (700, 700 + 9000 + 25000), STACK: (7, 1), ADDRESS: 0xF1},
+    "CALLCODE": {GAS: (700, 700 + 9000 + 25000), STACK: (7, 1), ADDRESS: 0xF2},
+    "RETURN": {GAS: (0, 0), STACK: (2, 0), ADDRESS: 0xF3},
+    "DELEGATECALL": {GAS: (700, 700 + 9000 + 25000), STACK: (6, 1), ADDRESS: 0xF4},
+    "STATICCALL": {GAS: (700, 700 + 9000 + 25000), STACK: (6, 1), ADDRESS: 0xFA},
+    "REVERT": {GAS: (0, 0), STACK: (2, 0), ADDRESS: 0xFD},
+    "SELFDESTRUCT": {GAS: (5000, 30000), STACK: (1, 0), ADDRESS: 0xFF},
+    "INVALID": {GAS: (0, 0), STACK: (0, 0), ADDRESS: 0xFE},
+}
+
+OPCODES["PUSH0"] = {GAS: (2, 2), STACK: Z_OPERATOR_TUPLE, ADDRESS: 0x5F}
+for i in range(1, 33):
+    OPCODES[f"PUSH{i}"] = {GAS: (3, 3), STACK: Z_OPERATOR_TUPLE, ADDRESS: 0x5F + i}
+
+for i in range(1, 17):
+    OPCODES[f"DUP{i}"] = {GAS: (3, 3), STACK: (0, 0), ADDRESS: 0x7F + i}
+    OPCODES[f"SWAP{i}"] = {GAS: (3, 3), STACK: Z_OPERATOR_TUPLE, ADDRESS: 0x8F + i}
+
+ADDRESS_OPCODE_MAPPING = {}
+
+for opcode, opcode_data in OPCODES.items():
+    ADDRESS_OPCODE_MAPPING[opcode_data[ADDRESS]] = opcode
diff --git a/mythril_sol/support/signatures.py b/mythril_sol/support/signatures.py
new file mode 100644
index 0000000000000000000000000000000000000000..ec3810d62b76c571c5eddc34c8043b5343dc196b
--- /dev/null
+++ b/mythril_sol/support/signatures.py
@@ -0,0 +1,280 @@
+"""The Mythril function signature database."""
+import functools
+import logging
+import multiprocessing
+import os
+import sqlite3
+import time
+from collections import defaultdict
+from typing import List, Set, DefaultDict, Dict
+
+from mythril.ethereum.util import get_solc_json
+
+log = logging.getLogger(__name__)
+
+lock = multiprocessing.Lock()
+
+
+def synchronized(sync_lock):
+    """A decorator synchronizing multi-process access to a resource."""
+
+    def wrapper(f):
+        """The decorator's core function.
+
+        :param f:
+        :return:
+        """
+
+        @functools.wraps(f)
+        def inner_wrapper(*args, **kw):
+            """
+
+            :param args:
+            :param kw:
+            :return:
+            """
+            with sync_lock:
+                return f(*args, **kw)
+
+        return inner_wrapper
+
+    return wrapper
+
+
+class Singleton(type):
+    """A metaclass type implementing the singleton pattern."""
+
+    _instances: Dict["Singleton", "Singleton"] = dict()
+
+    @synchronized(lock)
+    def __call__(cls, *args, **kwargs):
+        """Delegate the call to an existing resource or a a new one.
+
+        This is not thread- or process-safe by default. It must be protected with
+        a lock.
+
+        :param args:
+        :param kwargs:
+        :return:
+        """
+        if cls not in cls._instances:
+            cls._instances[cls] = super(Singleton, cls).__call__(*args, **kwargs)
+
+        return cls._instances[cls]
+
+
+try:
+    # load if available but do not fail
+    import ethereum_input_decoder
+    from ethereum_input_decoder.decoder import FourByteDirectoryOnlineLookupError
+except ImportError:
+    # fake it :)
+    ethereum_input_decoder = None
+    FourByteDirectoryOnlineLookupError = Exception
+
+
+class SQLiteDB(object):
+    """Simple context manager for sqlite3 databases.
+
+    Commits everything at exit.
+    """
+
+    def __init__(self, path):
+        """
+
+        :param path:
+        """
+        self.path = path
+        self.conn = None
+        self.cursor = None
+
+    def __enter__(self):
+        """
+
+        :return:
+        """
+        try:
+            self.conn = sqlite3.connect(self.path)
+        except sqlite3.OperationalError as e:
+            raise sqlite3.OperationalError(f"Unable to Connect to path {self.path}")
+        self.cursor = self.conn.cursor()
+        return self.cursor
+
+    def __exit__(self, exc_class, exc, traceback):
+        """
+
+        :param exc_class:
+        :param exc:
+        :param traceback:
+        """
+        self.conn.commit()
+        self.conn.close()
+
+    def __repr__(self):
+        return "<SQLiteDB path={}>".format(self.path)
+
+
+class SignatureDB(object, metaclass=Singleton):
+    """"""
+
+    def __init__(self, enable_online_lookup: bool = False, path: str = None) -> None:
+        """
+        :param enable_online_lookup:
+        :param path:
+        """
+        self.enable_online_lookup = enable_online_lookup
+        self.online_lookup_miss: Set[str] = set()
+        self.online_lookup_timeout = 0
+
+        # if we're analysing a Solidity file, store its hashes
+        # here to prevent unnecessary lookups
+        self.solidity_sigs: DefaultDict[str, List[str]] = defaultdict(list)
+        if path is None:
+            self.path = os.environ.get("MYTHRIL_DIR") or os.path.join(
+                os.path.expanduser("~"), ".mythril"
+            )
+        self.path = os.path.join(self.path, "signatures.db")
+
+        log.info("Using signature database at %s", self.path)
+        # NOTE: Creates a new DB file if it doesn't exist already
+        with SQLiteDB(self.path) as cur:
+            cur.execute(
+                (
+                    "CREATE TABLE IF NOT EXISTS signatures"
+                    "(byte_sig VARCHAR(10), text_sig VARCHAR(255),"
+                    "PRIMARY KEY (byte_sig, text_sig))"
+                )
+            )
+
+    def __getitem__(self, item: str) -> List[str]:
+        """Provide dict interface db[sighash]
+
+        :param item: 4-byte signature string
+        :return: list of matching text signature strings
+        """
+        return self.get(byte_sig=item)
+
+    @staticmethod
+    def _normalize_byte_sig(byte_sig: str) -> str:
+        """Adds a leading 0x to the byte signature if it's not already there.
+
+        :param byte_sig: 4-byte signature string
+        :return: normalized byte signature string
+        """
+        if not byte_sig.startswith("0x"):
+            byte_sig = "0x" + byte_sig
+        if not len(byte_sig) == 10:
+            raise ValueError(
+                "Invalid byte signature %s, must have 10 characters", byte_sig
+            )
+        return byte_sig
+
+    def add(self, byte_sig: str, text_sig: str) -> None:
+        """
+        Adds a new byte - text signature pair to the database.
+        :param byte_sig: 4-byte signature string
+        :param text_sig: resolved text signature
+        :return:
+        """
+        byte_sig = self._normalize_byte_sig(byte_sig)
+        with SQLiteDB(self.path) as cur:
+            # ignore new row if it's already in the DB (and would cause a unique constraint error)
+            cur.execute(
+                "INSERT OR IGNORE INTO signatures (byte_sig, text_sig) VALUES (?,?)",
+                (byte_sig, text_sig),
+            )
+
+    def get(self, byte_sig: str, online_timeout: int = 2) -> List[str]:
+        """Get a function text signature for a byte signature 1) try local
+        cache 2) try online lookup (if enabled; if not flagged as unavailable)
+
+        :param byte_sig: function signature hash as hexstr
+        :param online_timeout: online lookup timeout
+        :return: list of matching function text signatures
+        """
+
+        byte_sig = self._normalize_byte_sig(byte_sig)
+
+        # check if we have any Solidity signatures to look up
+        text_sigs = self.solidity_sigs.get(byte_sig)
+        if text_sigs is not None:
+            return text_sigs
+
+        # try lookup in the local DB
+        with SQLiteDB(self.path) as cur:
+            cur.execute("SELECT text_sig FROM signatures WHERE byte_sig=?", (byte_sig,))
+            text_sigs = cur.fetchall()
+
+        if text_sigs:
+            return [t[0] for t in text_sigs]
+
+        # abort if we're not allowed to check 4byte or we already missed
+        # the signature, or we're on a timeout
+        if (
+            not self.enable_online_lookup
+            or byte_sig in self.online_lookup_miss
+            or time.time() < self.online_lookup_timeout
+        ):
+            return []
+
+        try:
+            text_sigs = self.lookup_online(byte_sig=byte_sig, timeout=online_timeout)
+            if not text_sigs:
+                self.online_lookup_miss.add(byte_sig)
+                return []
+            else:
+                for resolved in text_sigs:
+                    self.add(byte_sig, resolved)
+                return text_sigs
+        except FourByteDirectoryOnlineLookupError as fbdole:
+            # wait at least 2 mins to try again
+            self.online_lookup_timeout = int(time.time()) + 2 * 60
+            log.warning("Online lookup failed, not retrying for 2min: %s", fbdole)
+            return []
+
+    def import_solidity_file(
+        self, file_path: str, solc_binary: str = "solc", solc_settings_json: str = None
+    ):
+        """Import Function Signatures from solidity source files.
+
+        :param solc_binary:
+        :param solc_settings_json:
+        :param file_path: solidity source code file path
+        :return:
+        """
+        solc_json = get_solc_json(file_path, solc_binary, solc_settings_json)
+        self.add_sigs(file_path, solc_json)
+
+    def add_sigs(self, file_path: str, solc_json):
+        for contract in solc_json["contracts"][file_path].values():
+            if "methodIdentifiers" not in contract["evm"]:
+                continue
+            for name, hash_ in contract["evm"]["methodIdentifiers"].items():
+                sig = "0x{}".format(hash_)
+                if sig in self.solidity_sigs:
+                    self.solidity_sigs[sig].append(name)
+                else:
+                    self.solidity_sigs[sig] = [name]
+                self.add(sig, name)
+
+    @staticmethod
+    def lookup_online(byte_sig: str, timeout: int, proxies=None) -> List[str]:
+        """Lookup function signatures from 4byte.directory.
+
+        :param byte_sig: function signature hash as hexstr
+        :param timeout: optional timeout for online lookup
+        :param proxies: optional proxy servers for online lookup
+        :return: a list of matching function signatures for this hash
+        """
+        if not ethereum_input_decoder:
+            return []
+        return list(
+            ethereum_input_decoder.decoder.FourByteDirectory.lookup_signatures(
+                byte_sig, timeout=timeout, proxies=proxies
+            )
+        )
+
+    def __repr__(self):
+        return "<SignatureDB path='{}' enable_online_lookup={}>".format(
+            self.path, self.enable_online_lookup
+        )
diff --git a/mythril_sol/support/source_support.py b/mythril_sol/support/source_support.py
new file mode 100644
index 0000000000000000000000000000000000000000..aa3bec3a50d798c1eecdd5ae0077741a5004e91c
--- /dev/null
+++ b/mythril_sol/support/source_support.py
@@ -0,0 +1,65 @@
+from mythril.solidity.soliditycontract import SolidityContract
+from mythril.ethereum.evmcontract import EVMContract
+
+
+class Source:
+    """Class to handle to source data"""
+
+    def __init__(self, source_type=None, source_format=None, source_list=None):
+        """
+        :param source_type: whether it is a solidity-file or evm-bytecode
+        :param source_format: whether it is bytecode, ethereum-address or text
+        :param source_list: List of files
+        :param meta: meta data
+        """
+        self.source_type = source_type
+        self.source_format = source_format
+        self.source_list = source_list or []
+        self._source_hash = []
+
+    def get_source_from_contracts_list(self, contracts):
+        """
+        get the source data from the contracts list
+        :param contracts: the list of contracts
+        :return:
+        """
+        if contracts is None or len(contracts) == 0:
+            return
+        if isinstance(contracts[0], SolidityContract):
+            self.source_type = "solidity-file"
+            self.source_format = "text"
+            for contract in contracts:
+                self.source_list += [
+                    file.filename for file in contract.solc_indices.values()
+                ]
+                self._source_hash.append(contract.bytecode_hash)
+                self._source_hash.append(contract.creation_bytecode_hash)
+        elif isinstance(contracts[0], EVMContract):
+            self.source_format = "evm-byzantium-bytecode"
+            self.source_type = (
+                "ethereum-address"
+                if len(contracts[0].name) == 42 and contracts[0].name.startswith("0x")
+                else "raw-bytecode"
+            )
+            for contract in contracts:
+                if contract.creation_code:
+                    self.source_list.append(contract.creation_bytecode_hash)
+                if contract.code:
+                    self.source_list.append(contract.bytecode_hash)
+            self._source_hash = self.source_list
+
+        else:
+            assert False  # Fail hard
+
+    def get_source_index(self, bytecode_hash: str) -> int:
+        """
+        Find the contract index in the list
+        :param bytecode_hash: The contract hash
+        :return: The index of the contract in the _source_hash list
+        """
+        # TODO: Add this part to exception logs
+        try:
+            return self._source_hash.index(bytecode_hash)
+        except ValueError:
+            self._source_hash.append(bytecode_hash)
+            return len(self._source_hash) - 1
diff --git a/mythril_sol/support/start_time.py b/mythril_sol/support/start_time.py
new file mode 100644
index 0000000000000000000000000000000000000000..52b6714fcfe3e19765f8a2f531ecae04e30cac2e
--- /dev/null
+++ b/mythril_sol/support/start_time.py
@@ -0,0 +1,9 @@
+from time import time
+from mythril.support.support_utils import Singleton
+
+
+class StartTime(metaclass=Singleton):
+    """Maintains the start time of the current contract in execution"""
+
+    def __init__(self):
+        self.global_start_time = time()
diff --git a/mythril_sol/support/support_args.py b/mythril_sol/support/support_args.py
new file mode 100644
index 0000000000000000000000000000000000000000..9add0cd9557f455196fc68196c61f9bc4ed7262d
--- /dev/null
+++ b/mythril_sol/support/support_args.py
@@ -0,0 +1,28 @@
+from typing import List
+from mythril.support.support_utils import Singleton
+
+
+class Args(object, metaclass=Singleton):
+    """
+    This module helps in preventing args being sent through multiple of classes to reach
+    any analysis/laser module
+    """
+
+    def __init__(self):
+        self.solver_timeout = 10000
+        self.pruning_factor = None
+        self.unconstrained_storage = False
+        self.parallel_solving = False
+        self.call_depth_limit = 3
+        self.disable_iprof = False
+        self.solver_log = None
+        self.transaction_sequences: List[List[str]] = None
+        self.use_integer_module = True
+        self.use_issue_annotations = False
+        self.solc_args = None
+        self.disable_coverage_strategy = False
+        self.disable_mutation_pruner = False
+        self.incremental_txs = True
+
+
+args = Args()
diff --git a/mythril_sol/support/support_utils.py b/mythril_sol/support/support_utils.py
new file mode 100644
index 0000000000000000000000000000000000000000..fa8d7f264b20601e2c8270e8d474ceff7560335f
--- /dev/null
+++ b/mythril_sol/support/support_utils.py
@@ -0,0 +1,114 @@
+"""This module contains utility functions for the Mythril support package."""
+
+from collections import OrderedDict
+from copy import deepcopy
+from eth_hash.auto import keccak
+from functools import lru_cache
+from typing import Dict
+from z3 import is_true, simplify, And
+import logging
+
+log = logging.getLogger(__name__)
+
+
+class Singleton(type):
+    """A metaclass type implementing the singleton pattern."""
+
+    _instances: Dict = {}
+
+    def __call__(cls, *args, **kwargs):
+        """Delegate the call to an existing resource or a a new one.
+
+        This is not thread- or process-safe by default. It must be protected with
+        a lock.
+
+        :param args:
+        :param kwargs:
+        :return:
+        """
+        if cls not in cls._instances:
+            cls._instances[cls] = super(Singleton, cls).__call__(*args, **kwargs)
+        return cls._instances[cls]
+
+
+class LRUCache:
+    def __init__(self, size):
+        self.size = size
+        self.lru_cache = OrderedDict()
+
+    def get(self, key):
+        try:
+            value = self.lru_cache.pop(key)
+            self.lru_cache[key] = value
+            return value
+        except KeyError:
+            return -1
+
+    def put(self, key, value):
+        try:
+            self.lru_cache.pop(key)
+        except KeyError:
+            if len(self.lru_cache) >= self.size:
+                self.lru_cache.popitem(last=False)
+        self.lru_cache[key] = value
+
+
+class ModelCache:
+    def __init__(self):
+        self.model_cache = LRUCache(size=100)
+
+    @lru_cache(maxsize=2**10)
+    def check_quick_sat(self, constraints) -> bool:
+        for model in reversed(self.model_cache.lru_cache.keys()):
+            model_copy = deepcopy(model)
+            if is_true(model_copy.eval(constraints, model_completion=True)):
+                self.model_cache.put(model, self.model_cache.get(model) + 1)
+                return model
+        return False
+
+    def put(self, key, value):
+        self.model_cache.put(key, value)
+
+
+@lru_cache(maxsize=2**10)
+def get_code_hash(code) -> str:
+    """
+    :param code: bytecode
+    :return: Returns hash of the given bytecode
+    """
+    if isinstance(code, tuple):
+        # Temporary hack, since we cannot find symbols of sha3
+        return str(hash(code))
+
+    code = code[2:] if code.startswith("0x") else code
+    try:
+        hash_ = keccak(bytes.fromhex(code))
+        return "0x" + hash_.hex()
+    except ValueError:
+        log.debug("Unable to change the bytecode to bytes. Bytecode: {}".format(code))
+        return ""
+
+
+def sha3(value):
+    if isinstance(value, str):
+        if value.startswith("0x"):
+            new_hash = keccak(bytes.fromhex(value))
+        else:
+            new_hash = keccak(value.encode())
+    else:
+        new_hash = keccak(value)
+    return new_hash
+
+
+def zpad(x, l):
+    """
+    Left zero pad value `x` at least to length `l`.
+    """
+    return b"\x00" * max(0, l - len(x)) + x
+
+
+def rzpad(value, total_length):
+    """
+    Right zero pad value `x` at least to length `l`.
+    """
+    return value + b"\x00" * max(0, total_length - len(value))
diff --git a/requirements.txt b/requirements.txt
new file mode 100644
index 0000000000000000000000000000000000000000..90f4339fa68fa64a02cacec22467bea308e14867
--- /dev/null
+++ b/requirements.txt
@@ -0,0 +1,39 @@
+blake2b-py
+coloredlogs>=10.0
+coincurve>=13.0.0
+cytoolz>=0.12.0
+asn1crypto>=0.22.0
+configparser>=3.5.0
+coverage<7.0,>6.0
+py_ecc<5.0.0,>=1.4.7
+eth-abi>=4.0.0
+eth-account>=0.8.0
+ethereum-input-decoder>=0.2.2
+eth-hash<0.4.0,>=0.3.1
+eth-keyfile>=0.6.0
+eth-rlp>=0.3.0,<0.4.0
+eth-utils>=2
+hexbytes<0.3.0
+jinja2>=2.9
+MarkupSafe<2.1.0
+mock
+mypy-extensions<1.0.0
+numpy
+persistent>=4.2.0
+py-flags
+py-evm==0.7.0a1
+py-solc-x<2.0.0
+py-solc
+pytest>=3.6.0
+pyparsing<3,>=2.0.2
+pytest-cov
+pytest_mock
+requests
+rlp<4,>=3
+semantic_version
+scikit-learn
+transaction>=2.2.1
+z3-solver<4.12.2.0,>=4.8.8.0
+matplotlib
+pre-commit<2.21.0
+certifi>=2020.06.20
diff --git a/setup.py b/setup.py
new file mode 100755
index 0000000000000000000000000000000000000000..5ee8ac80395110933deb51a48007f3352a5a1c8b
--- /dev/null
+++ b/setup.py
@@ -0,0 +1,133 @@
+# -*- coding: utf-8 -*-
+"""install mythril and deploy source-dist and wheel to pypi.python.org.
+
+deps (requires up2date version):
+    *) pip install --upgrade pip wheel setuptools twine
+publish to pypi w/o having to convert Readme.md to RST:
+    1) #> python setup.py sdist bdist_wheel
+    2) #> twine upload dist/*   #<specify bdist_wheel version to upload>; #optional --repository <testpypi> or  --repository-url <testpypi-url>
+"""
+from setuptools import setup, find_packages
+from setuptools.command.install import install as _install
+from subprocess import check_call
+
+import sys
+import os
+import io
+
+
+# Package meta-data.
+NAME = "mythril"
+DESCRIPTION = "Security analysis tool for Ethereum smart contracts"
+URL = "https://github.com/ConsenSys/mythril"
+AUTHOR = "ConsenSys Dilligence"
+AUTHOR_MAIL = None
+REQUIRES_PYTHON = ">=3.7.0"
+here = os.path.abspath(os.path.dirname(__file__))
+
+# What packages are required for this module to be executed?
+def get_requirements():
+    """
+    Return requirements as list.
+    Handles cases where git links are used.
+
+    """
+    with open(os.path.join(here, "requirements.txt")) as f:
+        packages = []
+        for line in f:
+            line = line.strip()
+            # let's also ignore empty lines and comments
+            if not line or line.startswith("#"):
+                continue
+            if "https://" not in line:
+                packages.append(line)
+                continue
+
+            rest, package_name = line.split("#egg=")[0], line.split("#egg=")[1]
+            if "-e" in rest:
+                rest = rest.split("-e")[1]
+            package_name = package_name + "@" + rest
+            packages.append(package_name)
+    return packages
+
+
+REQUIRED = get_requirements()
+
+TESTS_REQUIRE = ["mypy==0.782", "pytest>=3.6.0", "pytest_mock", "pytest-cov"]
+
+# What packages are optional?
+EXTRAS = {}
+
+# If version is set to None then it will be fetched from __version__.py
+VERSION = None
+
+
+# Import the README and use it as the long-description.
+# Note: this will only work if 'README.md' is present in your MANIFEST.in file!
+try:
+    with io.open(os.path.join(here, "README.md"), encoding="utf-8") as f:
+        long_description = "\n" + f.read()
+except FileNotFoundError:
+    long_description = DESCRIPTION
+
+
+# Load the package's __version__.py module as a dictionary.
+about = {}
+if not VERSION:
+    project_slug = NAME.lower().replace("-", "_").replace(" ", "_")
+    with open(os.path.join(here, project_slug, "__version__.py")) as f:
+        exec(f.read(), about)
+else:
+    about["__version__"] = VERSION
+
+
+# Package version (vX.Y.Z). It must match git tag being used for CircleCI
+# deployment; otherwise the build will failed.
+class VerifyVersionCommand(_install):
+    """Custom command to verify that the git tag matches our version."""
+
+    description = "verify that the git tag matches our version"
+
+    def run(self):
+        """"""
+        tag = os.getenv("CIRCLE_TAG")
+
+        if tag != about["__version__"]:
+            info = "Git tag: {0} does not match the version of this app: {1}".format(
+                tag, about["__version__"]
+            )
+            sys.exit(info)
+
+
+setup(
+    name=NAME,
+    version=about["__version__"][1:],
+    description=DESCRIPTION,
+    long_description=long_description,
+    long_description_content_type="text/markdown",  # requires twine and recent setuptools
+    url=URL,
+    author=AUTHOR,
+    author_mail=AUTHOR_MAIL,
+    license="MIT",
+    classifiers=[
+        "Development Status :: 3 - Alpha",
+        "Intended Audience :: Science/Research",
+        "Topic :: Software Development :: Disassemblers",
+        "License :: OSI Approved :: MIT License",
+        "Programming Language :: Python :: 3.6",
+        "Programming Language :: Python :: 3.7",
+        "Programming Language :: Python :: 3.8",
+        "Programming Language :: Python :: 3.9",
+        "Programming Language :: Python :: 3.10",
+    ],
+    keywords="hacking disassembler security ethereum",
+    packages=find_packages(exclude=["contrib", "docs", "tests"]),
+    install_requires=REQUIRED,
+    tests_require=TESTS_REQUIRE,
+    python_requires=REQUIRES_PYTHON,
+    extras_require=EXTRAS,
+    package_data={"mythril.analysis.templates": ["*"], "mythril.support.assets": ["*"]},
+    include_package_data=True,
+    entry_points={"console_scripts": ["myth=mythril.interfaces.cli:main"]},
+    cmdclass={"verify": VerifyVersionCommand},
+)
diff --git a/solidity_examples/BECToken.sol b/solidity_examples/BECToken.sol
new file mode 100644
index 0000000000000000000000000000000000000000..98bd5a0914e581ef9de3613b5d140d661bb872f2
--- /dev/null
+++ b/solidity_examples/BECToken.sol
@@ -0,0 +1,298 @@
+
+/**
+ * @title SafeMath
+ * @dev Math operations with safety checks that throw on error
+ */
+library SafeMath {
+  function mul(uint256 a, uint256 b) internal pure returns (uint256) {
+    uint256 c = a * b;
+    assert(a == 0 || c / a == b);
+    return c;
+  }
+
+  function div(uint256 a, uint256 b) internal pure returns (uint256) {
+    // assert(b > 0); // Solidity automatically throws when dividing by 0
+    uint256 c = a / b;
+    // assert(a == b * c + a % b); // There is no case in which this doesn't hold
+    return c;
+  }
+
+  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
+    assert(b <= a);
+    return a - b;
+  }
+
+  function add(uint256 a, uint256 b) internal pure returns (uint256) {
+    uint256 c = a + b;
+    assert(c >= a);
+    return c;
+  }
+}
+
+/**
+ * @title ERC20Basic
+ * @dev Simpler version of ERC20 interface
+ * @dev see https://github.com/ethereum/EIPs/issues/179
+ */
+contract ERC20Basic {
+  uint256 public totalSupply;
+  function balanceOf(address who) public returns (uint256);
+  function transfer(address to, uint256 value) public returns (bool);
+  event Transfer(address indexed from, address indexed to, uint256 value);
+}
+
+/**
+ * @title Basic token
+ * @dev Basic version of StandardToken, with no allowances.
+ */
+contract BasicToken is ERC20Basic {
+  using SafeMath for uint256;
+
+  mapping(address => uint256) balances;
+
+  /**
+  * @dev transfer token for a specified address
+  * @param _to The address to transfer to.
+  * @param _value The amount to be transferred.
+  */
+  function transfer(address _to, uint256 _value) public returns (bool) {
+    require(_to != address(0));
+    require(_value > 0 && _value <= balances[msg.sender]);
+
+    // SafeMath.sub will throw if there is not enough balance.
+    balances[msg.sender] = balances[msg.sender].sub(_value);
+    balances[_to] = balances[_to].add(_value);
+    emit Transfer(msg.sender, _to, _value);
+    return true;
+  }
+
+  /**
+  * @dev Gets the balance of the specified address.
+  * @param _owner The address to query the the balance of.
+  * @return An uint256 representing the amount owned by the passed address.
+  */
+  function balanceOf(address _owner) public returns (uint256 balance) {
+    return balances[_owner];
+  }
+}
+
+/**
+ * @title ERC20 interface
+ * @dev see https://github.com/ethereum/EIPs/issues/20
+ */
+contract ERC20 is ERC20Basic {
+  function allowance(address owner, address spender) public returns (uint256);
+  function transferFrom(address from, address to, uint256 value) public returns (bool);
+  function approve(address spender, uint256 value) public returns (bool);
+  event Approval(address indexed owner, address indexed spender, uint256 value);
+}
+
+
+/**
+ * @title Standard ERC20 token
+ *
+ * @dev Implementation of the basic standard token.
+ * @dev https://github.com/ethereum/EIPs/issues/20
+ * @dev Based on code by FirstBlood: https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol
+ */
+contract StandardToken is ERC20, BasicToken {
+
+  mapping (address => mapping (address => uint256)) internal allowed;
+
+
+  /**
+   * @dev Transfer tokens from one address to another
+   * @param _from address The address which you want to send tokens from
+   * @param _to address The address which you want to transfer to
+   * @param _value uint256 the amount of tokens to be transferred
+   */
+  function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {
+    require(_to != address(0));
+    require(_value > 0 && _value <= balances[_from]);
+    require(_value <= allowed[_from][msg.sender]);
+
+    balances[_from] = balances[_from].sub(_value);
+    balances[_to] = balances[_to].add(_value);
+    allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
+    emit Transfer(_from, _to, _value);
+    return true;
+  }
+
+  /**
+   * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
+   *
+   * Beware that changing an allowance with this method brings the risk that someone may use both the old
+   * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this
+   * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:
+   * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
+   * @param _spender The address which will spend the funds.
+   * @param _value The amount of tokens to be spent.
+   */
+  function approve(address _spender, uint256 _value) public returns (bool) {
+    allowed[msg.sender][_spender] = _value;
+    emit Approval(msg.sender, _spender, _value);
+    return true;
+  }
+
+  /**
+   * @dev Function to check the amount of tokens that an owner allowed to a spender.
+   * @param _owner address The address which owns the funds.
+   * @param _spender address The address which will spend the funds.
+   * @return A uint256 specifying the amount of tokens still available for the spender.
+   */
+  function allowance(address _owner, address _spender) public returns (uint256 remaining) {
+    return allowed[_owner][_spender];
+  }
+}
+
+/**
+ * @title Ownable
+ * @dev The Ownable contract has an owner address, and provides basic authorization control
+ * functions, this simplifies the implementation of "user permissions".
+ */
+contract Ownable {
+  address public owner;
+
+
+  event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
+
+
+  /**
+   * @dev The Ownable constructor sets the original `owner` of the contract to the sender
+   * account.
+   */
+  constructor() public {
+    owner = msg.sender;
+  }
+
+
+  /**
+   * @dev Throws if called by any account other than the owner.
+   */
+  modifier onlyOwner() {
+    require(msg.sender == owner);
+    _;
+  }
+
+
+  /**
+   * @dev Allows the current owner to transfer control of the contract to a newOwner.
+   * @param newOwner The address to transfer ownership to.
+   */
+  function transferOwnership(address newOwner) onlyOwner public {
+    require(newOwner != address(0));
+    emit OwnershipTransferred(owner, newOwner);
+    owner = newOwner;
+  }
+
+}
+
+/**
+ * @title Pausable
+ * @dev Base contract which allows children to implement an emergency stop mechanism.
+ */
+contract Pausable is Ownable {
+  event Pause();
+  event Unpause();
+
+  bool public paused = false;
+
+
+  /**
+   * @dev Modifier to make a function callable only when the contract is not paused.
+   */
+  modifier whenNotPaused() {
+    require(!paused);
+    _;
+  }
+
+  /**
+   * @dev Modifier to make a function callable only when the contract is paused.
+   */
+  modifier whenPaused() {
+    require(paused);
+    _;
+  }
+
+  /**
+   * @dev called by the owner to pause, triggers stopped state
+   */
+  function pause() onlyOwner whenNotPaused public {
+    paused = true;
+    emit Pause();
+  }
+
+  /**
+   * @dev called by the owner to unpause, returns to normal state
+   */
+  function unpause() onlyOwner whenPaused public {
+    paused = false;
+    emit Unpause();
+  }
+}
+
+/**
+ * @title Pausable token
+ *
+ * @dev StandardToken modified with pausable transfers.
+ **/
+
+contract PausableToken is StandardToken, Pausable {
+
+  function transfer(address _to, uint256 _value) public whenNotPaused returns (bool) {
+    return super.transfer(_to, _value);
+  }
+
+  function transferFrom(address _from, address _to, uint256 _value) public whenNotPaused returns (bool) {
+    return super.transferFrom(_from, _to, _value);
+  }
+
+  function approve(address _spender, uint256 _value) public whenNotPaused returns (bool) {
+    return super.approve(_spender, _value);
+  }
+
+  function batchTransfer(address[] memory _receivers, uint256 _value) public whenNotPaused returns (bool) {
+    uint cnt = _receivers.length;
+    uint256 amount = uint256(cnt) * _value;
+    require(cnt > 0 && cnt <= 20);
+    require(_value > 0 && balances[msg.sender] >= amount);
+
+    balances[msg.sender] = balances[msg.sender].sub(amount);
+    for (uint i = 0; i < cnt; i++) {
+        balances[_receivers[i]] = balances[_receivers[i]].add(_value);
+        emit Transfer(msg.sender, _receivers[i], _value);
+    }
+    return true;
+  }
+}
+
+/**
+ * @title Bec Token
+ *
+ * @dev Implementation of Bec Token based on the basic standard token.
+ */
+contract BecToken is PausableToken {
+    /**
+    * Public variables of the token
+    * The following variables are OPTIONAL vanities. One does not have to include them.
+    * They allow one to customise the token contract & in no way influences the core functionality.
+    * Some wallets/interfaces might not even bother to look at this information.
+    */
+    string public name = "BeautyChain";
+    string public symbol = "BEC";
+    string public version = '1.0.0';
+    uint8 public decimals = 18;
+
+    /**
+     * @dev Function to check the amount of tokens that an owner allowed to a spender.
+     */
+    constructor() public {
+      totalSupply = 7000000000 * (10**(uint256(decimals)));
+      balances[msg.sender] = totalSupply;    // Give the creator all initial tokens
+    }
+
+    function () external {
+        //if ether is sent to this address, send it back.
+        revert();
+    }
+}
diff --git a/solidity_examples/WalletLibrary.sol b/solidity_examples/WalletLibrary.sol
new file mode 100644
index 0000000000000000000000000000000000000000..df10b56bcf6c424692e340f4d9246c292678c7d6
--- /dev/null
+++ b/solidity_examples/WalletLibrary.sol
@@ -0,0 +1,398 @@
+//sol Wallet
+// Multi-sig, daily-limited account proxy/wallet.
+// @authors:
+// Gav Wood <g@ethdev.com>
+// inheritable "property" contract that enables methods to be protected by requiring the acquiescence of either a
+// single, or, crucially, each of a number of, designated owners.
+// usage:
+// use modifiers onlyowner (just own owned) or onlymanyowners(hash), whereby the same hash must be provided by
+// some number (specified in constructor) of the set of owners (specified in the constructor, modifiable) before the
+// interior is executed.
+
+pragma solidity 0.5.0;
+
+contract WalletEvents {
+  // EVENTS
+
+  // this contract only has six types of events: it can accept a confirmation, in which case
+  // we record owner and operation (hash) alongside it.
+  event Confirmation(address owner, bytes32 operation);
+  event Revoke(address owner, bytes32 operation);
+
+  // some others are in the case of an owner changing.
+  event OwnerChanged(address oldOwner, address newOwner);
+  event OwnerAdded(address newOwner);
+  event OwnerRemoved(address oldOwner);
+
+  // the last one is emitted if the required signatures change
+  event RequirementChanged(uint newRequirement);
+
+  // Funds has arrived into the wallet (record how much).
+  event Deposit(address _from, uint value);
+  // Single transaction going out of the wallet (record who signed for it, how much, and to whom it's going).
+  event SingleTransact(address owner, uint value, address to, bytes data, address created);
+  // Multi-sig transaction going out of the wallet (record who signed for it last, the operation hash, how much, and to whom it's going).
+  event MultiTransact(address owner, bytes32 operation, uint value, address to, bytes data, address created);
+  // Confirmation still needed for a transaction.
+  event ConfirmationNeeded(bytes32 operation, address initiator, uint value, address to, bytes data);
+}
+
+contract WalletAbi {
+  // Revokes a prior confirmation of the given operation
+  function revoke(bytes32 _operation) external;
+
+  // Replaces an owner `_from` with another `_to`.
+  function changeOwner(address _from, address _to) external;
+
+  function addOwner(address _owner) external;
+
+  function removeOwner(address _owner) external;
+
+  function changeRequirement(uint _newRequired) external;
+
+  function isOwner(address _addr) public returns (bool);
+
+  function hasConfirmed(bytes32 _operation, address _owner) external returns (bool);
+
+  // (re)sets the daily limit. needs many of the owners to confirm. doesn't alter the amount already spent today.
+  function setDailyLimit(uint _newLimit) external;
+
+  function execute(address _to, uint _value, bytes calldata _data) external returns (bytes32 o_hash);
+  function confirm(bytes32 _h) public returns (bool o_success);
+}
+
+contract WalletLibrary is WalletEvents {
+  // TYPES
+
+  // struct for the status of a pending operation.
+  struct PendingState {
+    uint yetNeeded;
+    uint ownersDone;
+    uint index;
+  }
+
+  // Transaction structure to remember details of transaction lest it need be saved for a later call.
+  struct Transaction {
+    address to;
+    uint value;
+    bytes data;
+  }
+
+  // MODIFIERS
+
+  // simple single-sig function modifier.
+  modifier onlyowner {
+    if (isOwner(msg.sender))
+      _;
+  }
+  // multi-sig function modifier: the operation must have an intrinsic hash in order
+  // that later attempts can be realised as the same underlying operation and
+  // thus count as confirmations.
+  modifier onlymanyowners(bytes32 _operation) {
+    if (confirmAndCheck(_operation))
+      _;
+  }
+
+  // METHODS
+
+  // gets called when no other function matches
+  function() external payable {
+    // just being sent some cash?
+    if (msg.value > 0)
+      emit Deposit(msg.sender, msg.value);
+  }
+
+  // constructor is given number of sigs required to do protected "onlymanyowners" transactions
+  // as well as the selection of addresses capable of confirming them.
+  function initMultiowned(address[] memory _owners, uint _required) public only_uninitialized {
+    m_numOwners = _owners.length + 1;
+    m_owners[1] = uint(msg.sender);
+    m_ownerIndex[uint(msg.sender)] = 1;
+    for (uint i = 0; i < _owners.length; ++i)
+    {
+      m_owners[2 + i] = uint(_owners[i]);
+      m_ownerIndex[uint(_owners[i])] = 2 + i;
+    }
+    m_required = _required;
+  }
+
+  // Revokes a prior confirmation of the given operation
+  function revoke(bytes32 _operation) external {
+    uint ownerIndex = m_ownerIndex[uint(msg.sender)];
+    // make sure they're an owner
+    if (ownerIndex == 0) return;
+    uint ownerIndexBit = 2**ownerIndex;
+    PendingState memory pending = m_pending[_operation];
+    if (pending.ownersDone & ownerIndexBit > 0) {
+      pending.yetNeeded++;
+      pending.ownersDone -= ownerIndexBit;
+      emit Revoke(msg.sender, _operation);
+    }
+  }
+
+  // Replaces an owner `_from` with another `_to`.
+  function changeOwner(address _from, address _to) onlymanyowners(keccak256(msg.data)) external {
+    if (isOwner(_to)) return;
+    uint ownerIndex = m_ownerIndex[uint(_from)];
+    if (ownerIndex == 0) return;
+
+    clearPending();
+    m_owners[ownerIndex] = uint(_to);
+    m_ownerIndex[uint(_from)] = 0;
+    m_ownerIndex[uint(_to)] = ownerIndex;
+    emit OwnerChanged(_from, _to);
+  }
+
+  function addOwner(address _owner) onlymanyowners(keccak256(msg.data)) external {
+    if (isOwner(_owner)) return;
+
+    clearPending();
+    if (m_numOwners >= c_maxOwners)
+      reorganizeOwners();
+    if (m_numOwners >= c_maxOwners)
+      return;
+    m_numOwners++;
+    m_owners[m_numOwners] = uint(_owner);
+    m_ownerIndex[uint(_owner)] = m_numOwners;
+    emit OwnerAdded(_owner);
+  }
+
+  function removeOwner(address _owner) onlymanyowners(keccak256(msg.data)) external {
+    uint ownerIndex = m_ownerIndex[uint(_owner)];
+    if (ownerIndex == 0) return;
+    if (m_required > m_numOwners - 1) return;
+
+    m_owners[ownerIndex] = 0;
+    m_ownerIndex[uint(_owner)] = 0;
+    clearPending();
+    reorganizeOwners(); //make sure m_numOwner is equal to the number of owners and always points to the optimal free slot
+    emit OwnerRemoved(_owner);
+  }
+
+  function changeRequirement(uint _newRequired) onlymanyowners(keccak256(msg.data)) external {
+    if (_newRequired > m_numOwners) return;
+    m_required = _newRequired;
+    clearPending();
+    emit RequirementChanged(_newRequired);
+  }
+
+  // Gets an owner by 0-indexed position (using numOwners as the count)
+  function getOwner(uint ownerIndex) external view returns (address) {
+    return address(m_owners[ownerIndex + 1]);
+  }
+
+  function isOwner(address _addr) public view returns (bool) {
+    return m_ownerIndex[uint(_addr)] > 0;
+  }
+
+  function hasConfirmed(bytes32 _operation, address _owner) external view returns (bool) {
+    PendingState memory pending = m_pending[_operation];
+    uint ownerIndex = m_ownerIndex[uint(_owner)];
+
+    // make sure they're an owner
+    if (ownerIndex == 0) return false;
+
+    // determine the bit to set for this owner.
+    uint ownerIndexBit = 2**ownerIndex;
+    return !(pending.ownersDone & ownerIndexBit == 0);
+  }
+
+  // constructor - stores initial daily limit and records the present day's index.
+  function initDaylimit(uint _limit) public only_uninitialized {
+    m_dailyLimit = _limit;
+    m_lastDay = today();
+  }
+  // (re)sets the daily limit. needs many of the owners to confirm. doesn't alter the amount already spent today.
+  function setDailyLimit(uint _newLimit) onlymanyowners(keccak256(msg.data)) external {
+    m_dailyLimit = _newLimit;
+  }
+  // resets the amount already spent today. needs many of the owners to confirm.
+  function resetSpentToday() onlymanyowners(keccak256(msg.data)) external {
+    m_spentToday = 0;
+  }
+
+  // throw unless the contract is not yet initialized.
+  modifier only_uninitialized { require(m_numOwners == 0); _; }
+
+  // constructor - just pass on the owner array to the multiowned and
+  // the limit to daylimit
+  function initWallet(address[] memory _owners, uint _required, uint _daylimit) public only_uninitialized {
+    initDaylimit(_daylimit);
+    initMultiowned(_owners, _required);
+  }
+
+  // kills the contract sending everything to `_to`.
+  function kill(address payable _to) onlymanyowners(keccak256(msg.data)) external {
+    selfdestruct(_to);
+  }
+
+  // Outside-visible transact entry point. Executes transaction immediately if below daily spend limit.
+  // If not, goes into multisig process. We provide a hash on return to allow the sender to provide
+  // shortcuts for the other confirmations (allowing them to avoid replicating the _to, _value
+  // and _data arguments). They still get the option of using them if they want, anyways.
+  function execute(address _to, uint _value, bytes calldata _data) external onlyowner returns (bytes32 o_hash) {
+    // first, take the opportunity to check that we're under the daily limit.
+    if ((_data.length == 0 && underLimit(_value)) || m_required == 1) {
+      // yes - just execute the call.
+      address created;
+      if (_to == address(0)) {
+        created = create(_value, _data);
+      } else {
+        (bool success, bytes memory data) = _to.call.value(_value)(_data);
+        require(success);
+      }
+      emit SingleTransact(msg.sender, _value, _to, _data, created);
+    } else {
+      // determine our operation hash.
+      o_hash = keccak256(abi.encode(msg.data, block.number));
+      // store if it's new
+      if (m_txs[o_hash].to == address(0) && m_txs[o_hash].value == 0 && m_txs[o_hash].data.length == 0) {
+        m_txs[o_hash].to = _to;
+        m_txs[o_hash].value = _value;
+        m_txs[o_hash].data = _data;
+      }
+      if (!confirm(o_hash)) {
+        emit ConfirmationNeeded(o_hash, msg.sender, _value, _to, _data);
+      }
+    }
+  }
+
+  function create(uint _value, bytes memory _code) internal returns (address o_addr) {
+    uint256 o_size;
+    assembly {
+      o_addr := create(_value, add(_code, 0x20), mload(_code))
+      o_size := extcodesize(o_addr)
+    }
+    require(o_size != 0);
+  }
+
+  // confirm a transaction through just the hash. we use the previous transactions map, m_txs, in order
+  // to determine the body of the transaction from the hash provided.
+  function confirm(bytes32 _h) public onlymanyowners(_h) returns (bool o_success) {
+    if (m_txs[_h].to != address(0) || m_txs[_h].value != 0 || m_txs[_h].data.length != 0) {
+      address created;
+      if (m_txs[_h].to == address(0)) {
+        created = create(m_txs[_h].value, m_txs[_h].data);
+      } else {
+          (bool success, bytes memory data) = m_txs[_h].to.call.value(m_txs[_h].value)(m_txs[_h].data);
+        require(success);
+      }
+
+      emit MultiTransact(msg.sender, _h, m_txs[_h].value, m_txs[_h].to, m_txs[_h].data, created);
+      delete m_txs[_h];
+      return true;
+    }
+  }
+
+  // INTERNAL METHODS
+
+  function confirmAndCheck(bytes32 _operation) internal returns (bool) {
+    // determine what index the present sender is:
+    uint ownerIndex = m_ownerIndex[uint(msg.sender)];
+    // make sure they're an owner
+    if (ownerIndex == 0) return false;
+
+    PendingState memory pending = m_pending[_operation];
+    // if we're not yet working on this operation, switch over and reset the confirmation status.
+    if (pending.yetNeeded == 0) {
+      // reset count of confirmations needed.
+      pending.yetNeeded = m_required;
+      // reset which owners have confirmed (none) - set our bitmap to 0.
+      pending.ownersDone = 0;
+      pending.index = m_pendingIndex.length++;
+      m_pendingIndex[pending.index] = _operation;
+    }
+    // determine the bit to set for this owner.
+    uint ownerIndexBit = 2**ownerIndex;
+    // make sure we (the message sender) haven't confirmed this operation previously.
+    if (pending.ownersDone & ownerIndexBit == 0) {
+      emit Confirmation(msg.sender, _operation);
+      // ok - check if count is enough to go ahead.
+      if (pending.yetNeeded <= 1) {
+        // enough confirmations: reset and run interior.
+        delete m_pendingIndex[m_pending[_operation].index];
+        delete m_pending[_operation];
+        return true;
+      }
+      else
+      {
+        // not enough: record that this owner in particular confirmed.
+        pending.yetNeeded--;
+        pending.ownersDone |= ownerIndexBit;
+      }
+    }
+  }
+
+  function reorganizeOwners() private {
+    uint free = 1;
+    while (free < m_numOwners)
+    {
+      while (free < m_numOwners && m_owners[free] != 0) free++;
+      while (m_numOwners > 1 && m_owners[m_numOwners] == 0) m_numOwners--;
+      if (free < m_numOwners && m_owners[m_numOwners] != 0 && m_owners[free] == 0)
+      {
+        m_owners[free] = m_owners[m_numOwners];
+        m_ownerIndex[m_owners[free]] = free;
+        m_owners[m_numOwners] = 0;
+      }
+    }
+  }
+
+  // checks to see if there is at least `_value` left from the daily limit today. if there is, subtracts it and
+  // returns true. otherwise just returns false.
+  function underLimit(uint _value) internal onlyowner returns (bool) {
+    // reset the spend limit if we're on a different day to last time.
+    if (today() > m_lastDay) {
+      m_spentToday = 0;
+      m_lastDay = today();
+    }
+    // check to see if there's enough left - if so, subtract and return true.
+    // overflow protection                    // dailyLimit check
+    if (m_spentToday + _value >= m_spentToday && m_spentToday + _value <= m_dailyLimit) {
+      m_spentToday += _value;
+      return true;
+    }
+    return false;
+  }
+
+  // determines today's index.
+  function today() private view returns (uint) { return now / 1 days; }
+
+  function clearPending() internal {
+    uint length = m_pendingIndex.length;
+
+    for (uint i = 0; i < length; ++i) {
+      delete m_txs[m_pendingIndex[i]];
+
+      if (m_pendingIndex[i] != 0)
+        delete m_pending[m_pendingIndex[i]];
+    }
+
+    delete m_pendingIndex;
+  }
+
+  // FIELDS
+  address _walletLibrary = 0xCAfEcAfeCAfECaFeCaFecaFecaFECafECafeCaFe;
+
+  // the number of owners that must confirm the same operation before it is run.
+  uint public m_required;
+  // pointer used to find a free slot in m_owners
+  uint public m_numOwners;
+
+  uint public m_dailyLimit;
+  uint public m_spentToday;
+  uint public m_lastDay;
+
+  // list of owners
+  uint[256] m_owners;
+
+  uint c_maxOwners = 250;
+  // index on the list of owners to allow reverse lookup
+  mapping(uint => uint) m_ownerIndex;
+  // the ongoing operations.
+  mapping(bytes32 => PendingState) m_pending;
+  bytes32[] m_pendingIndex;
+
+  // pending transactions we have at present.
+  mapping (bytes32 => Transaction) m_txs;
+}
diff --git a/solidity_examples/calls.sol b/solidity_examples/calls.sol
new file mode 100644
index 0000000000000000000000000000000000000000..d1df71c2f6b754e988a335d643e9937222d4ef80
--- /dev/null
+++ b/solidity_examples/calls.sol
@@ -0,0 +1,35 @@
+
+
+contract Caller {
+
+	address public fixed_address;
+	address public stored_address;
+
+	uint256 statevar;
+
+	constructor(address addr) public {
+		fixed_address = addr;
+	}
+
+	function thisisfine() public {
+	    fixed_address.call("");
+	}
+
+	function reentrancy() public {
+	    fixed_address.call("");
+	    statevar = 0;
+	}
+
+	function calluseraddress(address addr) public {
+	    addr.call("");
+	}
+
+	function callstoredaddress() public {
+	    stored_address.call("");
+	}
+
+	function setstoredaddress(address addr) public {
+	    stored_address = addr;
+	}
+
+}
diff --git a/solidity_examples/etherstore.sol b/solidity_examples/etherstore.sol
new file mode 100644
index 0000000000000000000000000000000000000000..7cf903883f17097b57df30de94250b49aae4d248
--- /dev/null
+++ b/solidity_examples/etherstore.sol
@@ -0,0 +1,25 @@
+pragma solidity 0.5.0;
+
+
+contract EtherStore {
+
+    uint256 public withdrawalLimit = 1 ether;
+    mapping(address => uint256) public lastWithdrawTime;
+    mapping(address => uint256) public balances;
+
+    function depositFunds() public payable {
+        balances[msg.sender] += msg.value;
+    }
+
+    function withdrawFunds (uint256 _weiToWithdraw) public {
+        require(balances[msg.sender] >= _weiToWithdraw);
+        // limit the withdrawal
+        require(_weiToWithdraw <= withdrawalLimit);
+        // limit the time allowed to withdraw
+        require(now >= lastWithdrawTime[msg.sender] + 1 weeks);
+        (bool success, bytes memory data) = msg.sender.call.value(_weiToWithdraw)("");
+        require(success);
+        balances[msg.sender] -= _weiToWithdraw;
+        lastWithdrawTime[msg.sender] = now;
+    }
+ }
\ No newline at end of file
diff --git a/solidity_examples/exceptions.sol b/solidity_examples/exceptions.sol
new file mode 100644
index 0000000000000000000000000000000000000000..0a7d0e78e0d8baeca42dc38f3960e0749e86b21c
--- /dev/null
+++ b/solidity_examples/exceptions.sol
@@ -0,0 +1,45 @@
+
+
+contract Exceptions {
+
+    uint256[8] myarray;
+
+    function assert1() public pure {
+    	uint256 i = 1;
+        assert(i == 0);
+    }
+
+    function assert2() public pure {
+    	uint256 i = 1;
+        assert(i > 0);
+    }
+
+    function assert3(uint256 input) public pure {
+        assert(input != 23);
+    }
+
+    function requireisfine(uint256 input) public pure {
+        require(input != 23);
+    }
+
+    function divisionby0(uint256 input) public pure {
+        uint256 i = 1/input;
+    }
+
+    function thisisfine(uint256 input) public pure {
+        if (input > 0) {
+            uint256 i = 1/input;
+        }
+    }
+
+    function arrayaccess(uint256 index) public view {
+        uint256 i = myarray[index];
+    }
+
+    function thisisalsofind(uint256 index) public view {
+        if (index < 8) {
+            uint256 i = myarray[index];
+        }
+    }
+
+}
diff --git a/solidity_examples/hashforether.sol b/solidity_examples/hashforether.sol
new file mode 100644
index 0000000000000000000000000000000000000000..0fde81b19a2da460a5aec2688d97835d9e5f5d2d
--- /dev/null
+++ b/solidity_examples/hashforether.sol
@@ -0,0 +1,15 @@
+pragma solidity 0.5.0;
+
+
+contract HashForEther {
+
+    function withdrawWinnings() public payable {
+        // Winner if the last 8 hex characters of the address are 0.
+        if (uint32(msg.sender) == 0)
+            _sendWinnings();
+    }
+
+    function _sendWinnings() public {
+        msg.sender.transfer(address(this).balance);
+    }
+}
diff --git a/solidity_examples/killbilly.sol b/solidity_examples/killbilly.sol
new file mode 100644
index 0000000000000000000000000000000000000000..7ec388ba58a561d072aa8fc2c60472771cf69a8d
--- /dev/null
+++ b/solidity_examples/killbilly.sol
@@ -0,0 +1,24 @@
+pragma solidity 0.5.7;
+
+contract KillBilly {
+	bool public is_killable;
+	mapping (address => bool) public approved_killers;
+
+	constructor() public {
+		is_killable = false;
+	}
+
+	function killerize(address addr) public {
+		approved_killers[addr] = true;
+	}
+
+	function activatekillability() public {
+		require(approved_killers[msg.sender] == true);
+		is_killable = true;
+	}
+
+	function commencekilling() public {
+	    require(is_killable);
+	 	selfdestruct(msg.sender);
+	}
+}
\ No newline at end of file
diff --git a/solidity_examples/origin.sol b/solidity_examples/origin.sol
new file mode 100644
index 0000000000000000000000000000000000000000..2ceb10f8f6d78e893f40dc3ab8451cbb2cc6b96a
--- /dev/null
+++ b/solidity_examples/origin.sol
@@ -0,0 +1,36 @@
+pragma solidity 0.5.0;
+
+
+contract Origin {
+  address public owner;
+
+
+  /**
+   * @dev The Ownable constructor sets the original `owner` of the contract to the sender
+   * account.
+   */
+  constructor() public {
+    owner = msg.sender;
+  }
+
+
+  /**
+   * @dev Throws if called by any account other than the owner.
+   */
+  modifier onlyOwner() {
+    require(tx.origin != owner);
+    _;
+  }
+
+
+  /**
+   * @dev Allows the current owner to transfer control of the contract to a newOwner.
+   * @param newOwner The address to transfer ownership to.
+   */
+  function transferOwnership(address newOwner) public onlyOwner {
+    if (newOwner != address(0)) {
+      owner = newOwner;
+    }
+  }
+
+}
diff --git a/solidity_examples/returnvalue.sol b/solidity_examples/returnvalue.sol
new file mode 100644
index 0000000000000000000000000000000000000000..88bd88056ff32317291ee2aeeb95d50af601ddc1
--- /dev/null
+++ b/solidity_examples/returnvalue.sol
@@ -0,0 +1,17 @@
+pragma solidity 0.5.0;
+
+
+contract ReturnValue {
+
+  address public callee = 0xE0f7e56E62b4267062172495D7506087205A4229;
+
+  function callnotchecked() public {
+    callee.call("");
+  }
+
+  function callchecked() public {
+    (bool success, bytes memory data) = callee.call("");
+    require(success);
+  }
+
+}
\ No newline at end of file
diff --git a/solidity_examples/rubixi.sol b/solidity_examples/rubixi.sol
new file mode 100644
index 0000000000000000000000000000000000000000..2a4f75fba2afa6e59d2aee47fe051ce1d39d30e9
--- /dev/null
+++ b/solidity_examples/rubixi.sol
@@ -0,0 +1,152 @@
+pragma solidity 0.5.0;
+
+
+contract Rubixi {
+    //Declare variables for storage critical to contract
+    uint private balance = 0;
+    uint private collectedFees = 0;
+    uint private feePercent = 10;
+    uint private pyramidMultiplier = 300;
+    uint private payoutOrder = 0;
+
+    address payable private creator;
+
+    modifier onlyowner {
+        if (msg.sender == creator) _;
+    }
+
+    struct Participant {
+        address payable etherAddress;
+        uint payout;
+    }
+
+    //Fallback function
+    function() external payable {
+        init();
+    }
+
+    //Sets creator
+    function dynamicPyramid() public {
+        creator = msg.sender;
+    }
+
+    Participant[] private participants;
+
+    //Fee functions for creator
+    function collectAllFees() public onlyowner {
+        require(collectedFees > 0);
+        creator.transfer(collectedFees);
+        collectedFees = 0;
+    }
+
+    function collectFeesInEther(uint _amt) public onlyowner {
+        _amt *= 1 ether;
+        if (_amt > collectedFees) collectAllFees();
+
+        require(collectedFees > 0);
+
+        creator.transfer(_amt);
+        collectedFees -= _amt;
+    }
+
+    function collectPercentOfFees(uint _pcent) public onlyowner {
+        require(collectedFees > 0 && _pcent <= 100);
+
+        uint feesToCollect = collectedFees / 100 * _pcent;
+        creator.transfer(feesToCollect);
+        collectedFees -= feesToCollect;
+    }
+
+    //Functions for changing variables related to the contract
+    function changeOwner(address payable _owner) public onlyowner {
+        creator = _owner;
+    }
+
+    function changeMultiplier(uint _mult) public onlyowner {
+        require(_mult <= 300 &&  _mult >= 120);
+        pyramidMultiplier = _mult;
+    }
+
+    function changeFeePercentage(uint _fee) public onlyowner {
+        require(_fee <= 10);
+        feePercent = _fee;
+    }
+
+    //Functions to provide information to end-user using JSON interface or other interfaces
+    function currentMultiplier() public view returns (uint multiplier, string memory info) {
+        multiplier = pyramidMultiplier;
+        info = "This multiplier applies to you as soon as transaction is received, may be lowered to hasten payouts or increased if payouts are fast enough. Due to no float or decimals, multiplier is x100 for a fractional multiplier e.g. 250 is actually a 2.5x multiplier. Capped at 3x max and 1.2x min.";
+    }
+
+    function currentFeePercentage() public view returns (uint fee, string memory info) {
+        fee = feePercent;
+        info = "Shown in % form. Fee is halved(50%) for amounts equal or greater than 50 ethers. (Fee may change, but is capped to a maximum of 10%)";
+}
+
+    function currentPyramidBalanceApproximately() public view returns (uint pyramidBalance, string memory info) {
+        pyramidBalance = balance / 1 ether;
+        info = "All balance values are measured in Ethers, note that due to no decimal placing, these values show up as integers only, within the contract itself you will get the exact decimal value you are supposed to";
+    }
+
+    function nextPayoutWhenPyramidBalanceTotalsApproximately() public view returns (uint balancePayout) {
+        balancePayout = participants[payoutOrder].payout / 1 ether;
+    }
+
+    function feesSeperateFromBalanceApproximately() public view returns (uint fees) {
+        fees = collectedFees / 1 ether;
+    }
+
+    function totalParticipants() public view returns (uint count) {
+        count = participants.length;
+    }
+
+    function numberOfParticipantsWaitingForPayout() public view returns (uint count) {
+        count = participants.length - payoutOrder;
+    }
+
+    function participantDetails(uint orderInPyramid) public view returns (address addr, uint payout) {
+        if (orderInPyramid <= participants.length) {
+            addr = participants[orderInPyramid].etherAddress;
+            payout = participants[orderInPyramid].payout / 1 ether;
+        }
+    }
+
+    //init function run on fallback
+    function init() private {
+        //Ensures only tx with value of 1 ether or greater are processed and added to pyramid
+        if (msg.value < 1 ether) {
+            collectedFees += msg.value;
+            return;
+        }
+
+        uint _fee = feePercent;
+        // 50% fee rebate on any ether value of 50 or greater
+        if (msg.value >= 50 ether) _fee /= 2;
+
+        addPayout(_fee);
+    }
+
+    //Function called for valid tx to the contract
+    function addPayout(uint _fee) private {
+        //Adds new address to participant array
+        participants.push(Participant(msg.sender, (msg.value * pyramidMultiplier) / 100));
+
+        // These statements ensure a quicker payout system to
+        // later pyramid entrants, so the pyramid has a longer lifespan
+        if (participants.length == 10) pyramidMultiplier = 200;
+        else if (participants.length == 25) pyramidMultiplier = 150;
+
+        // collect fees and update contract balance
+        balance += (msg.value * (100 - _fee)) / 100;
+        collectedFees += (msg.value * _fee) / 100;
+
+        //Pays earlier participiants if balance sufficient
+        while (balance > participants[payoutOrder].payout) {
+            uint payoutToSend = participants[payoutOrder].payout;
+            participants[payoutOrder].etherAddress.transfer(payoutToSend);
+
+            balance -= participants[payoutOrder].payout;
+            payoutOrder += 1;
+        }
+    }
+}
diff --git a/solidity_examples/suicide.sol b/solidity_examples/suicide.sol
new file mode 100644
index 0000000000000000000000000000000000000000..419ba3e9ffc5720b2fdc6bf348d72080509c3cdd
--- /dev/null
+++ b/solidity_examples/suicide.sol
@@ -0,0 +1,11 @@
+
+
+contract Suicide {
+
+  function kill(address payable addr) public {
+    if (addr == address(0x0)) {
+      selfdestruct(addr);
+    }
+  }
+
+}
diff --git a/solidity_examples/timelock.sol b/solidity_examples/timelock.sol
new file mode 100644
index 0000000000000000000000000000000000000000..433a300a1b0ba8ee375b9259fd46e38a9e6a2517
--- /dev/null
+++ b/solidity_examples/timelock.sol
@@ -0,0 +1,24 @@
+pragma solidity 0.5.0;
+
+
+contract TimeLock {
+
+    mapping(address => uint) public balances;
+    mapping(address => uint) public lockTime;
+
+    function deposit() public payable {
+        balances[msg.sender] += msg.value;
+        lockTime[msg.sender] = now + 1 weeks;
+    }
+
+    function increaseLockTime(uint _secondsToIncrease) public {
+        lockTime[msg.sender] += _secondsToIncrease;
+    }
+
+    function withdraw() public {
+        require(balances[msg.sender] > 0);
+        require(now > lockTime[msg.sender]);
+        balances[msg.sender] = 0;
+        msg.sender.transfer(balances[msg.sender]);
+    }
+}
\ No newline at end of file
diff --git a/solidity_examples/token.sol b/solidity_examples/token.sol
new file mode 100644
index 0000000000000000000000000000000000000000..1982eb84cac168b84288c63ba53aa49c30f5981a
--- /dev/null
+++ b/solidity_examples/token.sol
@@ -0,0 +1,22 @@
+
+
+contract Token {
+
+  mapping(address => uint) balances;
+  uint public totalSupply;
+
+  constructor(uint _initialSupply) public {
+    balances[msg.sender] = totalSupply = _initialSupply;
+  }
+
+  function transfer(address _to, uint _value) public returns (bool) {
+    require(balances[msg.sender] - _value >= 0);
+    balances[msg.sender] -= _value;
+    balances[_to] += _value;
+    return true;
+  }
+
+  function balanceOf(address _owner) public view returns (uint balance) {
+    return balances[_owner];
+  }
+}
diff --git a/solidity_examples/weak_random.sol b/solidity_examples/weak_random.sol
new file mode 100644
index 0000000000000000000000000000000000000000..5acdd7efe8ca16f75fb1895d969251c1e2f20218
--- /dev/null
+++ b/solidity_examples/weak_random.sol
@@ -0,0 +1,50 @@
+pragma solidity 0.5.0;
+
+
+contract WeakRandom {
+    struct Contestant {
+        address payable addr;
+        uint gameId;
+    }
+
+    uint public prize = 2.5 ether;
+    uint public totalTickets = 50;
+    uint public pricePerTicket = prize / totalTickets;
+
+    uint public gameId = 1;
+    uint public nextTicket = 0;
+    mapping (uint => Contestant) public contestants;
+
+    function () payable external {
+        uint moneySent = msg.value;
+
+        while (moneySent >= pricePerTicket && nextTicket < totalTickets) {
+            uint currTicket = nextTicket++;
+            contestants[currTicket] = Contestant(msg.sender, gameId);
+            moneySent -= pricePerTicket;
+        }
+
+        if (nextTicket == totalTickets) {
+            chooseWinner();
+        }
+
+        // Send back leftover money
+        if (moneySent > 0) {
+            msg.sender.transfer(moneySent);
+        }
+    }
+
+    function chooseWinner() private {
+        address seed1 = contestants[uint(block.coinbase) % totalTickets].addr;
+        address seed2 = contestants[uint(msg.sender) % totalTickets].addr;
+        uint seed3 = block.difficulty;
+        bytes32 randHash = keccak256(abi.encode(seed1, seed2, seed3));
+
+        uint winningNumber = uint(randHash) % totalTickets;
+        address payable winningAddress = contestants[winningNumber].addr;
+
+        gameId++;
+        nextTicket = 0;
+        winningAddress.transfer(prize);
+    }
+}
diff --git a/static/Ownable.html b/static/Ownable.html
new file mode 100644
index 0000000000000000000000000000000000000000..9dff1f1a21acfab95fe60f4f9dac0c90c8e9b78e
--- /dev/null
+++ b/static/Ownable.html
@@ -0,0 +1,145 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <title>Call Graph</title>
+  <style type="text/css">
+   #mynetwork {
+    background-color: #232625;
+   }
+
+   body {
+    background-color: #232625;
+    color: #ffffff;
+   }
+  </style>
+  <link href="https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.css" rel="stylesheet" type="text/css" />
+  <script src="https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.js"></script>
+  <script>
+
+    var options = {
+      autoResize: true,
+      height: '100%',
+      width: '100%',
+      manipulation: false,
+      height: '90%',
+      layout: {
+        randomSeed: undefined,
+        improvedLayout:true,
+        hierarchical: {
+          enabled:true,
+          levelSeparation: 450,
+          nodeSpacing: 200,
+          treeSpacing: 100,
+          blockShifting: true,
+          edgeMinimization: true,
+          parentCentralization: false,
+          direction: 'LR',        // UD, DU, LR, RL
+          sortMethod: 'directed'   // hubsize, directed
+        }
+      },
+      nodes:{
+        borderWidth: 1,
+        borderWidthSelected: 2,
+        chosen: true,
+        shape: 'box',
+        font: {
+          align: 'left',
+          color: '#FFFFFF',
+        },
+      },
+      edges:{
+        font: {
+          color: '#ffffff',
+          size: 12, // px
+          face: 'arial',
+          background: 'none',
+          strokeWidth: 0, // px
+          strokeColor: '#ffffff',
+          align: 'horizontal',
+          multi: false,
+          vadjust: 0,
+        }
+      },
+
+      physics:{
+        enabled: false,
+      }   
+    
+  }
+
+  var nodes = [
+{id: '1', color: {border: '#26996f', background: '#2f7e5b', highlight: {border: '#26996f', background: '#28a16f'}}, size: 150, 'label': '76 JUMPDEST\n77 PUSH1 0x00\n79 DUP1\n80 REVERT\n', 'fullLabel': '76 JUMPDEST\n77 PUSH1 0x00\n79 DUP1\n80 REVERT\n', 'truncLabel': '76 JUMPDEST\n77 PUSH1 0x00\n79 DUP1\n80 REVERT\n', 'isExpanded': false},
+{id: '6', color: {border: '#26996f', background: '#2f7e5b', highlight: {border: '#26996f', background: '#28a16f'}}, size: 150, 'label': '100 JUMPDEST\n101 PUSH1 0x40\n103 MLOAD\n104 DUP1\n105 DUP3\n106 PUSH20 0xffffffff(...)\n(click to expand +)', 'fullLabel': '100 JUMPDEST\n101 PUSH1 0x40\n103 MLOAD\n104 DUP1\n105 DUP3\n106 PUSH20 0xffffffff(...)\n127 AND\n128 PUSH20 0xffffffff(...)\n149 AND\n150 DUP2\n151 MSTORE\n152 PUSH1 0x20\n154 ADD\n155 SWAP2\n156 POP\n157 POP\n158 PUSH1 0x40\n160 MLOAD\n161 DUP1\n162 SWAP2\n163 SUB\n164 SWAP1\n165 RETURN\n', 'truncLabel': '100 JUMPDEST\n101 PUSH1 0x40\n103 MLOAD\n104 DUP1\n105 DUP3\n106 PUSH20 0xffffffff(...)\n(click to expand +)', 'isExpanded': false},
+{id: '5', color: {border: '#26996f', background: '#2f7e5b', highlight: {border: '#26996f', background: '#28a16f'}}, size: 150, 'label': '223 JUMPDEST\n224 PUSH1 0x00\n226 DUP1\n227 SWAP1\n228 SLOAD\n229 SWAP1\n(click to expand +)', 'fullLabel': '223 JUMPDEST\n224 PUSH1 0x00\n226 DUP1\n227 SWAP1\n228 SLOAD\n229 SWAP1\n230 PUSH2 0x0100\n233 EXP\n234 SWAP1\n235 DIV\n236 PUSH20 0xffffffff(...)\n257 AND\n258 DUP2\n259 JUMP\n', 'truncLabel': '223 JUMPDEST\n224 PUSH1 0x00\n226 DUP1\n227 SWAP1\n228 SLOAD\n229 SWAP1\n(click to expand +)', 'isExpanded': false},
+{id: '4', color: {border: '#26996f', background: '#2f7e5b', highlight: {border: '#26996f', background: '#28a16f'}}, size: 150, 'label': '92 JUMPDEST\n93 PUSH2 0x0064\n96 PUSH2 0x00df\n99 JUMP\n', 'fullLabel': '92 JUMPDEST\n93 PUSH2 0x0064\n96 PUSH2 0x00df\n99 JUMP\n', 'truncLabel': '92 JUMPDEST\n93 PUSH2 0x0064\n96 PUSH2 0x00df\n99 JUMP\n', 'isExpanded': false},
+{id: '7', color: {border: '#26996f', background: '#2f7e5b', highlight: {border: '#26996f', background: '#28a16f'}}, size: 150, 'label': '88 PUSH1 0x00\n90 DUP1\n91 REVERT\n', 'fullLabel': '88 PUSH1 0x00\n90 DUP1\n91 REVERT\n', 'truncLabel': '88 PUSH1 0x00\n90 DUP1\n91 REVERT\n', 'isExpanded': false},
+{id: '3', color: {border: '#26996f', background: '#2f7e5b', highlight: {border: '#26996f', background: '#28a16f'}}, size: 150, 'label': '81 _function_0x8da5cb5b\n82 CALLVALUE\n83 ISZERO\n84 PUSH2 0x005c\n87 JUMPI\n', 'fullLabel': '81 _function_0x8da5cb5b\n82 CALLVALUE\n83 ISZERO\n84 PUSH2 0x005c\n87 JUMPI\n', 'truncLabel': '81 _function_0x8da5cb5b\n82 CALLVALUE\n83 ISZERO\n84 PUSH2 0x005c\n87 JUMPI\n', 'isExpanded': false},
+{id: '14', color: {border: '#26996f', background: '#2f7e5b', highlight: {border: '#26996f', background: '#28a16f'}}, size: 150, 'label': '221 JUMPDEST\n222 STOP\n', 'fullLabel': '221 JUMPDEST\n222 STOP\n', 'truncLabel': '221 JUMPDEST\n222 STOP\n', 'isExpanded': false},
+{id: '13', color: {border: '#26996f', background: '#2f7e5b', highlight: {border: '#26996f', background: '#28a16f'}}, size: 150, 'label': '411 JUMPDEST\n412 DUP1\n413 PUSH20 0xffffffff(...)\n434 AND\n435 PUSH1 0x00\n437 DUP1\n(click to expand +)', 'fullLabel': '411 JUMPDEST\n412 DUP1\n413 PUSH20 0xffffffff(...)\n434 AND\n435 PUSH1 0x00\n437 DUP1\n438 SWAP1\n439 SLOAD\n440 SWAP1\n441 PUSH2 0x0100\n444 EXP\n445 SWAP1\n446 DIV\n447 PUSH20 0xffffffff(...)\n468 AND\n469 PUSH20 0xffffffff(...)\n490 AND\n491 PUSH32 0x8be0079c(...)\n524 PUSH1 0x40\n526 MLOAD\n527 PUSH1 0x40\n529 MLOAD\n530 DUP1\n531 SWAP2\n532 SUB\n533 SWAP1\n534 LOG3\n535 DUP1\n536 PUSH1 0x00\n538 DUP1\n539 PUSH2 0x0100\n542 EXP\n543 DUP2\n544 SLOAD\n545 DUP2\n546 PUSH20 0xffffffff(...)\n567 MUL\n568 NOT\n569 AND\n570 SWAP1\n571 DUP4\n572 PUSH20 0xffffffff(...)\n593 AND\n594 MUL\n595 OR\n596 SWAP1\n597 SSTORE\n598 POP\n599 POP\n600 JUMP\n', 'truncLabel': '411 JUMPDEST\n412 DUP1\n413 PUSH20 0xffffffff(...)\n434 AND\n435 PUSH1 0x00\n437 DUP1\n(click to expand +)', 'isExpanded': false},
+{id: '15', color: {border: '#26996f', background: '#2f7e5b', highlight: {border: '#26996f', background: '#28a16f'}}, size: 150, 'label': '407 PUSH1 0x00\n409 DUP1\n410 REVERT\n', 'fullLabel': '407 PUSH1 0x00\n409 DUP1\n410 REVERT\n', 'truncLabel': '407 PUSH1 0x00\n409 DUP1\n410 REVERT\n', 'isExpanded': false},
+{id: '12', color: {border: '#26996f', background: '#2f7e5b', highlight: {border: '#26996f', background: '#28a16f'}}, size: 150, 'label': '351 JUMPDEST\n352 PUSH1 0x00\n354 PUSH20 0xffffffff(...)\n375 AND\n376 DUP2\n377 PUSH20 0xffffffff(...)\n(click to expand +)', 'fullLabel': '351 JUMPDEST\n352 PUSH1 0x00\n354 PUSH20 0xffffffff(...)\n375 AND\n376 DUP2\n377 PUSH20 0xffffffff(...)\n398 AND\n399 EQ\n400 ISZERO\n401 ISZERO\n402 ISZERO\n403 PUSH2 0x019b\n406 JUMPI\n', 'truncLabel': '351 JUMPDEST\n352 PUSH1 0x00\n354 PUSH20 0xffffffff(...)\n375 AND\n376 DUP2\n377 PUSH20 0xffffffff(...)\n(click to expand +)', 'isExpanded': false},
+{id: '16', color: {border: '#26996f', background: '#2f7e5b', highlight: {border: '#26996f', background: '#28a16f'}}, size: 150, 'label': '347 PUSH1 0x00\n349 DUP1\n350 REVERT\n', 'fullLabel': '347 PUSH1 0x00\n349 DUP1\n350 REVERT\n', 'truncLabel': '347 PUSH1 0x00\n349 DUP1\n350 REVERT\n', 'isExpanded': false},
+{id: '11', color: {border: '#26996f', background: '#2f7e5b', highlight: {border: '#26996f', background: '#28a16f'}}, size: 150, 'label': '260 JUMPDEST\n261 PUSH1 0x00\n263 DUP1\n264 SWAP1\n265 SLOAD\n266 SWAP1\n(click to expand +)', 'fullLabel': '260 JUMPDEST\n261 PUSH1 0x00\n263 DUP1\n264 SWAP1\n265 SLOAD\n266 SWAP1\n267 PUSH2 0x0100\n270 EXP\n271 SWAP1\n272 DIV\n273 PUSH20 0xffffffff(...)\n294 AND\n295 PUSH20 0xffffffff(...)\n316 AND\n317 CALLER\n318 PUSH20 0xffffffff(...)\n339 AND\n340 EQ\n341 ISZERO\n342 ISZERO\n343 PUSH2 0x015f\n346 JUMPI\n', 'truncLabel': '260 JUMPDEST\n261 PUSH1 0x00\n263 DUP1\n264 SWAP1\n265 SLOAD\n266 SWAP1\n(click to expand +)', 'isExpanded': false},
+{id: '10', color: {border: '#26996f', background: '#2f7e5b', highlight: {border: '#26996f', background: '#28a16f'}}, size: 150, 'label': '177 JUMPDEST\n178 PUSH2 0x00dd\n181 PUSH1 0x04\n183 DUP1\n184 DUP1\n185 CALLDATALOAD\n(click to expand +)', 'fullLabel': '177 JUMPDEST\n178 PUSH2 0x00dd\n181 PUSH1 0x04\n183 DUP1\n184 DUP1\n185 CALLDATALOAD\n186 PUSH20 0xffffffff(...)\n207 AND\n208 SWAP1\n209 PUSH1 0x20\n211 ADD\n212 SWAP1\n213 SWAP2\n214 SWAP1\n215 POP\n216 POP\n217 PUSH2 0x0104\n220 JUMP\n', 'truncLabel': '177 JUMPDEST\n178 PUSH2 0x00dd\n181 PUSH1 0x04\n183 DUP1\n184 DUP1\n185 CALLDATALOAD\n(click to expand +)', 'isExpanded': false},
+{id: '17', color: {border: '#26996f', background: '#2f7e5b', highlight: {border: '#26996f', background: '#28a16f'}}, size: 150, 'label': '173 PUSH1 0x00\n175 DUP1\n176 REVERT\n', 'fullLabel': '173 PUSH1 0x00\n175 DUP1\n176 REVERT\n', 'truncLabel': '173 PUSH1 0x00\n175 DUP1\n176 REVERT\n', 'isExpanded': false},
+{id: '9', color: {border: '#26996f', background: '#2f7e5b', highlight: {border: '#26996f', background: '#28a16f'}}, size: 150, 'label': '166 transferOwnership(address)\n167 CALLVALUE\n168 ISZERO\n169 PUSH2 0x00b1\n172 JUMPI\n', 'fullLabel': '166 transferOwnership(address)\n167 CALLVALUE\n168 ISZERO\n169 PUSH2 0x00b1\n172 JUMPI\n', 'truncLabel': '166 transferOwnership(address)\n167 CALLVALUE\n168 ISZERO\n169 PUSH2 0x00b1\n172 JUMPI\n', 'isExpanded': false},
+{id: '18', color: {border: '#26996f', background: '#2f7e5b', highlight: {border: '#26996f', background: '#28a16f'}}, size: 150, 'label': '76 JUMPDEST\n77 PUSH1 0x00\n79 DUP1\n80 REVERT\n', 'fullLabel': '76 JUMPDEST\n77 PUSH1 0x00\n79 DUP1\n80 REVERT\n', 'truncLabel': '76 JUMPDEST\n77 PUSH1 0x00\n79 DUP1\n80 REVERT\n', 'isExpanded': false},
+{id: '8', color: {border: '#26996f', background: '#2f7e5b', highlight: {border: '#26996f', background: '#28a16f'}}, size: 150, 'label': '65 DUP1\n66 PUSH4 0xf2fde38b\n71 EQ\n72 PUSH2 0x00a6\n75 JUMPI\n', 'fullLabel': '65 DUP1\n66 PUSH4 0xf2fde38b\n71 EQ\n72 PUSH2 0x00a6\n75 JUMPI\n', 'truncLabel': '65 DUP1\n66 PUSH4 0xf2fde38b\n71 EQ\n72 PUSH2 0x00a6\n75 JUMPI\n', 'isExpanded': false},
+{id: '2', color: {border: '#26996f', background: '#2f7e5b', highlight: {border: '#26996f', background: '#28a16f'}}, size: 150, 'label': '13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x01000000(...)\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n(click to expand +)', 'fullLabel': '13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x01000000(...)\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n53 AND\n54 DUP1\n55 PUSH4 0x8da5cb5b\n60 EQ\n61 PUSH2 0x0051\n64 JUMPI\n', 'truncLabel': '13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x01000000(...)\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n(click to expand +)', 'isExpanded': false},
+{id: '0', color: {border: '#26996f', background: '#2f7e5b', highlight: {border: '#26996f', background: '#28a16f'}}, size: 150, 'label': '0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n(click to expand +)', 'fullLabel': '0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n9 PUSH2 0x004c\n12 JUMPI\n', 'truncLabel': '0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n(click to expand +)', 'isExpanded': false}
+];
+var edges = [
+{from: '0', to: '1', 'arrows': 'to', 'label': 'Not(ULE(4, calldatasize_Ownable))', 'smooth': {'type': 'cubicBezier'}},
+{from: '5', to: '6', 'arrows': 'to', 'label': '', 'smooth': {'type': 'cubicBezier'}},
+{from: '4', to: '5', 'arrows': 'to', 'label': '', 'smooth': {'type': 'cubicBezier'}},
+{from: '3', to: '4', 'arrows': 'to', 'label': 'callvalue == 0', 'smooth': {'type': 'cubicBezier'}},
+{from: '3', to: '7', 'arrows': 'to', 'label': 'Not(callvalue == 0)', 'smooth': {'type': 'cubicBezier'}},
+{from: '2', to: '3', 'arrows': 'to', 'label': 'Extract(0xff, 0xe0, calldata_Ownable_0) == 0x8da5cb5b', 'smooth': {'type': 'cubicBezier'}},
+{from: '13', to: '14', 'arrows': 'to', 'label': '', 'smooth': {'type': 'cubicBezier'}},
+{from: '12', to: '13', 'arrows': 'to', 'label': 'Not(Extract(0x9f, 0, calldata_Ownable_4) == 0)', 'smooth': {'type': 'cubicBezier'}},
+{from: '12', to: '15', 'arrows': 'to', 'label': 'Extract(0x9f, 0, calldata_Ownable_4) == 0', 'smooth': {'type': 'cubicBezier'}},
+{from: '11', to: '12', 'arrows': 'to', 'label': 'Extract(0x9f, 0, caller) == Extract(0xa7, 8, storage_0)', 'smooth': {'type': 'cubicBezier'}},
+{from: '11', to: '16', 'arrows': 'to', 'label': 'Not(Extract(0x9f, 0, caller) == Extract(0xa7, 8, storage_0))', 'smooth': {'type': 'cubicBezier'}},
+{from: '10', to: '11', 'arrows': 'to', 'label': '', 'smooth': {'type': 'cubicBezier'}},
+{from: '9', to: '10', 'arrows': 'to', 'label': 'callvalue == 0', 'smooth': {'type': 'cubicBezier'}},
+{from: '9', to: '17', 'arrows': 'to', 'label': 'Not(callvalue == 0)', 'smooth': {'type': 'cubicBezier'}},
+{from: '8', to: '9', 'arrows': 'to', 'label': 'Extract(0xff, 0xe0, calldata_Ownable_0) == 0xf2fde38b', 'smooth': {'type': 'cubicBezier'}},
+{from: '8', to: '18', 'arrows': 'to', 'label': 'Not(Extract(0xff, 0xe0, calldata_Ownable_0) == 0xf2fde38b)', 'smooth': {'type': 'cubicBezier'}},
+{from: '2', to: '8', 'arrows': 'to', 'label': 'Not(Extract(0xff, 0xe0, calldata_Ownable_0) == 0x8da5cb5b)', 'smooth': {'type': 'cubicBezier'}},
+{from: '0', to: '2', 'arrows': 'to', 'label': 'ULE(4, calldatasize_Ownable)', 'smooth': {'type': 'cubicBezier'}}
+];
+
+  </script>
+ </head>
+<body>
+<p>Mythril / Ethereum LASER Symbolic VM</p>
+<p><div id="mynetwork"></div><br /></p>
+<script type="text/javascript">
+var container = document.getElementById('mynetwork');
+
+var nodesSet = new vis.DataSet(nodes);
+var edgesSet = new vis.DataSet(edges);
+var data = {'nodes': nodesSet, 'edges': edgesSet}
+
+var gph = new vis.Network(container, data, options);
+gph.on("click", function (params) {
+  // parse node id
+  var nodeID = params['nodes']['0'];
+  if (nodeID) {
+    var clickedNode = nodesSet.get(nodeID);
+
+    if(clickedNode.isExpanded) {
+      clickedNode.label = clickedNode.truncLabel;
+    }
+    else {
+      clickedNode.label = clickedNode.fullLabel;
+    }
+
+    clickedNode.isExpanded = !clickedNode.isExpanded;
+
+    nodesSet.update(clickedNode);
+  }
+});
+</script>
+</body>
+</html>
diff --git a/static/assertions.html b/static/assertions.html
new file mode 100644
index 0000000000000000000000000000000000000000..c97a4d8362743be5b511b2dd144444b5f73b5c8b
--- /dev/null
+++ b/static/assertions.html
@@ -0,0 +1,162 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <title>Call Graph</title>
+
+  <style type="text/css">
+   #mynetwork {
+    background-color: #ffffff;
+   }
+
+   body {
+    background-color: #ffffff;
+    color: #000000;
+    font-size: 10px;
+    font-family: "courier new";
+   }
+
+
+  </style>
+
+
+  <link href="https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.css" rel="stylesheet" type="text/css" />
+  <script src="https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.js"></script>
+  <script>
+
+  
+    var options = {
+      autoResize: true,
+      height: '100%',
+      width: '100%',
+      manipulation: false,
+      height: '90%',
+      layout: {
+        randomSeed: undefined,
+        improvedLayout:true,
+        hierarchical: {
+          enabled:true,
+          levelSeparation: 450,
+          nodeSpacing: 200,
+          treeSpacing: 100,
+          blockShifting: true,
+          edgeMinimization: true,
+          parentCentralization: false,
+          direction: 'LR',        // UD, DU, LR, RL
+          sortMethod: 'directed'   // hubsize, directed
+        }
+      },
+      nodes:{
+        color: '#000000',
+        borderWidth: 1,
+        borderWidthSelected: 1,
+        shapeProperties: {
+          borderDashes: false, // only for borders
+          borderRadius: 0,     // only for box shape
+        },
+        chosen: true,
+        shape: 'box',
+        font: {
+          face: 'courier new',
+          align: 'left',
+          color: '#000000',
+        },
+      },
+      edges:{
+        font: {
+          color: '#000000',
+          face: 'courier new',
+          background: 'none',
+          strokeWidth: 0, // px
+          strokeColor: '#ffffff',
+          align: 'horizontal',
+          multi: false,
+          vadjust: 0,
+        }
+      },
+
+      physics:{
+        enabled: false,
+      }
+  }
+
+
+  var nodes = [
+{id: '0', color: {border: '#000000', background: '#ffffff', highlight: {border: '#000000', background: '#ffffff'}}, size: 150, 'label': '0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n(click to expand +)', 'fullLabel': '0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n9 PUSH1 0x49\n11 JUMPI\n', 'truncLabel': '0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n(click to expand +)', 'isExpanded': false},
+{id: '1', color: {border: '#000000', background: '#ffffff', highlight: {border: '#000000', background: '#ffffff'}}, size: 150, 'label': '73 JUMPDEST\n74 PUSH1 0x00\n76 DUP1\n77 REVERT\n', 'fullLabel': '73 JUMPDEST\n74 PUSH1 0x00\n76 DUP1\n77 REVERT\n', 'truncLabel': '73 JUMPDEST\n74 PUSH1 0x00\n76 DUP1\n77 REVERT\n', 'isExpanded': false},
+{id: '2', color: {border: '#000000', background: '#ffffff', highlight: {border: '#000000', background: '#ffffff'}}, size: 150, 'label': '12 PUSH1 0x00\n14 CALLDATALOAD\n15 PUSH29 0x01000000(...)\n45 SWAP1\n46 DIV\n47 PUSH4 0xffffffff\n(click to expand +)', 'fullLabel': '12 PUSH1 0x00\n14 CALLDATALOAD\n15 PUSH29 0x01000000(...)\n45 SWAP1\n46 DIV\n47 PUSH4 0xffffffff\n52 AND\n53 DUP1\n54 PUSH4 0x59ce2f44\n59 EQ\n60 PUSH1 0x4e\n62 JUMPI\n', 'truncLabel': '12 PUSH1 0x00\n14 CALLDATALOAD\n15 PUSH29 0x01000000(...)\n45 SWAP1\n46 DIV\n47 PUSH4 0xffffffff\n(click to expand +)', 'isExpanded': false},
+{id: '3', color: {border: '#000000', background: '#ffffff', highlight: {border: '#000000', background: '#ffffff'}}, size: 150, 'label': '78 assertion2(uint256)\n79 CALLVALUE\n80 ISZERO\n81 PUSH1 0x58\n83 JUMPI\n', 'fullLabel': '78 assertion2(uint256)\n79 CALLVALUE\n80 ISZERO\n81 PUSH1 0x58\n83 JUMPI\n', 'truncLabel': '78 assertion2(uint256)\n79 CALLVALUE\n80 ISZERO\n81 PUSH1 0x58\n83 JUMPI\n', 'isExpanded': false},
+{id: '4', color: {border: '#000000', background: '#ffffff', highlight: {border: '#000000', background: '#ffffff'}}, size: 150, 'label': '88 JUMPDEST\n89 PUSH1 0x6c\n91 PUSH1 0x04\n93 DUP1\n94 DUP1\n95 CALLDATALOAD\n(click to expand +)', 'fullLabel': '88 JUMPDEST\n89 PUSH1 0x6c\n91 PUSH1 0x04\n93 DUP1\n94 DUP1\n95 CALLDATALOAD\n96 SWAP1\n97 PUSH1 0x20\n99 ADD\n100 SWAP1\n101 SWAP2\n102 SWAP1\n103 POP\n104 POP\n105 PUSH1 0x8e\n107 JUMP\n', 'truncLabel': '88 JUMPDEST\n89 PUSH1 0x6c\n91 PUSH1 0x04\n93 DUP1\n94 DUP1\n95 CALLDATALOAD\n(click to expand +)', 'isExpanded': false},
+{id: '5', color: {border: '#000000', background: '#ffffff', highlight: {border: '#000000', background: '#ffffff'}}, size: 150, 'label': '142 JUMPDEST\n143 PUSH2 0x0100\n146 DUP2\n147 GT\n148 ISZERO\n149 PUSH1 0x9c\n(click to expand +)', 'fullLabel': '142 JUMPDEST\n143 PUSH2 0x0100\n146 DUP2\n147 GT\n148 ISZERO\n149 PUSH1 0x9c\n151 JUMPI\n', 'truncLabel': '142 JUMPDEST\n143 PUSH2 0x0100\n146 DUP2\n147 GT\n148 ISZERO\n149 PUSH1 0x9c\n(click to expand +)', 'isExpanded': false},
+{id: '6', color: {border: '#000000', background: '#ffffff', highlight: {border: '#000000', background: '#ffffff'}}, size: 150, 'label': '156 JUMPDEST\n157 PUSH2 0x0400\n160 PUSH1 0x04\n162 DUP3\n163 MUL\n164 GT\n(click to expand +)', 'fullLabel': '156 JUMPDEST\n157 PUSH2 0x0400\n160 PUSH1 0x04\n162 DUP3\n163 MUL\n164 GT\n165 ISZERO\n166 ISZERO\n167 ISZERO\n168 PUSH1 0xac\n170 JUMPI\n', 'truncLabel': '156 JUMPDEST\n157 PUSH2 0x0400\n160 PUSH1 0x04\n162 DUP3\n163 MUL\n164 GT\n(click to expand +)', 'isExpanded': false},
+{id: '7', color: {border: '#000000', background: '#ffffff', highlight: {border: '#000000', background: '#ffffff'}}, size: 150, 'label': '172 JUMPDEST\n173 POP\n174 JUMP\n', 'fullLabel': '172 JUMPDEST\n173 POP\n174 JUMP\n', 'truncLabel': '172 JUMPDEST\n173 POP\n174 JUMP\n', 'isExpanded': false},
+{id: '8', color: {border: '#000000', background: '#ffffff', highlight: {border: '#000000', background: '#ffffff'}}, size: 150, 'label': '108 JUMPDEST\n109 STOP\n', 'fullLabel': '108 JUMPDEST\n109 STOP\n', 'truncLabel': '108 JUMPDEST\n109 STOP\n', 'isExpanded': false},
+{id: '9', color: {border: '#000000', background: '#ffffff', highlight: {border: '#000000', background: '#ffffff'}}, size: 150, 'label': '171 ASSERT_FAIL\n', 'fullLabel': '171 ASSERT_FAIL\n', 'truncLabel': '171 ASSERT_FAIL\n', 'isExpanded': false},
+{id: '10', color: {border: '#000000', background: '#ffffff', highlight: {border: '#000000', background: '#ffffff'}}, size: 150, 'label': '152 PUSH1 0x00\n154 DUP1\n155 REVERT\n', 'fullLabel': '152 PUSH1 0x00\n154 DUP1\n155 REVERT\n', 'truncLabel': '152 PUSH1 0x00\n154 DUP1\n155 REVERT\n', 'isExpanded': false},
+{id: '11', color: {border: '#000000', background: '#ffffff', highlight: {border: '#000000', background: '#ffffff'}}, size: 150, 'label': '84 PUSH1 0x00\n86 DUP1\n87 REVERT\n', 'fullLabel': '84 PUSH1 0x00\n86 DUP1\n87 REVERT\n', 'truncLabel': '84 PUSH1 0x00\n86 DUP1\n87 REVERT\n', 'isExpanded': false},
+{id: '12', color: {border: '#000000', background: '#ffffff', highlight: {border: '#000000', background: '#ffffff'}}, size: 150, 'label': '63 DUP1\n64 PUSH4 0xe166a663\n69 EQ\n70 PUSH1 0x6e\n72 JUMPI\n', 'fullLabel': '63 DUP1\n64 PUSH4 0xe166a663\n69 EQ\n70 PUSH1 0x6e\n72 JUMPI\n', 'truncLabel': '63 DUP1\n64 PUSH4 0xe166a663\n69 EQ\n70 PUSH1 0x6e\n72 JUMPI\n', 'isExpanded': false},
+{id: '13', color: {border: '#000000', background: '#ffffff', highlight: {border: '#000000', background: '#ffffff'}}, size: 150, 'label': '110 assertion1(uint256)\n111 CALLVALUE\n112 ISZERO\n113 PUSH1 0x78\n115 JUMPI\n', 'fullLabel': '110 assertion1(uint256)\n111 CALLVALUE\n112 ISZERO\n113 PUSH1 0x78\n115 JUMPI\n', 'truncLabel': '110 assertion1(uint256)\n111 CALLVALUE\n112 ISZERO\n113 PUSH1 0x78\n115 JUMPI\n', 'isExpanded': false},
+{id: '14', color: {border: '#000000', background: '#ffffff', highlight: {border: '#000000', background: '#ffffff'}}, size: 150, 'label': '120 JUMPDEST\n121 PUSH1 0x8c\n123 PUSH1 0x04\n125 DUP1\n126 DUP1\n127 CALLDATALOAD\n(click to expand +)', 'fullLabel': '120 JUMPDEST\n121 PUSH1 0x8c\n123 PUSH1 0x04\n125 DUP1\n126 DUP1\n127 CALLDATALOAD\n128 SWAP1\n129 PUSH1 0x20\n131 ADD\n132 SWAP1\n133 SWAP2\n134 SWAP1\n135 POP\n136 POP\n137 PUSH1 0xaf\n139 JUMP\n', 'truncLabel': '120 JUMPDEST\n121 PUSH1 0x8c\n123 PUSH1 0x04\n125 DUP1\n126 DUP1\n127 CALLDATALOAD\n(click to expand +)', 'isExpanded': false},
+{id: '15', color: {border: '#000000', background: '#ffffff', highlight: {border: '#000000', background: '#ffffff'}}, size: 150, 'label': '175 JUMPDEST\n176 PUSH2 0x0400\n179 PUSH1 0x04\n181 DUP3\n182 MUL\n183 LT\n(click to expand +)', 'fullLabel': '175 JUMPDEST\n176 PUSH2 0x0400\n179 PUSH1 0x04\n181 DUP3\n182 MUL\n183 LT\n184 ISZERO\n185 ISZERO\n186 PUSH1 0xbe\n188 JUMPI\n', 'truncLabel': '175 JUMPDEST\n176 PUSH2 0x0400\n179 PUSH1 0x04\n181 DUP3\n182 MUL\n183 LT\n(click to expand +)', 'isExpanded': false},
+{id: '16', color: {border: '#000000', background: '#ffffff', highlight: {border: '#000000', background: '#ffffff'}}, size: 150, 'label': '190 JUMPDEST\n191 POP\n192 JUMP\n', 'fullLabel': '190 JUMPDEST\n191 POP\n192 JUMP\n', 'truncLabel': '190 JUMPDEST\n191 POP\n192 JUMP\n', 'isExpanded': false},
+{id: '17', color: {border: '#000000', background: '#ffffff', highlight: {border: '#000000', background: '#ffffff'}}, size: 150, 'label': '140 JUMPDEST\n141 STOP\n', 'fullLabel': '140 JUMPDEST\n141 STOP\n', 'truncLabel': '140 JUMPDEST\n141 STOP\n', 'isExpanded': false},
+{id: '18', color: {border: '#000000', background: '#ffffff', highlight: {border: '#000000', background: '#ffffff'}}, size: 150, 'label': '189 ASSERT_FAIL\n', 'fullLabel': '189 ASSERT_FAIL\n', 'truncLabel': '189 ASSERT_FAIL\n', 'isExpanded': false},
+{id: '19', color: {border: '#000000', background: '#ffffff', highlight: {border: '#000000', background: '#ffffff'}}, size: 150, 'label': '116 PUSH1 0x00\n118 DUP1\n119 REVERT\n', 'fullLabel': '116 PUSH1 0x00\n118 DUP1\n119 REVERT\n', 'truncLabel': '116 PUSH1 0x00\n118 DUP1\n119 REVERT\n', 'isExpanded': false},
+{id: '20', color: {border: '#000000', background: '#ffffff', highlight: {border: '#000000', background: '#ffffff'}}, size: 150, 'label': '73 JUMPDEST\n74 PUSH1 0x00\n76 DUP1\n77 REVERT\n', 'fullLabel': '73 JUMPDEST\n74 PUSH1 0x00\n76 DUP1\n77 REVERT\n', 'truncLabel': '73 JUMPDEST\n74 PUSH1 0x00\n76 DUP1\n77 REVERT\n', 'isExpanded': false}
+];
+var edges = [
+{from: '0', to: '1', 'arrows': 'to', 'label': 'Not(ULE(4, calldatasize_Assertions))', 'smooth': {'type': 'cubicBezier'}},
+{from: '7', to: '8', 'arrows': 'to', 'label': '', 'smooth': {'type': 'cubicBezier'}},
+{from: '6', to: '7', 'arrows': 'to', 'label': 'And(Extract(0xff, 11, 4*calldata_Assertions_4) == 0,    ULE(4*Extract(10, 0, calldata_Assertions_4), 0x400))', 'smooth': {'type': 'cubicBezier'}},
+{from: '6', to: '9', 'arrows': 'to', 'label': 'Not(And(Extract(0xff, 11, 4*calldata_Assertions_4) == 0,        ULE(4*Extract(10, 0, calldata_Assertions_4), 0x400)))', 'smooth': {'type': 'cubicBezier'}},
+{from: '5', to: '6', 'arrows': 'to', 'label': 'And(Extract(0xff, 9, calldata_Assertions_4) == 0,    ULE(Extract(8, 0, calldata_Assertions_4), 0x100))', 'smooth': {'type': 'cubicBezier'}},
+{from: '5', to: '10', 'arrows': 'to', 'label': 'Not(And(Extract(0xff, 9, calldata_Assertions_4) == 0,        ULE(Extract(8, 0, calldata_Assertions_4), 0x100)))', 'smooth': {'type': 'cubicBezier'}},
+{from: '4', to: '5', 'arrows': 'to', 'label': '', 'smooth': {'type': 'cubicBezier'}},
+{from: '3', to: '4', 'arrows': 'to', 'label': 'callvalue == 0', 'smooth': {'type': 'cubicBezier'}},
+{from: '3', to: '11', 'arrows': 'to', 'label': 'Not(callvalue == 0)', 'smooth': {'type': 'cubicBezier'}},
+{from: '2', to: '3', 'arrows': 'to', 'label': 'Extract(0xff, 0xe0, calldata_Assertions_0) == 0x59ce2f44', 'smooth': {'type': 'cubicBezier'}},
+{from: '16', to: '17', 'arrows': 'to', 'label': '', 'smooth': {'type': 'cubicBezier'}},
+{from: '15', to: '16', 'arrows': 'to', 'label': 'Not(ULE(0x400, 4*calldata_Assertions_4))', 'smooth': {'type': 'cubicBezier'}},
+{from: '15', to: '18', 'arrows': 'to', 'label': 'ULE(0x400, 4*calldata_Assertions_4)', 'smooth': {'type': 'cubicBezier'}},
+{from: '14', to: '15', 'arrows': 'to', 'label': '', 'smooth': {'type': 'cubicBezier'}},
+{from: '13', to: '14', 'arrows': 'to', 'label': 'callvalue == 0', 'smooth': {'type': 'cubicBezier'}},
+{from: '13', to: '19', 'arrows': 'to', 'label': 'Not(callvalue == 0)', 'smooth': {'type': 'cubicBezier'}},
+{from: '12', to: '13', 'arrows': 'to', 'label': 'Extract(0xff, 0xe0, calldata_Assertions_0) == 0xe166a663', 'smooth': {'type': 'cubicBezier'}},
+{from: '12', to: '20', 'arrows': 'to', 'label': 'Not(Extract(0xff, 0xe0, calldata_Assertions_0) == 0xe166a663)', 'smooth': {'type': 'cubicBezier'}},
+{from: '2', to: '12', 'arrows': 'to', 'label': 'Not(Extract(0xff, 0xe0, calldata_Assertions_0) == 0x59ce2f44)', 'smooth': {'type': 'cubicBezier'}},
+{from: '0', to: '2', 'arrows': 'to', 'label': 'ULE(4, calldatasize_Assertions)', 'smooth': {'type': 'cubicBezier'}}
+];
+
+  </script>
+ </head>
+<body>
+<p>Mythril / LASER Symbolic VM</p>
+<p><div id="mynetwork"></div><br/></p>
+<script type="text/javascript">
+var container = document.getElementById('mynetwork');
+
+var nodesSet = new vis.DataSet(nodes);
+var edgesSet = new vis.DataSet(edges);
+var data = {'nodes': nodesSet, 'edges': edgesSet}
+
+var gph = new vis.Network(container, data, options);
+gph.on("click", function (params) {
+  // parse node id
+  var nodeID = params['nodes']['0'];
+  if (nodeID) {
+    var clickedNode = nodesSet.get(nodeID);
+
+    if(clickedNode.isExpanded) {
+      clickedNode.label = clickedNode.truncLabel;
+    }
+    else {
+      clickedNode.label = clickedNode.fullLabel;
+    }
+
+    clickedNode.isExpanded = !clickedNode.isExpanded;
+
+    nodesSet.update(clickedNode);
+  }
+});
+</script>
+</body>
+</html>
diff --git a/static/callgraph7.png b/static/callgraph7.png
new file mode 100644
index 0000000000000000000000000000000000000000..b1cad7982364adb8b3704583979c84ec47e1eb6d
Binary files /dev/null and b/static/callgraph7.png differ
diff --git a/static/callgraph8.png b/static/callgraph8.png
new file mode 100644
index 0000000000000000000000000000000000000000..ae888524ce95215c03b89747bbebae97e1b93ce9
Binary files /dev/null and b/static/callgraph8.png differ
diff --git a/static/mythril.html b/static/mythril.html
new file mode 100644
index 0000000000000000000000000000000000000000..925fe6dacb25a29f71d246be8bacbfbe5587abde
--- /dev/null
+++ b/static/mythril.html
@@ -0,0 +1,141 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <title>Call Graph</title>
+  <style type="text/css">
+   #mynetwork {
+    background-color: #232625;
+   }
+
+   body {
+    background-color: #232625;
+    color: #ffffff;
+   }
+  </style>
+  <link href="https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.css" rel="stylesheet" type="text/css" />
+  <script src="https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.js"></script>
+  <script>
+
+    var options = {
+      autoResize: true,
+      height: '100%',
+      width: '100%',
+      manipulation: false,
+      height: '90%',
+      layout: {
+        randomSeed: undefined,
+        improvedLayout:true,
+        hierarchical: {
+          enabled:true,
+          levelSeparation: 450,
+          nodeSpacing: 200,
+          treeSpacing: 100,
+          blockShifting: true,
+          edgeMinimization: true,
+          parentCentralization: false,
+          direction: 'LR',        // UD, DU, LR, RL
+          sortMethod: 'directed'   // hubsize, directed
+        }
+      },
+      nodes:{
+        borderWidth: 1,
+        borderWidthSelected: 2,
+        chosen: true,
+        shape: 'box',
+        font: {
+          align: 'left',
+          color: '#FFFFFF',
+        },
+        color: {
+          border: '#26996f',
+          background: '#1f7e5b',
+          highlight: {
+            border: '#26996f',
+            background: '#28a16f'
+          }  
+        }
+      },
+      edges:{
+        font: {
+          color: '#ffffff',
+          size: 12, // px
+          face: 'arial',
+          background: 'none',
+          strokeWidth: 0, // px
+          strokeColor: '#ffffff',
+          align: 'horizontal',
+          multi: false,
+          vadjust: 0,
+        }
+      },
+
+      physics:{
+        enabled: false,
+      }   
+    
+  }
+
+  var nodes = [
+{id: 256, size: 150, 'label': '256 JUMPDEST\n257 PUSH1 0x40\n259 MLOAD\n260 DUP1\n261 DUP3\n262 DUP2\n263 MSTORE\n264 PUSH1 0x20\n266 ADD\n267 SWAP2\n268 POP\n269 POP\n270 PUSH1 0x40\n272 MLOAD\n273 DUP1\n274 SWAP2\n275 SUB\n276 SWAP1\n277 RETURN\n'},
+{id: 0, size: 150, 'label': '0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n9 PUSH2 0x006d\n12 JUMPI\n13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x01000000(...)\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n53 AND\n54 DUP1\n55 PUSH4 0x1803334e\n60 EQ\n61 PUSH2 0x0072\n64 JUMPI\n65 DUP1\n66 PUSH4 0x2e1a7d4d\n71 EQ\n72 PUSH2 0x0087\n75 JUMPI\n76 DUP1\n77 PUSH4 0x41c0e1b5\n82 EQ\n83 PUSH2 0x00aa\n86 JUMPI\n87 DUP1\n88 PUSH4 0x69774c2d\n93 EQ\n94 PUSH2 0x00bf\n97 JUMPI\n98 DUP1\n99 PUSH4 0xf8b2cb4f\n104 EQ\n105 PUSH2 0x00c9\n108 JUMPI\n109 JUMPDEST\n110 PUSH1 0x00\n112 DUP1\n113 REVERT\n'},
+{id: 770, size: 150, 'label': '770 JUMPDEST\n771 PUSH1 0x00\n773 DUP1\n774 PUSH1 0x00\n776 DUP4\n777 PUSH20 0xffffffff(...)\n798 AND\n799 PUSH20 0xffffffff(...)\n820 AND\n821 DUP2\n822 MSTORE\n823 PUSH1 0x20\n825 ADD\n826 SWAP1\n827 DUP2\n828 MSTORE\n829 PUSH1 0x20\n831 ADD\n832 PUSH1 0x00\n834 SHA3\n835 SLOAD\n836 SWAP1\n837 POP\n838 SWAP2\n839 SWAP1\n840 POP\n841 JUMP\n'},
+{id: 133, size: 150, 'label': '133 JUMPDEST\n134 STOP\n'},
+{id: 135, size: 150, 'label': '135 withdraw(uint256)\n136 CALLVALUE\n137 ISZERO\n138 PUSH2 0x0092\n141 JUMPI\n142 PUSH1 0x00\n144 DUP1\n145 REVERT\n'},
+{id: 201, size: 150, 'label': '201 getBalance(address)\n202 CALLVALUE\n203 ISZERO\n204 PUSH2 0x00d4\n207 JUMPI\n208 PUSH1 0x00\n210 DUP1\n211 REVERT\n'},
+{id: 653, size: 150, 'label': '653 JUMPDEST\n654 CALLER\n655 PUSH20 0xffffffff(...)\n676 AND\n677 SUICIDE\n'},
+{id: 146, size: 150, 'label': '146 JUMPDEST\n147 PUSH2 0x00a8\n150 PUSH1 0x04\n152 DUP1\n153 DUP1\n154 CALLDATALOAD\n155 SWAP1\n156 PUSH1 0x20\n158 ADD\n159 SWAP1\n160 SWAP2\n161 SWAP1\n162 POP\n163 POP\n164 PUSH2 0x0159\n167 JUMP\n'},
+{id: 212, size: 150, 'label': '212 JUMPDEST\n213 PUSH2 0x0100\n216 PUSH1 0x04\n218 DUP1\n219 DUP1\n220 CALLDATALOAD\n221 PUSH20 0xffffffff(...)\n242 AND\n243 SWAP1\n244 PUSH1 0x20\n246 ADD\n247 SWAP1\n248 SWAP2\n249 SWAP1\n250 POP\n251 POP\n252 PUSH2 0x0302\n255 JUMP\n'},
+{id: 278, size: 150, 'label': '278 JUMPDEST\n279 CALLER\n280 PUSH1 0x01\n282 PUSH1 0x00\n284 PUSH2 0x0100\n287 EXP\n288 DUP2\n289 SLOAD\n290 DUP2\n291 PUSH20 0xffffffff(...)\n312 MUL\n313 NOT\n314 AND\n315 SWAP1\n316 DUP4\n317 PUSH20 0xffffffff(...)\n338 AND\n339 MUL\n340 OR\n341 SWAP1\n342 SSTORE\n343 POP\n344 JUMP\n'},
+{id: 345, size: 150, 'label': '345 JUMPDEST\n346 PUSH1 0x00\n348 DUP1\n349 PUSH1 0x00\n351 CALLER\n352 PUSH20 0xffffffff(...)\n373 AND\n374 PUSH20 0xffffffff(...)\n395 AND\n396 DUP2\n397 MSTORE\n398 PUSH1 0x20\n400 ADD\n401 SWAP1\n402 DUP2\n403 MSTORE\n404 PUSH1 0x20\n406 ADD\n407 PUSH1 0x00\n409 SHA3\n410 SLOAD\n411 EQ\n412 ISZERO\n413 PUSH2 0x01a5\n416 JUMPI\n417 PUSH1 0x00\n419 DUP1\n420 REVERT\n'},
+{id: 421, size: 150, 'label': '421 JUMPDEST\n422 DUP1\n423 PUSH1 0x00\n425 DUP1\n426 CALLER\n427 PUSH20 0xffffffff(...)\n448 AND\n449 PUSH20 0xffffffff(...)\n470 AND\n471 DUP2\n472 MSTORE\n473 PUSH1 0x20\n475 ADD\n476 SWAP1\n477 DUP2\n478 MSTORE\n479 PUSH1 0x20\n481 ADD\n482 PUSH1 0x00\n484 SHA3\n485 PUSH1 0x00\n487 DUP3\n488 DUP3\n489 SLOAD\n490 SUB\n491 SWAP3\n492 POP\n493 POP\n494 DUP2\n495 SWAP1\n496 SSTORE\n497 POP\n498 CALLER\n499 PUSH20 0xffffffff(...)\n520 AND\n521 PUSH2 0x08fc\n524 DUP3\n525 SWAP1\n526 DUP2\n527 ISZERO\n528 MUL\n529 SWAP1\n530 PUSH1 0x40\n532 MLOAD\n533 PUSH1 0x00\n535 PUSH1 0x40\n537 MLOAD\n538 DUP1\n539 DUP4\n540 SUB\n541 DUP2\n542 DUP6\n543 DUP9\n544 DUP9\n545 CALL\n546 SWAP4\n547 POP\n548 POP\n549 POP\n550 POP\n551 ISZERO\n552 ISZERO\n553 PUSH2 0x0231\n556 JUMPI\n557 PUSH1 0x00\n559 DUP1\n560 REVERT\n'},
+{id: 678, size: 150, 'label': '678 JUMPDEST\n679 PUSH1 0x00\n681 CALLVALUE\n682 EQ\n683 ISZERO\n684 PUSH2 0x02b4\n687 JUMPI\n688 PUSH1 0x00\n690 DUP1\n691 REVERT\n'},
+{id: 168, size: 150, 'label': '168 JUMPDEST\n169 STOP\n'},
+{id: 170, size: 150, 'label': '170 kill()\n171 CALLVALUE\n172 ISZERO\n173 PUSH2 0x00b5\n176 JUMPI\n177 PUSH1 0x00\n179 DUP1\n180 REVERT\n'},
+{id: 199, size: 150, 'label': '199 JUMPDEST\n200 STOP\n'},
+{id: 109, size: 150, 'label': '109 JUMPDEST\n110 PUSH1 0x00\n112 DUP1\n113 REVERT\n'},
+{id: 561, size: 150, 'label': '561 JUMPDEST\n562 POP\n563 JUMP\n'},
+{id: 114, size: 150, 'label': '114 _function_0x1803334e\n115 CALLVALUE\n116 ISZERO\n117 PUSH2 0x007d\n120 JUMPI\n121 PUSH1 0x00\n123 DUP1\n124 REVERT\n'},
+{id: 692, size: 150, 'label': '692 JUMPDEST\n693 CALLVALUE\n694 PUSH1 0x00\n696 DUP1\n697 CALLER\n698 PUSH20 0xffffffff(...)\n719 AND\n720 PUSH20 0xffffffff(...)\n741 AND\n742 DUP2\n743 MSTORE\n744 PUSH1 0x20\n746 ADD\n747 SWAP1\n748 DUP2\n749 MSTORE\n750 PUSH1 0x20\n752 ADD\n753 PUSH1 0x00\n755 SHA3\n756 PUSH1 0x00\n758 DUP3\n759 DUP3\n760 SLOAD\n761 ADD\n762 SWAP3\n763 POP\n764 POP\n765 DUP2\n766 SWAP1\n767 SSTORE\n768 POP\n769 JUMP\n'},
+{id: 181, size: 150, 'label': '181 JUMPDEST\n182 PUSH2 0x00bd\n185 PUSH2 0x0234\n188 JUMP\n'},
+{id: 564, size: 150, 'label': '564 JUMPDEST\n565 PUSH1 0x01\n567 PUSH1 0x00\n569 SWAP1\n570 SLOAD\n571 SWAP1\n572 PUSH2 0x0100\n575 EXP\n576 SWAP1\n577 DIV\n578 PUSH20 0xffffffff(...)\n599 AND\n600 PUSH20 0xffffffff(...)\n621 AND\n622 CALLER\n623 PUSH20 0xffffffff(...)\n644 AND\n645 EQ\n646 ISZERO\n647 ISZERO\n648 PUSH2 0x028d\n651 JUMPI\n652 INVALID\n'},
+{id: 125, size: 150, 'label': '125 JUMPDEST\n126 PUSH2 0x0085\n129 PUSH2 0x0116\n132 JUMP\n'},
+{id: 191, size: 150, 'label': '191 _function_0x69774c2d\n192 PUSH2 0x00c7\n195 PUSH2 0x02a6\n198 JUMP\n'}
+];
+var edges = [
+{from: 0, to: 109, 'arrows': 'to', 'label': 'Not(ULE(4, calldatasize))', 'smooth': {'type': 'cubicBezier'}},
+{from: 278, to: 133, 'arrows': 'to', 'label': '', 'smooth': {'type': 'cubicBezier'}},
+{from: 125, to: 278, 'arrows': 'to', 'label': '', 'smooth': {'type': 'cubicBezier'}},
+{from: 114, to: 125, 'arrows': 'to', 'label': 'callvalue == 0', 'smooth': {'type': 'cubicBezier'}},
+{from: 0, to: 114, 'arrows': 'to', 'label': 'Extract(0xff, 0xe0, calldata_0) == 0x1803334e', 'smooth': {'type': 'cubicBezier'}},
+{from: 561, to: 168, 'arrows': 'to', 'label': '', 'smooth': {'type': 'cubicBezier'}},
+{from: 421, to: 561, 'arrows': 'to', 'label': 'Not(retval_546_333 == 0)', 'smooth': {'type': 'cubicBezier'}},
+{from: 345, to: 421, 'arrows': 'to', 'label': 'Not(storage_98ea2e05 == 0)', 'smooth': {'type': 'cubicBezier'}},
+{from: 146, to: 345, 'arrows': 'to', 'label': '', 'smooth': {'type': 'cubicBezier'}},
+{from: 135, to: 146, 'arrows': 'to', 'label': 'callvalue == 0', 'smooth': {'type': 'cubicBezier'}},
+{from: 0, to: 135, 'arrows': 'to', 'label': 'Extract(0xff, 0xe0, calldata_0) == 0x2e1a7d4d', 'smooth': {'type': 'cubicBezier'}},
+{from: 564, to: 653, 'arrows': 'to', 'label': 'Extract(0x9f, 0, caller) == Extract(0xa7, 8, storage_1)', 'smooth': {'type': 'cubicBezier'}},
+{from: 181, to: 564, 'arrows': 'to', 'label': '', 'smooth': {'type': 'cubicBezier'}},
+{from: 170, to: 181, 'arrows': 'to', 'label': 'callvalue == 0', 'smooth': {'type': 'cubicBezier'}},
+{from: 0, to: 170, 'arrows': 'to', 'label': 'Extract(0xff, 0xe0, calldata_0) == 0x41c0e1b5', 'smooth': {'type': 'cubicBezier'}},
+{from: 692, to: 199, 'arrows': 'to', 'label': '', 'smooth': {'type': 'cubicBezier'}},
+{from: 678, to: 692, 'arrows': 'to', 'label': 'Not(callvalue == 0)', 'smooth': {'type': 'cubicBezier'}},
+{from: 191, to: 678, 'arrows': 'to', 'label': '', 'smooth': {'type': 'cubicBezier'}},
+{from: 0, to: 191, 'arrows': 'to', 'label': 'Extract(0xff, 0xe0, calldata_0) == 0x69774c2d', 'smooth': {'type': 'cubicBezier'}},
+{from: 770, to: 256, 'arrows': 'to', 'label': '', 'smooth': {'type': 'cubicBezier'}},
+{from: 212, to: 770, 'arrows': 'to', 'label': '', 'smooth': {'type': 'cubicBezier'}},
+{from: 201, to: 212, 'arrows': 'to', 'label': 'callvalue == 0', 'smooth': {'type': 'cubicBezier'}},
+{from: 0, to: 201, 'arrows': 'to', 'label': 'Extract(0xff, 0xe0, calldata_0) == 0xf8b2cb4f', 'smooth': {'type': 'cubicBezier'}}
+];
+
+  </script>
+ </head>
+<body>
+<p>Mythril / Ethereum LASER Symbolic VM</p>
+<p><div id="mynetwork"></div><br /></p>
+<script type="text/javascript">
+var container = document.getElementById('mynetwork');
+var data = {'nodes': nodes, 'edges': edges}
+var gph = new vis.Network(container, data, options);
+</script>
+</body>
+</html>
diff --git a/static/mythril_new.png b/static/mythril_new.png
new file mode 100644
index 0000000000000000000000000000000000000000..ecdd7ae92d7e88f5a52dc2a652d71034cd5f9b54
Binary files /dev/null and b/static/mythril_new.png differ
diff --git a/static/sample_report.md b/static/sample_report.md
new file mode 100644
index 0000000000000000000000000000000000000000..2e434667e4259e69689bde93887ed41597c6c69c
--- /dev/null
+++ b/static/sample_report.md
@@ -0,0 +1,109 @@
+# Analysis Results
+## Ether send
+- Type: Warning
+- Contract: Crowdfunding
+- Function name: withdrawfunds()
+- PC address: 816
+
+### Description
+In the function `withdrawfunds()` a non-zero amount of Ether is sent to msg.sender.
+Call value is balance_at_1461501637330902918203684832716283019655932542975 & address.
+
+There is a check on storage index 7. This storage slot can be written to by calling the function `crowdfunding()`.
+
+In *ether_send.sol:*
+
+```
+msg.sender.transfer(this.balance)
+```
+## Use of tx.origin
+- Type: Warning
+- Contract: Origin
+- Function name: transferOwnership(address)
+- PC address: 317
+
+### Description
+Function transferOwnership(address) retrieves the transaction origin (tx.origin) using the ORIGIN opcode. Use tx.sender instead.
+See also: https://solidity.readthedocs.io/en/develop/security-considerations.html#tx-origin
+
+In *origin.sol:*
+
+```
+tx.origin
+```
+## CALL with gas to dynamic address
+- Type: Warning
+- Contract: Reentrancy
+- Function name: withdraw(uint256)
+- PC address: 552
+
+### Description
+The function withdraw(uint256) contains a function call to the address of the transaction sender. The available gas is forwarded to the called contract. Make sure that the logic of the calling contract is not adversely affected if the called contract misbehaves (e.g. reentrancy).
+
+In *reentrancy.sol:*
+
+```
+msg.sender.call.value(_amount)()
+```
+## Unchecked CALL return value
+- Type: Informational
+- Contract: Reentrancy
+- Function name: withdraw(uint256)
+- PC address: 552
+
+### Description
+The function withdraw(uint256) contains a call to msg.sender.
+The return value of this call is not checked. Note that the function will continue to execute with a return value of '0' if the called contract throws.
+
+In *reentrancy.sol:*
+
+```
+msg.sender.call.value(_amount)()
+```
+## Integer Underflow
+- Type: Warning
+- Contract: Under
+- Function name: sendeth(address,uint256)
+- PC address: 649
+
+### Description
+A possible integer underflow exists in the function `sendeth(address,uint256)`.
+The SUB instruction at address 649 may result in a value < 0.
+
+In *underflow.sol:*
+
+```
+balances[msg.sender] -= _value
+```
+## Integer Underflow
+- Type: Warning
+- Contract: Under
+- Function name: sendeth(address,uint256)
+- PC address: 567
+
+### Description
+A possible integer underflow exists in the function `sendeth(address,uint256)`.
+The SUB instruction at address 567 may result in a value < 0.
+
+In *underflow.sol:*
+
+```
+balances[msg.sender] - _value
+```
+## Weak random
+- Type: Warning
+- Contract: WeakRandom
+- Function name: _function_0xe9874106
+- PC address: 1285
+
+### Description
+In the function `_function_0xe9874106` the following predictable state variables are used to determine Ether recipient:
+- block.coinbase
+
+
+In *weak_random.sol:*
+
+```
+winningAddress.transfer(prize)
+```
+
diff --git a/tests/__init__.py b/tests/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..02403427e0d37ce5cae2425ed8e3733f676cbc64
--- /dev/null
+++ b/tests/__init__.py
@@ -0,0 +1,53 @@
+from pathlib import Path
+from unittest import TestCase
+import os
+import shutil
+
+TESTS_DIR = Path(__file__).parent
+PROJECT_DIR = TESTS_DIR.parent
+TESTDATA = TESTS_DIR / "testdata"
+TESTDATA_INPUTS = TESTDATA / "inputs"
+TESTDATA_INPUTS_CONTRACTS = TESTDATA / "input_contracts"
+TESTDATA_OUTPUTS_EXPECTED = TESTDATA / "outputs_expected"
+TESTDATA_OUTPUTS_CURRENT = TESTDATA / "outputs_current"
+TESTDATA_OUTPUTS_CURRENT_LASER_RESULT = TESTDATA / "outputs_current_laser_result"
+TESTDATA_OUTPUTS_EXPECTED_LASER_RESULT = TESTDATA / "outputs_expected_laser_result"
+MYTHRIL_DIR = TESTS_DIR / "mythril_dir"
+
+TESTDATA_OUTPUTS_CURRENT.mkdir(exist_ok=True)
+TESTDATA_OUTPUTS_CURRENT_LASER_RESULT.mkdir(exist_ok=True)
+
+
+class BaseTestCase(TestCase):
+    def setUp(self):
+        """"""
+        self.changed_files = []
+
+    def compare_files_error_message(self):
+        """
+
+        :return:
+        """
+        message = "Following output files are changed, compare them manually to see differences: \n"
+
+        for (input_file, expected, current) in self.changed_files:
+            message += "{}:\n".format(input_file.name)
+            message += "- {}\n".format(str(expected))
+            message += "- {}\n".format(str(current))
+
+        return message
+
+    def found_changed_files(self, input_file, output_expected, output_current):
+        """
+
+        :param input_file:
+        :param output_expected:
+        :param output_current:
+        """
+        self.changed_files.append((input_file, output_expected, output_current))
+
+    def assert_and_show_changed_files(self):
+        """"""
+        self.assertEqual(
+            0, len(self.changed_files), msg=self.compare_files_error_message()
+        )
diff --git a/tests/analysis/abi_decode_test.py b/tests/analysis/abi_decode_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..3293322573fe89ff9dc76c6b9cad43b029061d9a
--- /dev/null
+++ b/tests/analysis/abi_decode_test.py
@@ -0,0 +1,56 @@
+import pytest
+
+from mythril.analysis.report import Issue
+from mythril.disassembler.disassembly import Disassembly
+from mythril.laser.ethereum.state.environment import Environment
+from mythril.laser.ethereum.state.account import Account
+from mythril.laser.ethereum.state.machine_state import MachineState
+from mythril.laser.ethereum.state.global_state import GlobalState
+from mythril.laser.ethereum.state.world_state import WorldState
+from mythril.laser.ethereum.instructions import Instruction
+from mythril.laser.ethereum.transaction.transaction_models import MessageCallTransaction
+from mythril.laser.smt import symbol_factory, simplify, LShR
+
+
+test_data = (
+    (
+        "0xa9059cbb000000000000000000000000010801010101010120020101020401010408040402",
+        "func(uint256,uint256)",
+        (
+            5887484186314823854737699484601117092168074244,
+            904625697166532776746648320380374280103671755200316906558262375061821325312,
+        ),
+    ),
+    (
+        "0xa9059cbb00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002",
+        "func(uint256,uint256)",
+        (2, 2),
+    ),
+    (
+        "0xa0cce1b3000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000",
+        "func(bytes32,(bytes32,bytes32,uint8,uint8)[],(address[],uint32))",
+        (
+            b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02",
+            (
+                (
+                    b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
+                    b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90",
+                    0,
+                    0,
+                ),
+                (
+                    b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00P\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
+                    b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
+                    1,
+                    0,
+                ),
+            ),
+            (("0x0000000000000000000000000000000000000000",), 0),
+        ),
+    ),
+)
+
+
+@pytest.mark.parametrize("call_data, signature, expected", test_data)
+def test_abi_decode(call_data, signature, expected):
+    assert Issue.resolve_input(call_data, signature) == expected
diff --git a/tests/analysis/arbitrary_jump_test.py b/tests/analysis/arbitrary_jump_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..e1ff0fd74bb268c20895eb9c1506485967933976
--- /dev/null
+++ b/tests/analysis/arbitrary_jump_test.py
@@ -0,0 +1,98 @@
+import pytest
+from mock import patch
+
+from mythril.disassembler.disassembly import Disassembly
+from mythril.laser.smt import symbol_factory, BitVec
+from mythril.laser.ethereum.state.environment import Environment
+from mythril.laser.ethereum.state.account import Account
+from mythril.laser.ethereum.state.machine_state import MachineState
+from mythril.laser.ethereum.state.constraints import Constraints
+from mythril.laser.ethereum.state.global_state import GlobalState
+from mythril.laser.ethereum.state.world_state import WorldState
+from mythril.laser.ethereum.instructions import Instruction
+from mythril.laser.ethereum.transaction.symbolic import ACTORS
+from mythril.laser.ethereum.transaction.transaction_models import MessageCallTransaction
+from mythril.laser.ethereum.call import SymbolicCalldata
+from mythril.laser.ethereum.transaction import TransactionStartSignal
+from mythril.analysis.module.modules.arbitrary_jump import (
+    is_unique_jumpdest,
+    ArbitraryJump,
+)
+from mythril.laser.ethereum.time_handler import time_handler
+
+
+def get_global_state(constraints):
+    """Constructs an arbitrary global state
+
+    Args:
+        constraints (List[BitVec]): Constraints list for the global state
+
+    Returns:
+        [GlobalState]: An arbitrary global state
+    """
+    active_account = Account("0x0", code=Disassembly("60606040"))
+    environment = Environment(
+        active_account, None, SymbolicCalldata("2"), None, None, None, None
+    )
+    world_state = WorldState()
+    world_state.put_account(active_account)
+    state = GlobalState(world_state, environment, None, MachineState(gas_limit=8000000))
+    state.world_state.transaction_sequence = [
+        MessageCallTransaction(
+            world_state=world_state,
+            gas_limit=8000000,
+            init_call_data=True,
+            call_value=symbol_factory.BitVecSym("call_value", 256),
+            caller=ACTORS.attacker,
+            callee_account=active_account,
+        )
+    ]
+    state.transaction_stack.append(
+        (
+            MessageCallTransaction(
+                world_state=world_state, gas_limit=8000000, init_call_data=True
+            ),
+            None,
+        )
+    )
+    state.mstate.stack = [symbol_factory.BitVecSym("jump_dest", 256)]
+
+    state.world_state.constraints = Constraints(constraints)
+    return state
+
+
+test_data = (
+    (
+        get_global_state([symbol_factory.BitVecSym("jump_dest", 256) == 222]),
+        True,
+    ),
+    (
+        get_global_state([symbol_factory.BitVecSym("jump_dest", 256) > 222]),
+        False,
+    ),
+)
+
+
+@pytest.mark.parametrize("global_state, unique", test_data)
+def test_unique_jumpdest(global_state, unique):
+    time_handler.start_execution(10)
+    assert is_unique_jumpdest(global_state.mstate.stack[-1], global_state) == unique
+
+
+test_data = (
+    (
+        get_global_state([symbol_factory.BitVecSym("jump_dest", 256) == 222]),
+        False,
+    ),
+    (
+        get_global_state([symbol_factory.BitVecSym("jump_dest", 256) > 222]),
+        True,
+    ),
+)
+
+
+@pytest.mark.parametrize("global_state, has_issue", test_data)
+def test_module(global_state, has_issue):
+    time_handler.start_execution(10)
+    module = ArbitraryJump()
+    assert (len(module._analyze_state(global_state)) > 0) == has_issue
diff --git a/tests/cli_tests/cli_opts_test.py b/tests/cli_tests/cli_opts_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..1985e45ee81d80e4f155634693a46e40201e0702
--- /dev/null
+++ b/tests/cli_tests/cli_opts_test.py
@@ -0,0 +1,26 @@
+from mythril.interfaces.cli import main
+import pytest
+import json
+
+import sys
+
+
+def test_version_opt(capsys):
+    # Check that "myth --version" returns a string with the word
+    # "version" in it
+    sys.argv = ["mythril", "version"]
+    with pytest.raises(SystemExit) as pytest_wrapped_e:
+        main()
+    assert pytest_wrapped_e.type == SystemExit
+    captured = capsys.readouterr()
+    assert captured.out.find(" version ") >= 1
+
+    # Check that "myth --version -o json" returns a JSON object
+    sys.argv = ["mythril", "version", "-o", "json"]
+    with pytest.raises(SystemExit) as pytest_wrapped_e:
+        main()
+    assert pytest_wrapped_e.type == SystemExit
+    captured = capsys.readouterr()
+    d = json.loads(captured.out)
+    assert isinstance(d, dict)
+    assert d["version_str"]
diff --git a/tests/cmd_line_test.py b/tests/cmd_line_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..40fb2643188b29bc9726206117c745948d2fb118
--- /dev/null
+++ b/tests/cmd_line_test.py
@@ -0,0 +1,115 @@
+from subprocess import check_output, CalledProcessError, STDOUT
+from tests import BaseTestCase, TESTDATA, PROJECT_DIR, TESTS_DIR
+from mock import patch
+
+MYTH = str(PROJECT_DIR / "myth")
+
+
+def output_of(command):
+    """
+
+    :param command:
+    :return:
+    """
+    try:
+        return check_output(command, shell=True).decode("UTF-8")
+    except CalledProcessError as exc:
+        return exc.output.decode("UTF-8")
+
+
+def total_output(command):
+    try:
+        return check_output(command, shell=True, stderr=STDOUT).decode("UTF-8")
+    except CalledProcessError as exc:
+        return exc.output.decode("UTF-8")
+
+
+class CommandLineToolTestCase(BaseTestCase):
+    def test_disassemble_code_correctly(self):
+        command = "python3 {} disassemble --bin-runtime -c 0x5050".format(MYTH)
+        self.assertIn("0 POP\n1 POP\n", output_of(command))
+
+    def test_disassemble_solidity_file_correctly(self):
+        solidity_file = str(TESTDATA / "input_contracts" / "metacoin.sol")
+        command = "python3 {} disassemble {} --solv 0.5.0".format(MYTH, solidity_file)
+        self.assertIn("2 PUSH1 0x40\n4 MSTORE", output_of(command))
+
+    def test_hash_a_function_correctly(self):
+        command = "python3 {} function-to-hash 'setOwner(address)'".format(MYTH)
+        self.assertIn("0x13af4035\n", output_of(command))
+
+    def test_failure_json(self):
+        command = "python3 {} analyze doesnt_exist.sol -o json".format(MYTH)
+        print(output_of(command))
+        self.assertIn(""""success": false""", output_of(command))
+
+    def test_failure_text(self):
+        command = "python3 {} analyze doesnt_exist.sol".format(MYTH)
+        assert output_of(command) == ""
+
+    def test_failure_jsonv2(self):
+        command = "python3 {} analyze doesnt_exist.sol -o jsonv2".format(MYTH)
+        self.assertIn(""""level": "error""" "", output_of(command))
+
+    def test_analyze(self):
+        solidity_file = str(TESTDATA / "input_contracts" / "origin.sol")
+        command = "python3 {} analyze {} --solv 0.5.0".format(MYTH, solidity_file)
+        self.assertIn("115", output_of(command))
+
+    def test_analyze_bytecode(self):
+        solidity_file = str(TESTDATA / "inputs" / "origin.sol.o")
+        command = "python3 {} analyze --bin-runtime -f {}".format(MYTH, solidity_file)
+        self.assertIn("115", output_of(command))
+
+    def test_invalid_args_iprof(self):
+        solidity_file = str(TESTDATA / "input_contracts" / "origin.sol")
+        command = "python3 {} analyze {} --enable-iprof -o json".format(
+            MYTH, solidity_file
+        )
+        self.assertIn("""unrecognized arguments""", total_output(command))
+
+    def test_only_epic(self):
+        command = "python3 {} --epic".format(MYTH)
+        # Just check for crashes
+        output_of(command)
+
+    ''''
+    def test_storage(self):
+        command = """python3 {} read-storage "438767356, 3" 0x76799f77587738bfeef09452df215b63d2cfb08a """.format(
+            MYTH
+        )
+        self.assertIn("0x1a270efc", output_of(command))
+    '''
+
+
+"""
+class InfuraTestCase(BaseTestCase):
+    def test_infura_mainnet(self):
+        command = "python3 {} disassemble --rpc infura-mainnet  -a 0x2a0c0dbecc7e4d658f48e01e3fa353f44050c208".format(
+            MYTH
+        )
+        output = output_of(command)
+        self.assertIn("0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE", output)
+        self.assertIn("7278 POP\n7279 POP\n7280 JUMP\n7281 STOP", output)
+
+    def test_infura_rinkeby(self):
+        command = "python3 {} disassemble --rpc infura-rinkeby -a 0xB6f2bFED892a662bBF26258ceDD443f50Fa307F5".format(
+            MYTH
+        )
+        output = output_of(command)
+        self.assertIn("34 JUMPDEST\n35 CALLVALUE", output)
+
+    def test_infura_kovan(self):
+        command = "python3 {} disassemble --rpc infura-kovan -a 0xE6bBF9B5A3451242F82f8cd458675092617a1235".format(
+            MYTH
+        )
+        output = output_of(command)
+        self.assertIn("9999 PUSH1 0x00\n10001 NOT\n10002 AND\n10003 PUSH1 0x00", output)
+
+    def test_infura_ropsten(self):
+        command = "python3 {} disassemble --rpc infura-ropsten -a 0x6e0E0e02377Bc1d90E8a7c21f12BA385C2C35f78".format(
+            MYTH
+        )
+        output = output_of(command)
+        self.assertIn("1821 PUSH1 0x01\n1823 PUSH2 0x070c", output)
+"""
diff --git a/tests/disassembler/__init__.py b/tests/disassembler/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/tests/disassembler/asm_test.py b/tests/disassembler/asm_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..0959c5b441fadbeaa5021aa557c0bf3f67fb61da
--- /dev/null
+++ b/tests/disassembler/asm_test.py
@@ -0,0 +1,124 @@
+from mythril.disassembler.asm import *
+import pytest
+
+valid_names = [("PUSH1", 0x60), ("STOP", 0x0), ("RETURN", 0xF3)]
+
+
+@pytest.mark.parametrize("operation_name, hex_value", valid_names)
+def test_get_opcode(operation_name: str, hex_value: int):
+    # Act
+    return_value = get_opcode_from_name(operation_name)
+    # Assert
+    assert return_value == hex_value
+
+
+def test_get_unknown_opcode():
+    operation_name = "definitely unknown"
+
+    # Act
+    with pytest.raises(RuntimeError):
+        get_opcode_from_name(operation_name)
+
+
+sequence_match_test_data = [
+    # Normal no match
+    (
+        (["PUSH1"], ["EQ"]),
+        [{"opcode": "PUSH1"}, {"opcode": "PUSH3"}, {"opcode": "EQ"}],
+        1,
+        False,
+    ),
+    # Normal match
+    (
+        (["PUSH1"], ["EQ"]),
+        [{"opcode": "PUSH1"}, {"opcode": "PUSH1"}, {"opcode": "EQ"}],
+        1,
+        True,
+    ),
+    # Out of bounds pattern
+    (
+        (["PUSH1"], ["EQ"]),
+        [{"opcode": "PUSH1"}, {"opcode": "PUSH3"}, {"opcode": "EQ"}],
+        3,
+        False,
+    ),
+    (
+        (["PUSH1"], ["EQ"]),
+        [{"opcode": "PUSH1"}, {"opcode": "PUSH3"}, {"opcode": "EQ"}],
+        2,
+        False,
+    ),
+    # Double option match
+    (
+        (["PUSH1", "PUSH3"], ["EQ"]),
+        [{"opcode": "PUSH1"}, {"opcode": "PUSH1"}, {"opcode": "EQ"}],
+        1,
+        True,
+    ),
+    (
+        (["PUSH1", "PUSH3"], ["EQ"]),
+        [{"opcode": "PUSH1"}, {"opcode": "PUSH3"}, {"opcode": "EQ"}],
+        1,
+        True,
+    ),
+    # Double option no match
+    (
+        (["PUSH1", "PUSH3"], ["EQ"]),
+        [{"opcode": "PUSH1"}, {"opcode": "PUSH3"}, {"opcode": "EQ"}],
+        0,
+        False,
+    ),
+]
+
+
+@pytest.mark.parametrize(
+    "pattern, instruction_list, index,  expected_result", sequence_match_test_data
+)
+def test_is_sequence_match(pattern, instruction_list, index, expected_result):
+    # Act
+    return_value = is_sequence_match(pattern, instruction_list, index)
+    # Assert
+    assert return_value == expected_result
+
+
+find_sequence_match_test_data = [
+    # Normal no match
+    (
+        (["PUSH1"], ["EQ"]),
+        [{"opcode": "PUSH1"}, {"opcode": "PUSH3"}, {"opcode": "EQ"}],
+        [],
+    ),
+    # Normal match
+    (
+        (["PUSH1"], ["EQ"]),
+        [
+            {"opcode": "PUSH1"},
+            {"opcode": "PUSH1"},
+            {"opcode": "EQ"},
+            {"opcode": "PUSH1"},
+            {"opcode": "EQ"},
+        ],
+        [1, 3],
+    ),
+]
+
+
+@pytest.mark.parametrize(
+    "pattern, instruction_list, expected_result", find_sequence_match_test_data
+)
+def test_find_op_code_sequence(pattern, instruction_list, expected_result):
+    # Act
+    return_value = list(find_op_code_sequence(pattern, instruction_list))
+
+    # Assert
+    assert return_value == expected_result
+
+
+def test_disassemble():
+    # Act
+    instruction_list = disassemble(b"\x00\x16\x06")
+
+    # Assert
+    assert instruction_list[0]["opcode"] == "STOP"
+    assert instruction_list[1]["opcode"] == "AND"
+    assert instruction_list[2]["opcode"] == "MOD"
diff --git a/tests/disassembler/disassembly_test.py b/tests/disassembler/disassembly_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..85c006b77e864262d75932820a389638b0fe0a85
--- /dev/null
+++ b/tests/disassembler/disassembly_test.py
@@ -0,0 +1,64 @@
+from mythril.disassembler.disassembly import *
+
+instruction_list = [
+    {"opcode": "PUSH4", "argument": "0x10203040"},
+    {"opcode": "EQ"},
+    {"opcode": "PUSH4", "argument": "0x40302010"},
+    {"opcode": "JUMPI"},
+]
+
+
+def test_get_function_info(mocker):
+    # Arrange
+    global instruction_list
+
+    signature_database_mock = SignatureDB()
+    mocker.patch.object(signature_database_mock, "get")
+    signature_database_mock.get.return_value = ["function_name"]
+
+    # Act
+    function_hash, entry_point, function_name = get_function_info(
+        0, instruction_list, signature_database_mock
+    )
+
+    # Assert
+    assert function_hash == "0x10203040"
+    assert entry_point == 0x40302010
+    assert function_name == "function_name"
+
+
+def test_get_function_info_multiple_names(mocker):
+    # Arrange
+    global instruction_list
+
+    signature_database_mock = SignatureDB()
+    mocker.patch.object(signature_database_mock, "get")
+    signature_database_mock.get.return_value = ["function_name", "another_name"]
+
+    # Act
+    function_hash, entry_point, function_name = get_function_info(
+        0, instruction_list, signature_database_mock
+    )
+
+    # Assert
+    assert function_name in (
+        "function_name or another_name",
+        "another_name or function_name",
+    )
+
+
+def test_get_function_info_no_names(mocker):
+    # Arrange
+    global instruction_list
+
+    signature_database_mock = SignatureDB()
+    mocker.patch.object(signature_database_mock, "get")
+    signature_database_mock.get.return_value = []
+
+    # Act
+    function_hash, entry_point, function_name = get_function_info(
+        0, instruction_list, signature_database_mock
+    )
+
+    # Assert
+    assert function_name == "_function_0x10203040"
diff --git a/tests/disassembler_test.py b/tests/disassembler_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..4654f3ac19a55ca3add3c2bcbac35b6716ca3649
--- /dev/null
+++ b/tests/disassembler_test.py
@@ -0,0 +1,27 @@
+from mythril.disassembler.disassembly import Disassembly
+from mythril.ethereum import util
+from tests import *
+import os
+
+
+class DisassemblerTestCase(BaseTestCase):
+    def test_instruction_list(self):
+        code = "0x606060405236156100ca5763ffffffff60e060020a600035041663054f7d9c81146100d3578063095c21e3146100f45780630ba50baa146101165780631a3719321461012857806366529e3f14610153578063682789a81461017257806389f21efc146101915780638da5cb5b146101ac5780638f4ffcb1146101d55780639a1f2a5714610240578063b5f522f71461025b578063bd94b005146102b6578063c5ab5a13146102c8578063cc424839146102f1578063deb077b914610303578063f3fef3a314610322575b6100d15b5b565b005b34610000576100e0610340565b604080519115158252519081900360200190f35b3461000057610104600435610361565b60408051918252519081900360200190f35b34610000576100d1600435610382565b005b3461000057610104600160a060020a03600435166103b0565b60408051918252519081900360200190f35b346100005761010461041e565b60408051918252519081900360200190f35b3461000057610104610424565b60408051918252519081900360200190f35b34610000576100d1600160a060020a036004351661042b565b005b34610000576101b961046f565b60408051600160a060020a039092168252519081900360200190f35b3461000057604080516020600460643581810135601f81018490048402850184019095528484526100d1948235600160a060020a039081169560248035966044359093169594608494929391019190819084018382808284375094965061048595505050505050565b005b34610000576100d1600160a060020a03600435166106e7565b005b346100005761026b60043561072b565b60408051600160a060020a0390991689526020890197909752878701959095526060870193909352608086019190915260a085015260c084015260e083015251908190036101000190f35b34610000576100d160043561077a565b005b34610000576101b9610830565b60408051600160a060020a039092168252519081900360200190f35b34610000576100d160043561083f565b005b34610000576101046108a1565b60408051918252519081900360200190f35b34610000576100d1600160a060020a03600435166024356108a7565b005b60015474010000000000000000000000000000000000000000900460ff1681565b600681815481101561000057906000526020600020900160005b5054905081565b600054600160a060020a036301000000909104811690331681146103a557610000565b60038290555b5b5050565b6005546040805160006020918201819052825160e260020a631d010437028152600160a060020a03868116600483015293519194939093169263740410dc92602480830193919282900301818787803b156100005760325a03f115610000575050604051519150505b919050565b60035481565b6006545b90565b600054600160a060020a0363010000009091048116903316811461044e57610000565b60018054600160a060020a031916600160a060020a0384161790555b5b5050565b60005463010000009004600160a060020a031681565b6000600060006000600060006000600160149054906101000a900460ff16156104ad57610000565b87600081518110156100005760209101015160005460f860020a918290048202975002600160f860020a031990811690871614156105405760009450600196505b600587101561053057878781518110156100005790602001015160f860020a900460f860020a0260f860020a900485610100020194505b6001909601956104ee565b61053b8b868c610955565b6106d6565b600054610100900460f860020a02600160f860020a0319908116908716141561069e57506001955060009250829150819050805b60058710156105b657878781518110156100005790602001015160f860020a900460f860020a0260f860020a900481610100020190505b600190960195610574565b600596505b60098710156105fd57878781518110156100005790602001015160f860020a900460f860020a0260f860020a900484610100020193505b6001909601956105bb565b600996505b600d87101561064457878781518110156100005790602001015160f860020a900460f860020a0260f860020a900483610100020192505b600190960195610602565b600d96505b601187101561068b57878781518110156100005790602001015160f860020a900460f860020a0260f860020a900482610100020191505b600190960195610649565b61053b8b828c878787610bc4565b6106d6565b60005462010000900460f860020a02600160f860020a031990811690871614156106d15761053b8b8b610e8e565b6106d6565b610000565b5b5b5b5b5050505050505050505050565b600054600160a060020a0363010000009091048116903316811461070a57610000565b60058054600160a060020a031916600160a060020a0384161790555b5b5050565b600760208190526000918252604090912080546001820154600283015460038401546004850154600586015460068701549690970154600160a060020a03909516969395929491939092909188565b600081815260076020526040812054600160a060020a0390811690331681146107a257610000565b600083815260076020526040902080546004820154600583015460038401549395506107dc93600160a060020a039093169291029061105e565b50600060058301556107ed83611151565b6040805184815290517fb5dc9baf0cb4e7e4759fa12eadebddf9316e26147d5a9ae150c4228d5a1dd23f9181900360200190a161082933611244565b5b5b505050565b600154600160a060020a031681565b600054600160a060020a0363010000009091048116903316811461086257610000565b600080546040516301000000909104600160a060020a0316916108fc851502918591818181858888f1935050505015156103ab57610000565b5b5b5050565b60025481565b600054600160a060020a036301000000909104811690331681146108ca57610000565b6000805460408051602090810184905281517fa9059cbb0000000000000000000000000000000000000000000000000000000081526301000000909304600160a060020a0390811660048501526024840187905291519187169363a9059cbb9360448082019492918390030190829087803b156100005760325a03f115610000575050505b5b505050565b610100604051908101604052806000600160a060020a03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525060006007600085815260200190815260200160002061010060405190810160405290816000820160009054906101000a9004600160a060020a0316600160a060020a0316600160a060020a0316815260200160018201548152602001600282015481526020016003820154815260200160048201548152602001600582015481526020016006820154815260200160078201548152505091508260001415610a4857610000565b8160400151838115610000570615610a5f57610000565b6002548410610a6d57610000565b8160400151838115610000570490508160a00151811115610a8d57610000565b610a9c8584846020015161128e565b1515610aa757610000565b60a082018051829003815260008581526007602081815260409283902086518154600160a060020a031916600160a060020a038216178255918701516001820181905593870151600282015560608701516003820155608087015160048201559351600585015560c0860151600685015560e08601519390910192909255610b319190859061105e565b1515610b3c57610000565b610b518582846080015102846060015161105e565b1515610b5c57610000565b60a0820151158015610b71575060c082015115155b15610b7f57610b7f84611151565b5b6040805185815290517fb5dc9baf0cb4e7e4759fa12eadebddf9316e26147d5a9ae150c4228d5a1dd23f9181900360200190a1610bbc85611244565b5b5050505050565b831515610bd057610000565b82851415610bdd57610000565b801580610be8575081155b15610bf257610000565b80848115610000570615610c0557610000565b6005546040805160006020918201819052825160e260020a631d010437028152600160a060020a038b8116600483015293518695949094169363740410dc9360248084019491938390030190829087803b156100005760325a03f11561000057505050604051805190501015610c7a57610000565b610c8586858761128e565b1515610c9057610000565b600554604080517fbe0140a6000000000000000000000000000000000000000000000000000000008152600160a060020a03898116600483015260006024830181905260448301869052925193169263be0140a69260648084019391929182900301818387803b156100005760325a03f115610000575050506101006040519081016040528087600160a060020a03168152602001848152602001838152602001868152602001828681156100005704815260200182815260200160068054905081526020014281525060076000600254815260200190815260200160002060008201518160000160006101000a815481600160a060020a030219169083600160a060020a031602179055506020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e0820151816007015590505060068054806001018281815481835581811511610e2757600083815260209020610e279181019083015b80821115610e235760008155600101610e0f565b5090565b5b505050916000526020600020900160005b50600280549182905560018201905560408051918252517fb5dc9baf0cb4e7e4759fa12eadebddf9316e26147d5a9ae150c4228d5a1dd23f92509081900360200190a1610e8586611244565b5b505050505050565b600354818115610000570615610ea357610000565b600160009054906101000a9004600160a060020a0316600160a060020a031663cf35bdd060016000604051602001526040518263ffffffff1660e060020a02815260040180828152602001915050602060405180830381600087803b156100005760325a03f115610000575050604080518051600080546020938401829052845160e060020a6323b872dd028152600160a060020a038981166004830152630100000090920482166024820152604481018890529451921694506323b872dd936064808201949392918390030190829087803b156100005760325a03f1156100005750506040515115159050610f9857610000565b600554600354600160a060020a039091169063be0140a6908490600190858115610000576040805160e060020a63ffffffff8816028152600160a060020a039095166004860152921515602485015204604483015251606480830192600092919082900301818387803b156100005760325a03f1156100005750505061101d82611244565b60408051600160a060020a038416815290517f30a29a0aa75376a69254bb98dbd11db423b7e8c3473fb5bf0fcba60bcbc42c4b9181900360200190a15b5050565b600081151561106c57610000565b6001546040805160006020918201819052825160e460020a630cf35bdd028152600481018790529251600160a060020a039094169363cf35bdd09360248082019493918390030190829087803b156100005760325a03f1156100005750505060405180519050600160a060020a031663a9059cbb85856000604051602001526040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b156100005760325a03f115610000575050604051519150505b9392505050565b6000818152600760205260409020600690810154815490919060001981019081101561000057906000526020600020900160005b5054600682815481101561000057906000526020600020900160005b50556006805460001981018083559091908280158290116111e7576000838152602090206111e79181019083015b80821115610e235760008155600101610e0f565b5090565b5b50506006548314915061122d9050578060076000600684815481101561000057906000526020600020900160005b505481526020810191909152604001600020600601555b6000828152600760205260408120600601555b5050565b60045481600160a060020a031631101561128957600454604051600160a060020a0383169180156108fc02916000818181858888f19350505050151561128957610000565b5b5b50565b600081151561129c57610000565b6001546040805160006020918201819052825160e460020a630cf35bdd028152600481018790529251600160a060020a039094169363cf35bdd09360248082019493918390030190829087803b156100005760325a03f11561000057505060408051805160006020928301819052835160e060020a6323b872dd028152600160a060020a038a811660048301523081166024830152604482018a905294519490921694506323b872dd93606480840194939192918390030190829087803b156100005760325a03f115610000575050604051519150505b93925050505600a165627a7a723058204dee0e1bf170a9d122508f3e876c4a84893b12a7345591521af4ca737bb765000029"
+        disassembly = Disassembly(code)
+        self.assertEqual(len(disassembly.instruction_list), 3523)
+
+    def test_easm_from_solidity_files(self):
+        for input_file in TESTDATA_INPUTS.iterdir():
+            output_expected = TESTDATA_OUTPUTS_EXPECTED / (input_file.name + ".easm")
+            output_current = TESTDATA_OUTPUTS_CURRENT / (input_file.name + ".easm")
+            if os.path.isfile(output_current) is False:
+                # Ignore files which do not have output data
+                continue
+            code = input_file.read_text()
+            disassembly = Disassembly(code)
+            output_current.write_text(disassembly.get_easm())
+
+            if not (output_expected.read_text() == output_current.read_text()):
+                self.found_changed_files(input_file, output_expected, output_current)
+
+        self.assert_and_show_changed_files()
diff --git a/tests/evmcontract_test.py b/tests/evmcontract_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..d09364261775dab08b4db9051a9c63867a85dc65
--- /dev/null
+++ b/tests/evmcontract_test.py
@@ -0,0 +1,52 @@
+from mythril.ethereum.evmcontract import EVMContract
+from tests import BaseTestCase
+
+
+class EVMContractTestCase(BaseTestCase):
+    def setUp(self):
+        """"""
+        super().setUp()
+        self.code = "0x60606040525b603c5b60006010603e565b9050593681016040523660008237602060003683856040603f5a0204f41560545760206000f35bfe5b50565b005b73c3b2ae46792547a96b9f84405e36d0e07edcd05c5b905600a165627a7a7230582062a884f947232ada573f95940cce9c8bfb7e4e14e21df5af4e884941afb55e590029"
+        self.creation_code = "0x60606040525b603c5b60006010603e565b9050593681016040523660008237602060003683856040603f5a0204f41560545760206000f35bfe5b50565b005b73c3b2ae46792547a96b9f84405e36d0e07edcd05c5b905600a165627a7a7230582062a884f947232ada573f95940cce9c8bfb7e4e14e21df5af4e884941afb55e590029"
+
+
+class Getinstruction_listTestCase(EVMContractTestCase):
+    def runTest(self):
+        """"""
+        contract = EVMContract(self.code, self.creation_code)
+
+        disassembly = contract.disassembly
+
+        self.assertEqual(
+            len(disassembly.instruction_list),
+            53,
+            "Error disassembling code using EVMContract.get_instruction_list()",
+        )
+
+
+class GetEASMTestCase(EVMContractTestCase):
+    def runTest(self):
+        """"""
+        contract = EVMContract(self.code)
+
+        instruction_list = contract.get_easm()
+
+        self.assertTrue(
+            "PUSH1 0x60" in instruction_list,
+            "Error obtaining EASM code through EVMContract.get_easm()",
+        )
+
+
+class MatchesExpressionTestCase(EVMContractTestCase):
+    def runTest(self):
+        """"""
+        contract = EVMContract(self.code)
+
+        self.assertTrue(
+            contract.matches_expression("code#PUSH1# or code#PUSH1#"),
+            "Unexpected result in expression matching",
+        )
+        self.assertFalse(
+            contract.matches_expression("func#abcdef#"),
+            "Unexpected result in expression matching",
+        )
diff --git a/tests/features_test.py b/tests/features_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..a4bda13e515650547d77544cfcc31811d0e9e760
--- /dev/null
+++ b/tests/features_test.py
@@ -0,0 +1,131 @@
+import pytest
+from pathlib import Path
+from mythril.mythril import MythrilDisassembler
+from mythril.solidity.features import SolidityFeatureExtractor
+from mythril.solidity.soliditycontract import SolidityContract, SolcAST
+
+TEST_FILES = Path(__file__).parent / "testdata/input_contracts"
+solc_binary_5 = MythrilDisassembler._init_solc_binary("v0.5.0")
+solc_binary_8 = MythrilDisassembler._init_solc_binary("v0.8.0")
+solc_binary_82 = MythrilDisassembler._init_solc_binary("v0.8.20")
+
+
+test_cases = [
+    ("suicide.sol", 1, "kill", "contains_selfdestruct", True, solc_binary_5),
+    (
+        "SimpleModifier.sol",
+        1,
+        "withdrawfunds",
+        "all_require_vars",
+        set(["msg", "owner"]),
+        solc_binary_5,
+    ),
+    (
+        "SimpleModifier.sol",
+        1,
+        "withdrawfunds",
+        "transfer_vars",
+        set(["owner"]),
+        solc_binary_5,
+    ),
+    ("rubixi.sol", 18, "init", "contains_selfdestruct", False, solc_binary_5),
+    ("rubixi.sol", 18, "collectAllFees", "has_owner_modifier", True, solc_binary_5),
+    ("rubixi.sol", 18, "collectAllFees", "is_payable", False, solc_binary_5),
+    (
+        "rubixi.sol",
+        18,
+        "collectAllFees",
+        "all_require_vars",
+        set(["collectedFees", "creator"]),
+        solc_binary_5,
+    ),
+    (
+        "rubixi.sol",
+        18,
+        "collectPercentOfFees",
+        "all_require_vars",
+        set(["collectedFees", "_pcent", "creator"]),
+        solc_binary_5,
+    ),
+    (
+        "rubixi.sol",
+        18,
+        "changeMultiplier",
+        "all_require_vars",
+        set(["_mult", "creator"]),
+        solc_binary_5,
+    ),
+    ("rubixi.sol", 18, "", "is_payable", True, solc_binary_5),
+    (
+        "rubixi.sol",
+        18,
+        "collectAllFees",
+        "transfer_vars",
+        set(["creator"]),
+        solc_binary_5,
+    ),
+    ("exceptions.sol", 8, "assert3", "contains_assert", True, solc_binary_5),
+    (
+        "exceptions.sol",
+        8,
+        "requireisfine",
+        "all_require_vars",
+        set(["input"]),
+        solc_binary_5,
+    ),
+    ("WalletLibrary.sol", 23, "execute", "has_owner_modifier", True, solc_binary_5),
+    ("WalletLibrary.sol", 23, "initWallet", "has_owner_modifier", False, solc_binary_5),
+    (
+        "WalletLibrary.sol",
+        23,
+        "initWallet",
+        "all_require_vars",
+        set(["m_numOwners"]),
+        solc_binary_5,
+    ),
+    (
+        "WalletLibrary.sol",
+        23,
+        "confirm",
+        "all_require_vars",
+        set(["success"]),
+        solc_binary_5,
+    ),
+    ("kcalls.sol", 3, "callSetN", "contains_call", True, solc_binary_5),
+    ("kcalls.sol", 3, "delegatecallSetN", "contains_delegatecall", True, solc_binary_5),
+    ("kcalls.sol", 3, "callcodeSetN", "contains_staticcall", True, solc_binary_5),
+    (
+        "regression_1.sol",
+        5,
+        "transfer",
+        "all_require_vars",
+        set(["userBalances", "msg", "_to", "_amount"]),
+        solc_binary_8,
+    ),
+    ("SecureVault.sol", 11, "withdraw", "has_owner_modifier", True, solc_binary_82),
+    ("SecureVault.sol", 11, "deposit", "has_owner_modifier", False, solc_binary_82),
+    (
+        "SecureVault.sol",
+        11,
+        "withdraw",
+        "all_require_vars",
+        set(["amount", "this"]),
+        solc_binary_82,
+    ),
+]
+
+
+@pytest.mark.parametrize(
+    "file_name, num_funcs, func_name, field, expected_value, solc_binary", test_cases
+)
+def test_features(file_name, num_funcs, func_name, field, expected_value, solc_binary):
+    input_file = TEST_FILES / file_name
+    name = file_name.split(".")[0]
+    if name[0].islower():
+        name = name.capitalize()
+    contract = SolidityContract(str(input_file), name=name, solc_binary=solc_binary)
+    ms = contract.solc_json["sources"][str(input_file)]["ast"]
+    sfe = SolidityFeatureExtractor(ms)
+    fe = sfe.extract_features()
+    assert len(fe) == num_funcs
+    assert fe[func_name][field] == expected_value
diff --git a/tests/graph_test.py b/tests/graph_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..a76ee531ddb07687ba2f8317da7ffc616250386e
--- /dev/null
+++ b/tests/graph_test.py
@@ -0,0 +1,45 @@
+"""
+This test only checks whether dumping is successful, not whether the dumped state space makes sense
+"""
+from mythril.mythril import MythrilAnalyzer, MythrilDisassembler
+from mythril.ethereum import util
+from mythril.solidity.soliditycontract import EVMContract
+from tests import TESTDATA_INPUTS
+from types import SimpleNamespace
+
+
+def test_generate_graph():
+    for input_file in TESTDATA_INPUTS.iterdir():
+        if input_file.name != "origin.sol.o":
+            continue
+        contract = EVMContract(input_file.read_text())
+        disassembler = MythrilDisassembler()
+
+        disassembler.contracts.append(contract)
+        args = SimpleNamespace(
+            execution_timeout=5,
+            max_depth=30,
+            solver_timeout=10000,
+            no_onchain_data=True,
+            loop_bound=None,
+            create_timeout=None,
+            disable_dependency_pruning=False,
+            custom_modules_directory=None,
+            pruning_factor=0,
+            parallel_solving=True,
+            unconstrained_storage=True,
+            call_depth_limit=3,
+            disable_iprof=True,
+            solver_log=None,
+            transaction_sequences=None,
+            disable_coverage_strategy=False,
+            disable_mutation_pruner=False,
+        )
+        analyzer = MythrilAnalyzer(
+            disassembler=disassembler,
+            strategy="dfs",
+            address=(util.get_indexed_address(0)),
+            cmd_args=args,
+        )
+
+        analyzer.graph_html(transaction_count=1)
diff --git a/tests/instructions/__init__.py b/tests/instructions/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/tests/instructions/basefee_test.py b/tests/instructions/basefee_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..0a29d3ef8d681676a15147f2a19a93896a36982a
--- /dev/null
+++ b/tests/instructions/basefee_test.py
@@ -0,0 +1,39 @@
+from mythril.disassembler.disassembly import Disassembly
+from mythril.laser.ethereum.state.environment import Environment
+from mythril.laser.ethereum.state.machine_state import MachineState
+from mythril.laser.ethereum.state.global_state import GlobalState
+from mythril.laser.ethereum.state.world_state import WorldState
+from mythril.laser.ethereum.instructions import Instruction
+from mythril.laser.ethereum.transaction.transaction_models import MessageCallTransaction
+from mythril.laser.smt import symbol_factory
+
+
+def test_basefee():
+    # Arrange
+    world_state = WorldState()
+    account = world_state.create_account(balance=10, address=101)
+    account.code = Disassembly("60606040")
+    environment = Environment(
+        account,
+        None,
+        None,
+        None,
+        None,
+        None,
+        basefee=symbol_factory.BitVecSym("gasfee", 256),
+    )
+    og_state = GlobalState(
+        world_state, environment, None, MachineState(gas_limit=8000000)
+    )
+    og_state.transaction_stack.append(
+        (MessageCallTransaction(world_state=WorldState(), gas_limit=8000000), None)
+    )
+
+    og_state.mstate.stack = []
+    instruction = Instruction("basefee", dynamic_loader=None)
+
+    # Act
+    new_state = instruction.evaluate(og_state)[0]
+
+    # Assert
+    assert new_state.mstate.stack == [symbol_factory.BitVecSym("gasfee", 256)]
diff --git a/tests/instructions/berlin_fork_opcodes_test.py b/tests/instructions/berlin_fork_opcodes_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..af36ffc82e9eb4086285258b33a107f0c099cf7e
--- /dev/null
+++ b/tests/instructions/berlin_fork_opcodes_test.py
@@ -0,0 +1,88 @@
+import pytest
+
+from mythril.laser.ethereum.evm_exceptions import VmException, OutOfGasException
+from mythril.disassembler.disassembly import Disassembly
+from mythril.laser.ethereum.state.environment import Environment
+from mythril.laser.ethereum.state.world_state import WorldState
+from mythril.laser.ethereum.state.account import Account
+from mythril.laser.ethereum.state.machine_state import MachineState
+from mythril.laser.ethereum.state.global_state import GlobalState
+from mythril.laser.ethereum.instructions import Instruction
+from mythril.laser.ethereum.transaction.transaction_models import MessageCallTransaction
+from mythril.laser.smt import symbol_factory, simplify
+
+
+def get_state():
+    world_state = WorldState()
+    account = world_state.create_account(balance=10, address=101)
+    account.code = Disassembly("0x60045e005c5d")
+    environment = Environment(account, None, None, None, None, None, None)
+    state = GlobalState(world_state, environment, None, MachineState(gas_limit=8000000))
+    state.transaction_stack.append(
+        (MessageCallTransaction(world_state=WorldState(), gas_limit=8000000), None)
+    )
+    return state
+
+
+BVV = symbol_factory.BitVecVal
+BV = symbol_factory.BitVecSym
+
+test_data = (([BVV(5, 256)], [], 2, -1, ()),)
+
+
+def test_jumpsub_success():
+    # Arrange
+    state = get_state()
+    state.mstate.pc = 2
+    state.mstate.stack = [BVV(4, 256)]
+    state.mstate.subroutine_stack = []
+    instruction = Instruction("jumpsub", dynamic_loader=None)
+
+    # Act
+    new_state = instruction.evaluate(state)[0]
+
+    # Assert
+    assert new_state.mstate.pc == 5
+    assert new_state.mstate.stack == []
+    assert new_state.mstate.subroutine_stack == [3]
+
+
+def test_jumpsub_fail():
+    # Arrange
+    state = get_state()
+    state.mstate.pc = 2
+    state.mstate.stack = [BVV(5, 256)]
+    state.mstate.subroutine_stack = []
+    instruction = Instruction("jumpsub", dynamic_loader=None)
+
+    # Act + Assert
+    with pytest.raises(VmException):
+        instruction.evaluate(state)[0]
+
+
+def test_beginsub():
+    # Arrange
+    state = get_state()
+    state.mstate.pc = 3
+    state.mstate.stack = []
+    state.mstate.subroutine_stack = []
+    instruction = Instruction("beginsub", dynamic_loader=None)
+
+    # Act + Assert
+    with pytest.raises(OutOfGasException):
+        instruction.evaluate(state)[0]
+
+
+def test_returnsub():
+    # Arrange
+    state = get_state()
+    state.mstate.pc = 5
+    state.mstate.stack = []
+    state.mstate.subroutine_stack = [3]
+    instruction = Instruction("returnsub", dynamic_loader=None)
+
+    # Act
+    new_state = instruction.evaluate(state)[0]
+
+    # Assert
+    assert new_state.mstate.pc == 3
diff --git a/tests/instructions/codecopy_test.py b/tests/instructions/codecopy_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..b7ed02aa6287c051b6cfeb19fcb794f7c37af757
--- /dev/null
+++ b/tests/instructions/codecopy_test.py
@@ -0,0 +1,32 @@
+from mythril.disassembler.disassembly import Disassembly
+from mythril.laser.ethereum.state.environment import Environment
+from mythril.laser.ethereum.state.account import Account
+from mythril.laser.ethereum.state.machine_state import MachineState
+from mythril.laser.ethereum.state.global_state import GlobalState
+from mythril.laser.ethereum.state.world_state import WorldState
+from mythril.laser.ethereum.instructions import Instruction
+from mythril.laser.ethereum.transaction.transaction_models import MessageCallTransaction
+
+
+def test_codecopy_concrete():
+    # Arrange
+    world_state = WorldState()
+    account = world_state.create_account(balance=10, address=101)
+    account.code = Disassembly("60606040")
+    environment = Environment(account, None, None, None, None, None, None)
+    og_state = GlobalState(
+        world_state, environment, None, MachineState(gas_limit=8000000)
+    )
+    og_state.transaction_stack.append(
+        (MessageCallTransaction(world_state=WorldState(), gas_limit=8000000), None)
+    )
+
+    og_state.mstate.stack = [2, 2, 2]
+    instruction = Instruction("codecopy", dynamic_loader=None)
+
+    # Act
+    new_state = instruction.evaluate(og_state)[0]
+
+    # Assert
+    assert new_state.mstate.memory[2] == 96
+    assert new_state.mstate.memory[3] == 64
diff --git a/tests/instructions/create2_test.py b/tests/instructions/create2_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..eecc5ce6c39e33a112af59b642ea82a1d279891b
--- /dev/null
+++ b/tests/instructions/create2_test.py
@@ -0,0 +1,70 @@
+import pytest
+from mythril.disassembler.disassembly import Disassembly
+from mythril.laser.ethereum.state.environment import Environment
+from mythril.laser.ethereum.state.machine_state import MachineState
+from mythril.laser.ethereum.state.global_state import GlobalState
+from mythril.laser.ethereum.state.world_state import WorldState
+from mythril.laser.ethereum.time_handler import time_handler
+from mythril.laser.ethereum.instructions import Instruction
+from mythril.laser.ethereum.transaction.transaction_models import (
+    MessageCallTransaction,
+    TransactionStartSignal,
+)
+from mythril.laser.smt import symbol_factory
+from mythril.laser.ethereum.state.calldata import ConcreteCalldata
+from mythril.support.support_utils import get_code_hash
+
+last_state = None
+created_contract_account = None
+
+
+def generate_salted_address(code_str, salt, caller):
+    addr = hex(caller.value)[2:]
+    addr = "0" * (40 - len(addr)) + addr
+
+    salt = hex(salt.value)[2:]
+    salt = "0" * (64 - len(salt)) + salt
+
+    contract_address = int(
+        get_code_hash("0xff" + addr + salt + get_code_hash(code_str)[2:])[26:], 16
+    )
+    return contract_address
+
+
+def test_create2():
+    world_state = WorldState()
+    account = world_state.create_account(balance=10, address=101)
+    account.code = Disassembly("60606040")
+    environment = Environment(account, None, None, None, None, None, None)
+    og_state = GlobalState(
+        world_state, environment, None, MachineState(gas_limit=8000000)
+    )
+    code_raw = []
+    code = "606060606060"
+    for i in range(len(code) // 2):
+        code_raw.append(int(code[2 * i : 2 * (i + 1)], 16))
+    calldata = ConcreteCalldata("1", code_raw)
+    environment.calldata = calldata
+    og_state.transaction_stack.append(
+        (MessageCallTransaction(world_state=WorldState(), gas_limit=8000000), None)
+    )
+    value = symbol_factory.BitVecVal(3, 256)
+    salt = symbol_factory.BitVecVal(10, 256)
+    og_state.mstate.stack = [
+        salt,
+        symbol_factory.BitVecVal(6, 256),
+        symbol_factory.BitVecVal(0, 256),
+        value,
+    ]
+    og_state.mstate.memory.extend(100)
+    og_state.mstate.memory[0:6] = [96] * 6
+    time_handler.start_execution(10)
+    instruction = Instruction("create2", dynamic_loader=None)
+    # Act + Assert
+    with pytest.raises(TransactionStartSignal) as t:
+        _ = instruction.evaluate(og_state)[0]
+    assert t.value.transaction.call_value == value
+    assert t.value.transaction.code.bytecode == code
+    assert t.value.transaction.callee_account.address == generate_salted_address(
+        code, salt, account.address
+    )
diff --git a/tests/instructions/create_test.py b/tests/instructions/create_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..03f236345213de35f50d16b6407169b42ac8c0f1
--- /dev/null
+++ b/tests/instructions/create_test.py
@@ -0,0 +1,52 @@
+import pytest
+
+from mythril.disassembler.disassembly import Disassembly
+from mythril.laser.ethereum.state.environment import Environment
+from mythril.laser.ethereum.state.machine_state import MachineState
+from mythril.laser.ethereum.state.global_state import GlobalState
+from mythril.laser.ethereum.state.world_state import WorldState
+from mythril.laser.ethereum.instructions import Instruction
+from mythril.laser.ethereum.transaction.transaction_models import (
+    MessageCallTransaction,
+    TransactionStartSignal,
+)
+from mythril.laser.ethereum.state.calldata import ConcreteCalldata
+
+
+last_state = None
+created_contract_account = None
+
+
+def test_create():
+    world_state = WorldState()
+    account = world_state.create_account(balance=10, address=101)
+    account.code = Disassembly("60606060")
+    environment = Environment(account, None, None, None, None, None, None)
+    og_state = GlobalState(
+        world_state, environment, None, MachineState(gas_limit=8000000)
+    )
+    code_raw = []
+    code = "606060606060"
+    for i in range(len(code) // 2):
+        code_raw.append(int(code[2 * i : 2 * (i + 1)], 16))
+    calldata = ConcreteCalldata("1", code_raw)
+    environment.calldata = calldata
+    og_state.transaction_stack.append(
+        (MessageCallTransaction(world_state=WorldState(), gas_limit=8000000), None)
+    )
+    value = 3
+    og_state.mstate.stack = [6, 0, value]
+    instruction = Instruction("create", dynamic_loader=None)
+    og_state.mstate.memory.extend(100)
+    og_state.mstate.memory[0:6] = [96] * 6
+
+    # Act + Assert
+    with pytest.raises(TransactionStartSignal) as t:
+        _ = instruction.evaluate(og_state)[0]
+
+    assert t.value.transaction.call_value == value
+    assert t.value.transaction.code.bytecode == code
+    assert (
+        t.value.transaction.callee_account.address
+        == world_state._generate_new_address(account.address.value)
+    )
diff --git a/tests/instructions/extcodecopy_test.py b/tests/instructions/extcodecopy_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..8dc3e4b2a6689fed0aeae050f4b76e9653a6926a
--- /dev/null
+++ b/tests/instructions/extcodecopy_test.py
@@ -0,0 +1,57 @@
+from mythril.laser.smt import symbol_factory
+from mythril.disassembler.disassembly import Disassembly
+from mythril.laser.ethereum.state.environment import Environment
+from mythril.laser.ethereum.state.machine_state import MachineState
+from mythril.laser.ethereum.state.global_state import GlobalState
+from mythril.laser.ethereum.state.world_state import WorldState
+from mythril.laser.ethereum.instructions import Instruction
+from mythril.laser.ethereum.transaction.transaction_models import MessageCallTransaction
+
+
+def test_extcodecopy():
+    # Arrange
+    new_world_state = WorldState()
+    new_account = new_world_state.create_account(balance=10, address=101)
+    new_account.code = Disassembly("60616240")
+    ext_account = new_world_state.create_account(balance=1000, address=121)
+    ext_account.code = Disassembly("6040404040")
+
+    new_environment = Environment(new_account, None, None, None, None, None, None)
+    state = GlobalState(
+        new_world_state, new_environment, None, MachineState(gas_limit=8000000)
+    )
+    state.transaction_stack.append(
+        (MessageCallTransaction(world_state=WorldState(), gas_limit=8000000), None)
+    )
+
+    state.mstate.stack = [3, 0, 0, 121]
+    instruction = Instruction("extcodecopy", dynamic_loader=None)
+
+    # Act
+    new_state = instruction.evaluate(state)[0]
+    # Assert
+    assert new_state.mstate.memory[0:3] == [96, 64, 64]
+
+
+def test_extcodecopy_fail():
+    # Arrange
+    new_world_state = WorldState()
+    new_account = new_world_state.create_account(balance=10, address=101)
+    new_account.code = Disassembly("60616240")
+    new_environment = Environment(new_account, None, None, None, None, None, None)
+    state = GlobalState(
+        new_world_state, new_environment, None, MachineState(gas_limit=8000000)
+    )
+    state.transaction_stack.append(
+        (MessageCallTransaction(world_state=WorldState(), gas_limit=8000000), None)
+    )
+
+    state.mstate.stack = [2, 2, 2, symbol_factory.BitVecSym("FAIL", 256)]
+    instruction = Instruction("extcodecopy", dynamic_loader=None)
+
+    # Act
+    new_state = instruction.evaluate(state)[0]
+
+    # Assert
+    assert new_state.mstate.stack == []
+    assert new_state.mstate.memory._memory == state.mstate.memory._memory
diff --git a/tests/instructions/extcodehash_test.py b/tests/instructions/extcodehash_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..00dbce7268bf45cc678356917d1bd3bb6f1564f0
--- /dev/null
+++ b/tests/instructions/extcodehash_test.py
@@ -0,0 +1,48 @@
+from mythril.disassembler.disassembly import Disassembly
+from mythril.laser.ethereum.state.environment import Environment
+from mythril.laser.ethereum.state.account import Account
+from mythril.laser.ethereum.state.machine_state import MachineState
+from mythril.laser.ethereum.state.global_state import GlobalState
+from mythril.laser.ethereum.state.world_state import WorldState
+from mythril.laser.ethereum.instructions import Instruction
+from mythril.laser.ethereum.transaction.transaction_models import MessageCallTransaction
+
+from mythril.support.support_utils import get_code_hash
+
+from mythril.laser.smt import symbol_factory
+
+# Arrange
+world_state = WorldState()
+account = world_state.create_account(balance=10, address=101)
+account.code = Disassembly("60606040")
+world_state.create_account(balance=10, address=1000)
+environment = Environment(account, None, None, None, None, None, None)
+og_state = GlobalState(world_state, environment, None, MachineState(gas_limit=8000000))
+og_state.transaction_stack.append(
+    (MessageCallTransaction(world_state=WorldState(), gas_limit=8000000), None)
+)
+
+instruction = Instruction("extcodehash", dynamic_loader=None)
+
+
+def test_extcodehash_no_account():
+
+    # If account does not exist, return 0
+    og_state.mstate.stack = [symbol_factory.BitVecVal(1, 256)]
+    new_state = instruction.evaluate(og_state)[0]
+    assert new_state.mstate.stack[-1] == 0
+
+
+def test_extcodehash_no_code():
+
+    # If account code does not exist, return hash of empty set.
+    og_state.mstate.stack = [symbol_factory.BitVecVal(1000, 256)]
+    new_state = instruction.evaluate(og_state)[0]
+    assert hex(new_state.mstate.stack[-1].value) == get_code_hash("")
+
+
+def test_extcodehash_return_hash():
+    # If account code exists, return hash of the code.
+    og_state.mstate.stack = [symbol_factory.BitVecVal(101, 256)]
+    new_state = instruction.evaluate(og_state)[0]
+    assert hex(new_state.mstate.stack[-1].value) == get_code_hash("60606040")
diff --git a/tests/instructions/push_test.py b/tests/instructions/push_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..13f26648e6c21bab5f7857415b68960210b3d68d
--- /dev/null
+++ b/tests/instructions/push_test.py
@@ -0,0 +1,50 @@
+import pytest
+
+from mythril.disassembler.disassembly import Disassembly
+from mythril.laser.ethereum.state.environment import Environment
+from mythril.laser.ethereum.state.world_state import WorldState
+from mythril.laser.ethereum.state.account import Account
+from mythril.laser.ethereum.state.machine_state import MachineState
+from mythril.laser.ethereum.state.global_state import GlobalState
+from mythril.laser.ethereum.state.world_state import WorldState
+from mythril.laser.ethereum.instructions import Instruction
+from mythril.laser.ethereum.transaction.transaction_models import MessageCallTransaction
+from mythril.laser.smt import symbol_factory, simplify
+
+
+def get_state(input):
+    world_state = WorldState()
+    account = world_state.create_account(balance=10, address=101)
+    account.code = Disassembly(input)
+    environment = Environment(account, None, None, None, None, None, None)
+    state = GlobalState(world_state, environment, None, MachineState(gas_limit=8000000))
+    state.transaction_stack.append(
+        (MessageCallTransaction(world_state=WorldState(), gas_limit=8000000), None)
+    )
+    return state
+
+
+BVV = symbol_factory.BitVecVal
+BV = symbol_factory.BitVecSym
+
+test_data = [
+    ("5F", 0),  # Successful execution, stack consists of a single item, set to zero
+    (
+        "5F" * 1024,
+        0,
+    ),  # Successful execution, stack consists of 1024 items, all set to zero
+]
+
+
+@pytest.mark.parametrize("inputs,output", test_data)
+def test_push0(inputs, output):
+    # Arrange
+    state = get_state(inputs)
+
+    instruction = Instruction("push", dynamic_loader=None)
+
+    # Act
+    new_state = instruction.evaluate(state)[0]
+
+    # Assert
+    assert simplify(new_state.mstate.stack[-1]) == output
diff --git a/tests/instructions/sar_test.py b/tests/instructions/sar_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..7b8c773f3a1def0aafbf2740ac0ae66e7d2bbfb5
--- /dev/null
+++ b/tests/instructions/sar_test.py
@@ -0,0 +1,151 @@
+import pytest
+
+from mythril.disassembler.disassembly import Disassembly
+from mythril.laser.ethereum.state.environment import Environment
+from mythril.laser.ethereum.state.world_state import WorldState
+from mythril.laser.ethereum.state.account import Account
+from mythril.laser.ethereum.state.machine_state import MachineState
+from mythril.laser.ethereum.state.global_state import GlobalState
+from mythril.laser.ethereum.state.world_state import WorldState
+from mythril.laser.ethereum.instructions import Instruction
+from mythril.laser.ethereum.transaction.transaction_models import MessageCallTransaction
+from mythril.laser.smt import symbol_factory, simplify
+
+
+def get_state():
+    world_state = WorldState()
+    account = world_state.create_account(balance=10, address=101)
+    account.code = Disassembly("60606040")
+    environment = Environment(account, None, None, None, None, None, None)
+    state = GlobalState(world_state, environment, None, MachineState(gas_limit=8000000))
+    state.transaction_stack.append(
+        (MessageCallTransaction(world_state=WorldState(), gas_limit=8000000), None)
+    )
+    return state
+
+
+BVV = symbol_factory.BitVecVal
+BV = symbol_factory.BitVecSym
+
+test_data = (
+    ([BVV(-1, 256), BVV(1, 256)], BVV(-1, 256)),
+    ([BVV(23, 256), BVV(257, 256)], BVV(0, 256)),
+    ([BVV(23, 256), BVV(30, 256)], BVV(23 >> 30, 256)),
+    ([BVV(-10, 256), BVV(10, 256)], BVV(-1, 256)),
+    ([BV("a", 256), BV("b", 256)], BV("a", 256) >> BV("b", 256)),
+)
+
+
+@pytest.mark.parametrize("inputs,output", test_data)
+def test_sar(inputs, output):
+    # Arrange
+    state = get_state()
+
+    state.mstate.stack = inputs
+    instruction = Instruction("sar", dynamic_loader=None)
+
+    # Act
+    new_state = instruction.evaluate(state)[0]
+
+    # Assert
+    assert simplify(new_state.mstate.stack[-1]) == output
+
+
+@pytest.mark.parametrize(
+    # Test cases from https://github.com/ethereum/EIPs/blob/master/EIPS/eip-145.md#sar-arithmetic-shift-right
+    "val1, val2, expected ",
+    (
+        (
+            "0x0000000000000000000000000000000000000000000000000000000000000001",
+            "0x00",
+            "0x0000000000000000000000000000000000000000000000000000000000000001",
+        ),
+        (
+            "0x0000000000000000000000000000000000000000000000000000000000000001",
+            "0x01",
+            "0x0000000000000000000000000000000000000000000000000000000000000000",
+        ),
+        (
+            "0x8000000000000000000000000000000000000000000000000000000000000000",
+            "0x01",
+            "0xc000000000000000000000000000000000000000000000000000000000000000",
+        ),
+        (
+            "0x8000000000000000000000000000000000000000000000000000000000000000",
+            "0xff",
+            "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+        ),
+        (
+            "0x8000000000000000000000000000000000000000000000000000000000000000",
+            "0x0100",
+            "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+        ),
+        (
+            "0x8000000000000000000000000000000000000000000000000000000000000000",
+            "0x0101",
+            "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+        ),
+        (
+            "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+            "0x00",
+            "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+        ),
+        (
+            "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+            "0x01",
+            "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+        ),
+        (
+            "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+            "0xff",
+            "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+        ),
+        (
+            "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+            "0x0100",
+            "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+        ),
+        (
+            "0x0000000000000000000000000000000000000000000000000000000000000000",
+            "0x01",
+            "0x0000000000000000000000000000000000000000000000000000000000000000",
+        ),
+        (
+            "0x4000000000000000000000000000000000000000000000000000000000000000",
+            "0xfe",
+            "0x0000000000000000000000000000000000000000000000000000000000000001",
+        ),
+        (
+            "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+            "0xf8",
+            "0x000000000000000000000000000000000000000000000000000000000000007f",
+        ),
+        (
+            "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+            "0xfe",
+            "0x0000000000000000000000000000000000000000000000000000000000000001",
+        ),
+        (
+            "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+            "0xff",
+            "0x0000000000000000000000000000000000000000000000000000000000000000",
+        ),
+        (
+            "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+            "0x0100",
+            "0x0000000000000000000000000000000000000000000000000000000000000000",
+        ),
+    ),
+)
+def test_concrete_sar(val1, val2, expected):
+    # Arrange
+    state = get_state()
+    state.mstate.stack = [BVV(int(val1, 16), 256), BVV(int(val2, 16), 256)]
+    expected = BVV(int(expected, 16), 256)
+    instruction = Instruction("sar", dynamic_loader=None)
+
+    # Act
+    new_state = instruction.evaluate(state)[0]
+
+    # Assert
+    assert simplify(new_state.mstate.stack[-1]) == expected
diff --git a/tests/instructions/shl_test.py b/tests/instructions/shl_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..5233ca6cb242d9951f8a43695d0ad1481a46f84e
--- /dev/null
+++ b/tests/instructions/shl_test.py
@@ -0,0 +1,125 @@
+import pytest
+
+from mythril.disassembler.disassembly import Disassembly
+from mythril.laser.ethereum.state.environment import Environment
+from mythril.laser.ethereum.state.account import Account
+from mythril.laser.ethereum.state.machine_state import MachineState
+from mythril.laser.ethereum.state.global_state import GlobalState
+from mythril.laser.ethereum.state.world_state import WorldState
+from mythril.laser.ethereum.instructions import Instruction
+from mythril.laser.ethereum.transaction.transaction_models import MessageCallTransaction
+from mythril.laser.smt import symbol_factory, simplify
+
+
+def get_state():
+    world_state = WorldState()
+    account = world_state.create_account(balance=10, address=101)
+    account.code = Disassembly("60606040")
+    environment = Environment(account, None, None, None, None, None, None)
+    state = GlobalState(world_state, environment, None, MachineState(gas_limit=8000000))
+    state.transaction_stack.append(
+        (MessageCallTransaction(world_state=WorldState(), gas_limit=8000000), None)
+    )
+    return state
+
+
+BVV = symbol_factory.BitVecVal
+BV = symbol_factory.BitVecSym
+
+test_data = (
+    ([BVV(2, 256), BVV(2, 256)], BVV(8, 256)),
+    ([BVV(23, 256), BVV(257, 256)], BVV(0, 256)),
+    ([BVV(23, 256), BVV(30, 256)], BVV(23 * (1 << 30), 256)),
+    ([BV("a", 256), BVV(270, 256)], 0),
+    ([BV("a", 256), BV("b", 256)], BV("a", 256) << BV("b", 256)),
+)
+
+
+@pytest.mark.parametrize("inputs,output,", test_data)
+def test_shl(inputs, output):
+    # Arrange
+    state = get_state()
+
+    state.mstate.stack = inputs
+    instruction = Instruction("shl", dynamic_loader=None)
+
+    # Act
+    new_state = instruction.evaluate(state)[0]
+
+    # Assert
+    assert simplify(new_state.mstate.stack[-1]) == output
+
+
+@pytest.mark.parametrize(
+    # Testcases from https://github.com/ethereum/EIPs/blob/master/EIPS/eip-145.md#shl-shift-left
+    "val1, val2, expected",
+    (
+        (
+            "0x0000000000000000000000000000000000000000000000000000000000000001",
+            "0x00",
+            "0x0000000000000000000000000000000000000000000000000000000000000001",
+        ),
+        (
+            "0x0000000000000000000000000000000000000000000000000000000000000001",
+            "0x01",
+            "0x0000000000000000000000000000000000000000000000000000000000000002",
+        ),
+        (
+            "0x0000000000000000000000000000000000000000000000000000000000000001",
+            "0xff",
+            "0x8000000000000000000000000000000000000000000000000000000000000000",
+        ),
+        (
+            "0x0000000000000000000000000000000000000000000000000000000000000001",
+            "0x0100",
+            "0x0000000000000000000000000000000000000000000000000000000000000000",
+        ),
+        (
+            "0x0000000000000000000000000000000000000000000000000000000000000001",
+            "0x0101",
+            "0x0000000000000000000000000000000000000000000000000000000000000000",
+        ),
+        (
+            "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+            "0x00",
+            "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+        ),
+        (
+            "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+            "0x01",
+            "0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe",
+        ),
+        (
+            "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+            "0xff",
+            "0x8000000000000000000000000000000000000000000000000000000000000000",
+        ),
+        (
+            "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+            "0x0100",
+            "0x0000000000000000000000000000000000000000000000000000000000000000",
+        ),
+        (
+            "0x0000000000000000000000000000000000000000000000000000000000000000",
+            "0x01",
+            "0x0000000000000000000000000000000000000000000000000000000000000000",
+        ),
+        (
+            "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+            "0x01",
+            "0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe",
+        ),
+    ),
+)
+def test_concrete_shl(val1, val2, expected):
+    # Arrange
+    state = get_state()
+    state.mstate.stack = [BVV(int(val1, 16), 256), BVV(int(val2, 16), 256)]
+    expected = BVV(int(expected, 16), 256)
+    instruction = Instruction("shl", dynamic_loader=None)
+
+    # Act
+    new_state = instruction.evaluate(state)[0]
+
+    # Assert
+    assert simplify(new_state.mstate.stack[-1]) == expected
diff --git a/tests/instructions/shr_test.py b/tests/instructions/shr_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..e6840d0860c6da8354ccbae40f8d7cc2332fdb49
--- /dev/null
+++ b/tests/instructions/shr_test.py
@@ -0,0 +1,127 @@
+import pytest
+
+from mythril.disassembler.disassembly import Disassembly
+from mythril.laser.ethereum.state.environment import Environment
+from mythril.laser.ethereum.state.account import Account
+from mythril.laser.ethereum.state.machine_state import MachineState
+from mythril.laser.ethereum.state.global_state import GlobalState
+from mythril.laser.ethereum.state.world_state import WorldState
+from mythril.laser.ethereum.instructions import Instruction
+from mythril.laser.ethereum.transaction.transaction_models import MessageCallTransaction
+from mythril.laser.smt import symbol_factory, simplify, LShR
+
+
+def get_state():
+    world_state = WorldState()
+    account = world_state.create_account(balance=10, address=101)
+    account.code = Disassembly("60606040")
+    environment = Environment(account, None, None, None, None, None, None)
+    state = GlobalState(world_state, environment, None, MachineState(gas_limit=8000000))
+    state.transaction_stack.append(
+        (MessageCallTransaction(world_state=WorldState(), gas_limit=8000000), None)
+    )
+    return state
+
+
+BVV = symbol_factory.BitVecVal
+BV = symbol_factory.BitVecSym
+
+test_data = (
+    ([BVV(33, 256), BVV(4, 256)], BVV(2, 256)),
+    ([BVV(1 << 100, 256), BVV(257, 256)], BVV(0, 256)),
+    ([BVV(23233, 256), BVV(10, 256)], BVV(23233 // (1 << 10), 256)),
+    ([BV("a", 256), BVV(270, 256)], 0),
+    (
+        [BV("a", 256), BV("b", 256)],
+        LShR(BV("a", 256), BV("b", 256)),
+    ),  # Current approximate specs
+)
+
+
+@pytest.mark.parametrize("inputs,output,", test_data)
+def test_shr(inputs, output):
+    # Arrange
+    state = get_state()
+
+    state.mstate.stack = inputs
+    instruction = Instruction("shr", dynamic_loader=None)
+
+    # Act
+    new_state = instruction.evaluate(state)[0]
+
+    # Assert
+    assert simplify(new_state.mstate.stack[-1]) == output
+
+
+@pytest.mark.parametrize(
+    # Cases: https://github.com/ethereum/EIPs/blob/master/EIPS/eip-145.md#shr-logical-shift-right
+    "val1, val2, expected",
+    (
+        (
+            "0x0000000000000000000000000000000000000000000000000000000000000001",
+            "0x00",
+            "0x0000000000000000000000000000000000000000000000000000000000000001",
+        ),
+        (
+            "0x0000000000000000000000000000000000000000000000000000000000000001",
+            "0x01",
+            "0x0000000000000000000000000000000000000000000000000000000000000000",
+        ),
+        (
+            "0x8000000000000000000000000000000000000000000000000000000000000000",
+            "0x01",
+            "0x4000000000000000000000000000000000000000000000000000000000000000",
+        ),
+        (
+            "0x8000000000000000000000000000000000000000000000000000000000000000",
+            "0xff",
+            "0x0000000000000000000000000000000000000000000000000000000000000001",
+        ),
+        (
+            "0x8000000000000000000000000000000000000000000000000000000000000000",
+            "0x0100",
+            "0x0000000000000000000000000000000000000000000000000000000000000000",
+        ),
+        (
+            "0x8000000000000000000000000000000000000000000000000000000000000000",
+            "0x0101",
+            "0x0000000000000000000000000000000000000000000000000000000000000000",
+        ),
+        (
+            "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+            "0x00",
+            "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+        ),
+        (
+            "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+            "0x01",
+            "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+        ),
+        (
+            "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+            "0xff",
+            "0x0000000000000000000000000000000000000000000000000000000000000001",
+        ),
+        (
+            "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+            "0x0100",
+            "0x0000000000000000000000000000000000000000000000000000000000000000",
+        ),
+        (
+            "0x0000000000000000000000000000000000000000000000000000000000000000",
+            "0x01",
+            "0x0000000000000000000000000000000000000000000000000000000000000000",
+        ),
+    ),
+)
+def test_concrete_shr(val1, val2, expected):
+    state = get_state()
+    state.mstate.stack = [BVV(int(val1, 16), 256), BVV(int(val2, 16), 256)]
+    expected = BVV(int(expected, 16), 256)
+    instruction = Instruction("shr", dynamic_loader=None)
+
+    # Act
+    new_state = instruction.evaluate(state)[0]
+
+    # Assert
+    assert simplify(new_state.mstate.stack[-1]) == expected
diff --git a/tests/instructions/static_call_test.py b/tests/instructions/static_call_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..e35abdc364c0c882ba477c2baaf95053a352b558
--- /dev/null
+++ b/tests/instructions/static_call_test.py
@@ -0,0 +1,124 @@
+import pytest
+from mock import patch
+
+from mythril.disassembler.disassembly import Disassembly
+from mythril.laser.smt import symbol_factory
+from mythril.laser.ethereum.state.environment import Environment
+from mythril.laser.ethereum.state.account import Account
+from mythril.laser.ethereum.state.machine_state import MachineState
+from mythril.laser.ethereum.state.global_state import GlobalState
+from mythril.laser.ethereum.state.world_state import WorldState
+from mythril.laser.ethereum.instructions import Instruction
+from mythril.laser.ethereum.transaction.transaction_models import MessageCallTransaction
+from mythril.laser.ethereum.call import SymbolicCalldata
+from mythril.laser.ethereum.transaction import TransactionStartSignal
+
+from mythril.laser.ethereum.evm_exceptions import WriteProtection
+
+
+def get_global_state():
+    active_account = Account("0x0", code=Disassembly("60606040"))
+    environment = Environment(
+        active_account, None, SymbolicCalldata("2"), None, None, None, None
+    )
+    world_state = WorldState()
+    world_state.put_account(active_account)
+    state = GlobalState(world_state, environment, None, MachineState(gas_limit=8000000))
+    state.transaction_stack.append(
+        (MessageCallTransaction(world_state=world_state, gas_limit=8000000), None)
+    )
+    return state
+
+
+@patch(
+    "mythril.laser.ethereum.instructions.get_call_parameters",
+    return_value=(
+        "0",
+        Account(code=Disassembly(code="0x00"), address="0x19"),
+        0,
+        0,
+        0,
+        0,
+        0,
+    ),
+)
+def test_staticcall(f1):
+    # Arrange
+    state = get_global_state()
+    state.mstate.stack = [10, 10, 10, 10, 10, 10, 10, 10, 0]
+    instruction = Instruction("staticcall", dynamic_loader=None)
+
+    # Act and Assert
+    with pytest.raises(TransactionStartSignal) as ts:
+        instruction.evaluate(state)
+    assert ts.value.transaction.static
+    assert ts.value.transaction.initial_global_state().environment.static
+
+
+test_data = (
+    "selfdestruct",
+    "create",
+    "create2",
+    "log0",
+    "log1",
+    "log2",
+    "log3",
+    "log4",
+    "sstore",
+)
+
+
+@pytest.mark.parametrize("input", test_data)
+def test_staticness(input):
+    # Arrange
+    state = get_global_state()
+    state.environment.static = True
+    state.mstate.stack = []
+    instruction = Instruction(input, dynamic_loader=None)
+
+    # Act and Assert
+    with pytest.raises(WriteProtection):
+        instruction.evaluate(state)
+
+
+test_data_call = ((0, True), (100, False))
+
+
+@pytest.mark.parametrize("input, success", test_data_call)
+@patch("mythril.laser.ethereum.instructions.get_call_parameters")
+def test_staticness_call_concrete(f1, input, success):
+    # Arrange
+    state = get_global_state()
+    state.environment.static = True
+    state.mstate.stack = [10] * 100
+    code = Disassembly(code="616263")
+    f1.return_value = ("0", Account(code=code, address="0x19"), 0, input, 0, 0, 0)
+    instruction = Instruction("call", dynamic_loader=None)
+
+    # Act and Assert
+    if success:
+        with pytest.raises(TransactionStartSignal) as ts:
+            instruction.evaluate(state)
+        assert ts.value.transaction.static
+    else:
+        with pytest.raises(WriteProtection):
+            instruction.evaluate(state)
+
+
+@patch("mythril.laser.ethereum.instructions.get_call_parameters")
+def test_staticness_call_symbolic(f1):
+    # Arrange
+    state = get_global_state()
+    state.environment.static = True
+    state.mstate.stack = [10] * 100
+    call_value = symbol_factory.BitVecSym("x", 256)
+    code = Disassembly(code="616263")
+    f1.return_value = ("0", Account(code=code, address="0x19"), 0, call_value, 0, 0, 0)
+    instruction = Instruction("call", dynamic_loader=None)
+
+    # Act and Assert
+    with pytest.raises(TransactionStartSignal) as ts:
+        instruction.evaluate(state)
+
+    assert ts.value.transaction.static
+    assert ts.value.global_state.world_state.constraints[-1] == (call_value == 0)
diff --git a/tests/integration_tests/analysis_tests.py b/tests/integration_tests/analysis_tests.py
new file mode 100644
index 0000000000000000000000000000000000000000..d33e3103cf103e05d4a25dc5c9c7cb57a99eee1d
--- /dev/null
+++ b/tests/integration_tests/analysis_tests.py
@@ -0,0 +1,82 @@
+import pytest
+import json
+import sys
+
+from utils import output_of
+from tests import PROJECT_DIR, TESTDATA
+
+MYTH = str(PROJECT_DIR / "myth")
+test_data = (
+    (
+        "flag_array.sol.o",
+        {
+            "TX_COUNT": 1,
+            "TX_OUTPUT": 1,
+            "MODULE": "EtherThief",
+            "ISSUE_COUNT": 1,
+            "ISSUE_NUMBER": 0,
+        },
+        "0xab12585800000000000000000000000000000000000000000000000000000000000004d2",
+    ),
+    (
+        "exceptions_0.8.0.sol.o",
+        {
+            "TX_COUNT": 1,
+            "TX_OUTPUT": 1,
+            "MODULE": "Exceptions",
+            "ISSUE_COUNT": 2,
+            "ISSUE_NUMBER": 0,
+        },
+        None,
+    ),
+    (
+        "symbolic_exec_bytecode.sol.o",
+        {
+            "TX_COUNT": 1,
+            "TX_OUTPUT": 0,
+            "MODULE": "AccidentallyKillable",
+            "ISSUE_COUNT": 1,
+            "ISSUE_NUMBER": 0,
+        },
+        None,
+    ),
+    (
+        "extcall.sol.o",
+        {
+            "TX_COUNT": 1,
+            "TX_OUTPUT": 0,
+            "MODULE": "Exceptions",
+            "ISSUE_COUNT": 1,
+            "ISSUE_NUMBER": 0,
+        },
+        None,
+    ),
+)
+
+
+@pytest.mark.parametrize("file_name, tx_data, calldata", test_data)
+def test_analysis(file_name, tx_data, calldata):
+    bytecode_file = str(TESTDATA / "inputs" / file_name)
+    command = f"""python3 {MYTH} analyze -f {bytecode_file} -t {tx_data["TX_COUNT"]} -o jsonv2 -m {tx_data["MODULE"]} --solver-timeout 60000  --no-onchain-data"""
+    output = json.loads(output_of(command))
+
+    assert len(output[0]["issues"]) == tx_data["ISSUE_COUNT"]
+    if calldata:
+        test_case = output[0]["issues"][tx_data["ISSUE_NUMBER"]]["extra"]["testCases"][
+            0
+        ]
+        assert test_case["steps"][tx_data["TX_OUTPUT"]]["input"] == calldata
+
+
+@pytest.mark.parametrize("file_name, tx_data, calldata", test_data)
+def test_analysis_pending(file_name, tx_data, calldata):
+    bytecode_file = str(TESTDATA / "inputs" / file_name)
+    command = f"""python3 {MYTH} analyze -f {bytecode_file} -t {tx_data["TX_COUNT"]} -o jsonv2 -m {tx_data["MODULE"]} --solver-timeout 60000 --strategy pending --no-onchain-data"""
+    output = json.loads(output_of(command))
+
+    assert len(output[0]["issues"]) == tx_data["ISSUE_COUNT"]
+    if calldata:
+        test_case = output[0]["issues"][tx_data["ISSUE_NUMBER"]]["extra"]["testCases"][
+            0
+        ]
+        assert test_case["steps"][tx_data["TX_OUTPUT"]]["input"] == calldata
diff --git a/tests/integration_tests/old_version_test.py b/tests/integration_tests/old_version_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..1abfbd9d5971e95141c73a147fc73582c2bc7cda
--- /dev/null
+++ b/tests/integration_tests/old_version_test.py
@@ -0,0 +1,20 @@
+import pytest
+import json
+import sys
+
+from tests import PROJECT_DIR, TESTDATA
+from utils import output_of
+
+MYTH = str(PROJECT_DIR / "myth")
+test_data = (
+    ("old_origin.sol", 1),
+    ("old_version.sol", 2),
+)
+
+
+@pytest.mark.parametrize("file_name, issues", test_data)
+def test_analysis_old(file_name, issues):
+    file = str(TESTDATA / "input_contracts" / file_name)
+    command = f"python3 {MYTH} analyze {file} -o jsonv2"
+    output = json.loads(output_of(command))
+    assert len(output[0]["issues"]) >= issues
diff --git a/tests/integration_tests/parallel_test.py b/tests/integration_tests/parallel_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..898d1dd79d39cd636d478feba4009ec4f4904048
--- /dev/null
+++ b/tests/integration_tests/parallel_test.py
@@ -0,0 +1,16 @@
+from subprocess import Popen, PIPE
+from tests import PROJECT_DIR, TESTDATA
+import json
+
+MYTH = str(PROJECT_DIR / "myth")
+
+
+def test_parallel():
+
+    test_file = str(TESTDATA / "input_contracts" / "origin.sol")
+    program = f"python3 {MYTH} a {test_file} --solv 0.5.0 -o json"
+    processes = [Popen(program, stdout=PIPE, shell=True) for i in range(30)]
+    for p in processes:
+        out, err = p.communicate()
+        json_output = json.loads(out.decode("utf-8"))
+        assert json_output["success"] == True
diff --git a/tests/integration_tests/safe_functions_test.py b/tests/integration_tests/safe_functions_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..eabfd179ea5672ecd32325e6dbc8e064a3666d6b
--- /dev/null
+++ b/tests/integration_tests/safe_functions_test.py
@@ -0,0 +1,51 @@
+import pytest
+import json
+import sys
+
+from utils import output_of
+from tests import PROJECT_DIR, TESTDATA
+
+
+MYTH = str(PROJECT_DIR / "myth")
+test_data = (
+    ("suicide.sol", [], "0.5.0"),
+    ("overflow.sol", ["balanceOf(address)", "totalSupply()"], "0.5.0"),
+    (
+        "ether_send.sol",
+        [
+            "crowdfunding()",
+            "withdrawfunds()",
+            "owner()",
+            "balances(address)",
+            "getBalance()",
+        ],
+        "0.5.0",
+    ),
+)
+
+bytes_test_data = (
+    ("suicide.sol.o", []),
+    ("overflow.sol.o", ["balanceOf(address)", "totalSupply()"]),
+    (
+        "ether_send.sol.o",
+        ["crowdfunding()", "withdrawfunds()", "owner()", "balances(address)"],
+    ),
+)
+
+
+@pytest.mark.parametrize("file_name, safe_funcs, version", test_data)
+def test_analysis(file_name, safe_funcs, version):
+    file = str(TESTDATA / "input_contracts" / file_name)
+    command = f"python3 {MYTH} safe-functions {file} --solv {version}"
+    output = output_of(command)
+    assert f"{len(safe_funcs)} functions are deemed safe in this contract" in output
+    for func in safe_funcs:
+        assert func in output
+
+
+@pytest.mark.parametrize("file_name, safe_funcs", bytes_test_data)
+def test_bytecode_analysis(file_name, safe_funcs):
+    file = str(TESTDATA / "inputs" / file_name)
+    command = f"python3 {MYTH} safe-functions --bin-runtime -f {file}"
+    output = output_of(command)
+    assert f"{len(safe_funcs)} functions are deemed safe in this contract" in output
diff --git a/tests/integration_tests/solc_settings_test.py b/tests/integration_tests/solc_settings_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..0478290a658a919f14789f0ce4a2cfb64b0c722a
--- /dev/null
+++ b/tests/integration_tests/solc_settings_test.py
@@ -0,0 +1,50 @@
+import pytest
+import json
+import sys
+
+from subprocess import check_output, STDOUT
+from tests import PROJECT_DIR, TESTDATA
+
+MYTH = str(PROJECT_DIR / "myth")
+
+
+def test_positive_solc_settings():
+    file_dir = str(TESTDATA / "json_test_dir" / "dir_a")
+    json_file_path = str(TESTDATA / "json_test_dir" / "test_file.json")
+    file_path = file_dir + "/input_file.sol"
+
+    command = f"cd {file_dir} && python3 {MYTH} analyze {file_path} --solc-json {json_file_path} --solv 0.8.0"
+    output = check_output(command, shell=True, stderr=STDOUT).decode("UTF-8")
+    assert "The analysis was completed successfully" in output
+
+
+def test_positive_solc_args():
+    base_path = str(TESTDATA)
+    file_dir = str(TESTDATA / "json_test_dir" / "dir_a")
+    json_file_path = str(TESTDATA / "json_test_dir" / "test_file.json")
+    file_path = file_dir + "/input_file_args.sol"
+
+    command = f"""cd {file_dir} && python3 {MYTH} analyze {file_path} --solc-args "--allow-paths {base_path}" --solv 0.8.0"""
+    output = check_output(command, shell=True, stderr=STDOUT).decode("UTF-8")
+    assert "The analysis was completed successfully" in output
+
+
+def test_neg_optimizer_solc_settings():
+    file_dir = str(TESTDATA / "json_test_dir" / "dir_a")
+    json_file_path = str(TESTDATA / "json_test_dir" / "test_file_disable.json")
+    file_path = file_dir + "/input_file.sol"
+
+    command = f"cd {file_dir} && python3 {MYTH} analyze {file_path} --solc-json {json_file_path} --solv 0.8.0"
+    output = check_output(command, shell=True, stderr=STDOUT).decode("UTF-8")
+    assert "Stack too deep when compiling inline assembly" in output
+
+
+def test_negative_solc_settings():
+    file_path = str(TESTDATA / "json_test_dir" / "dir_a" / "input_file.sol")
+
+    command = f"python3 {MYTH} analyze {file_path} --solv 0.8.0"
+    output = check_output(command, shell=True, stderr=STDOUT).decode("UTF-8")
+    assert (
+        """ParserError: Source "@openzeppelin/contracts/token/PRC20/PRC20.sol"""
+        in output
+    )
diff --git a/tests/integration_tests/src_mapping_test.py b/tests/integration_tests/src_mapping_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..57186ec823ccffd4632de30e70e20024129862a3
--- /dev/null
+++ b/tests/integration_tests/src_mapping_test.py
@@ -0,0 +1,17 @@
+import pytest
+import json
+import sys
+
+from subprocess import STDOUT
+from tests import PROJECT_DIR, TESTDATA
+from utils import output_of
+
+MYTH = str(PROJECT_DIR / "myth")
+
+
+def test_positive_solc_settings():
+    file_path = str(TESTDATA / "input_contracts" / "destruct_crlf.sol")
+
+    command = f"python3 {MYTH} analyze {file_path} --solv 0.5.0"
+    output = output_of(command, stderr=STDOUT)
+    assert "selfdestruct(addr)" in output
diff --git a/tests/integration_tests/utils.py b/tests/integration_tests/utils.py
new file mode 100644
index 0000000000000000000000000000000000000000..a4bf28b4f22b51335d87a544ea1ca5d51e7c79b4
--- /dev/null
+++ b/tests/integration_tests/utils.py
@@ -0,0 +1,13 @@
+from subprocess import check_output, CalledProcessError
+
+
+def output_of(command, stderr=None):
+    """
+
+    :param command:
+    :return:
+    """
+    try:
+        return check_output(command, shell=True, stderr=stderr).decode("UTF-8")
+    except CalledProcessError as exc:
+        return exc.output.decode("UTF-8")
diff --git a/tests/integration_tests/version_test.py b/tests/integration_tests/version_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..6b00b3c6ac5fd3832b4aa25d903373a084727628
--- /dev/null
+++ b/tests/integration_tests/version_test.py
@@ -0,0 +1,37 @@
+import pytest
+import json
+import sys
+
+from tests import PROJECT_DIR, TESTDATA
+from utils import output_of
+
+MYTH = str(PROJECT_DIR / "myth")
+test_data = (
+    ("version_contract.sol", "v0.7.0", True),
+    ("version_contract.sol", "v0.8.0", False),
+    ("version_contract_0.8.0.sol", None, False),
+    ("version_contract_0.7.0.sol", None, True),
+    ("version_chaos.sol", None, True),
+    ("version_2.sol", None, True),
+    ("version_3.sol", None, True),
+    ("version_patch.sol", None, False),
+    ("integer_edge_case.sol", None, True),
+    ("integer_edge_case.sol", "v0.8.19", True),
+)
+
+
+@pytest.mark.parametrize("file_name, version, has_overflow", test_data)
+def test_analysis(file_name, version, has_overflow):
+    file = str(TESTDATA / "input_contracts" / file_name)
+    if version:
+        command = f"python3 {MYTH} analyze {file} --solv {version}"
+    else:
+        command = f"python3 {MYTH} analyze {file}"
+    output = output_of(command)
+    if has_overflow:
+        assert f"SWC ID: 101" in output
+    else:
+        assert (
+            "The analysis was completed successfully. No issues were detected."
+            in output
+        )
diff --git a/tests/laser/Precompiles/blake2_test.py b/tests/laser/Precompiles/blake2_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..5f400e38fe4bc62f927ad14535242884195c9199
--- /dev/null
+++ b/tests/laser/Precompiles/blake2_test.py
@@ -0,0 +1,42 @@
+import pytest
+from mythril.laser.ethereum.natives import blake2b_fcompress
+
+# Test cases taken from https://eips.ethereum.org/EIPS/eip-152.
+# One of the test case is expected to take a few hrs so I ignored it
+@pytest.mark.parametrize(
+    "input_hex, expected_result",
+    (
+        ("", ""),
+        (
+            "00000c48c9bdf267e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa5d182e6ad7f520e511f6c3e2b8c68059b6bbd41fbabd9831f79217e1319cde05b61626300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000001",  # noqa: E501
+            "",
+        ),
+        (
+            "000000000c48c9bdf267e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa5d182e6ad7f520e511f6c3e2b8c68059b6bbd41fbabd9831f79217e1319cde05b61626300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000001",  # noqa: E501
+            "",
+        ),
+        (
+            "0000000c48c9bdf267e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa5d182e6ad7f520e511f6c3e2b8c68059b6bbd41fbabd9831f79217e1319cde05b61626300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000002",  # noqa: E501
+            "",
+        ),
+        (
+            "0000000048c9bdf267e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa5d182e6ad7f520e511f6c3e2b8c68059b6bbd41fbabd9831f79217e1319cde05b61626300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000001",  # noqa: E501
+            "08c9bcf367e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa5d282e6ad7f520e511f6c3e2b8c68059b9442be0454267ce079217e1319cde05b",  # noqa: E501
+        ),
+        (
+            "0000000c48c9bdf267e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa5d182e6ad7f520e511f6c3e2b8c68059b6bbd41fbabd9831f79217e1319cde05b61626300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000001",  # noqa: E501
+            "ba80a53f981c4d0d6a2797b69f12f6e94c212f14685ac4b74b12bb6fdbffa2d17d87c5392aab792dc252d5de4533cc9518d38aa8dbf1925ab92386edd4009923",  # noqa: E501
+        ),
+        (
+            "0000000c48c9bdf267e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa5d182e6ad7f520e511f6c3e2b8c68059b6bbd41fbabd9831f79217e1319cde05b61626300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000",  # noqa: E501
+            "75ab69d3190a562c51aef8d88f1c2775876944407270c42c9844252c26d2875298743e7f6d5ea2f2d3e8d226039cd31b4e426ac4f2d3d666a610c2116fde4735",  # noqa: E501
+        ),
+        (
+            "0000000148c9bdf267e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa5d182e6ad7f520e511f6c3e2b8c68059b6bbd41fbabd9831f79217e1319cde05b61626300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000001",  # noqa: E501
+            "b63a380cb2897d521994a85234ee2c181b5f844d2c624c002677e9703449d2fba551b3a8333bcdf5f2f7e08993d53923de3d64fcc68c034e717b9293fed7a421",  # noqa: E501
+        ),
+    ),
+)
+def test_blake2(input_hex, expected_result):
+    input_hex = bytearray.fromhex(input_hex)
+    assert blake2b_fcompress(input_hex) == list(bytearray.fromhex(expected_result))
diff --git a/tests/laser/Precompiles/ec_add_test.py b/tests/laser/Precompiles/ec_add_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..4ede2cf06eb6346a0b256726a5231935a7111c32
--- /dev/null
+++ b/tests/laser/Precompiles/ec_add_test.py
@@ -0,0 +1,27 @@
+from mock import patch
+from eth_utils import decode_hex
+from mythril.laser.ethereum.natives import ec_add
+from py_ecc.optimized_bn128 import FQ
+
+VECTOR_A = decode_hex(
+    "0000000000000000000000000000000000000000000000000000000000000001"
+    "0000000000000000000000000000000000000000000000000000000000000020"
+    "0000000000000000000000000000000000000000000000000000000000000020"
+    "03"
+    "fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2e"
+    "fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"
+)
+
+
+def test_ec_add_sanity():
+    assert ec_add(VECTOR_A) == []
+
+
+@patch("mythril.laser.ethereum.natives.validate_point", return_value=1)
+@patch("mythril.laser.ethereum.natives.bn128.add", return_value=1)
+@patch("mythril.laser.ethereum.natives.bn128.normalize")
+def test_ec_add(f1, f2, f3):
+    FQ.fielf_modulus = 128
+    a = FQ(val=1)
+    f1.return_value = (a, a)
+    assert ec_add(VECTOR_A) == ([0] * 31 + [1]) * 2
diff --git a/tests/laser/Precompiles/ecrecover_test.py b/tests/laser/Precompiles/ecrecover_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..1fa7991103dd105676a69947bb26d0aac42af724
--- /dev/null
+++ b/tests/laser/Precompiles/ecrecover_test.py
@@ -0,0 +1,67 @@
+import pytest
+
+from mock import patch
+from eth_utils import decode_hex
+from mythril.laser.ethereum.natives import ecrecover, NativeContractException
+from mythril.laser.smt import symbol_factory
+
+msg = b"\x6b\x8d\x2c\x81\xb1\x1b\x2d\x69\x95\x28\xdd\xe4\x88\xdb\xdf\x2f\x94\x29\x3d\x0d\x33\xc3\x2e\x34\x7f\x25\x5f\xa4\xa6\xc1\xf0\xa9"
+v = b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c"
+r = b"\x53\x56\x92\x27\x4f\x15\x24\x34\x00\x2a\x7c\x4c\x7d\x7c\xd0\x16\xea\x3e\x2d\x70\x2f\x2d\x2f\xd5\xb3\x32\x64\x6a\x9e\x40\x9a\x6b"
+s = b"\x1f\x59\x24\xf5\x9c\x6d\x77\x66\xa6\x93\x17\xa3\xdf\x72\x9d\x8b\x61\x3c\x67\xaa\xf2\xfe\x06\x13\x39\x8b\x9f\x94\x4b\x98\x8e\xbd"
+
+GOOD_DATA = list(msg + v + r + s)
+
+
+@pytest.mark.parametrize(
+    "input_list, expected_result",
+    (
+        ([], []),
+        ([10, 20], []),
+        (
+            GOOD_DATA,
+            [
+                0,
+                0,
+                0,
+                0,
+                0,
+                0,
+                0,
+                0,
+                0,
+                0,
+                0,
+                0,
+                131,
+                23,
+                8,
+                48,
+                142,
+                77,
+                185,
+                107,
+                254,
+                47,
+                229,
+                79,
+                224,
+                43,
+                181,
+                99,
+                36,
+                171,
+                166,
+                119,
+            ],
+        ),
+    ),
+)
+def test_ecrecover(input_list, expected_result):
+    assert ecrecover(input_list) == expected_result
+
+
+def test_ecrecover_symbol():
+    input_list = ["bab", symbol_factory.BitVecSym("name", 256)]
+    with pytest.raises(NativeContractException):
+        ecrecover(input_list)
diff --git a/tests/laser/Precompiles/elliptic_curves_test.py b/tests/laser/Precompiles/elliptic_curves_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..28908f58d5ecf2dfc46a3ebed6cea22a9304cd7d
--- /dev/null
+++ b/tests/laser/Precompiles/elliptic_curves_test.py
@@ -0,0 +1,35 @@
+from mock import patch
+from mythril.laser.ethereum.natives import ec_pair
+from py_ecc.optimized_bn128 import FQ
+
+
+def test_ec_pair_192_check():
+    vec_c = [0] * 100
+    assert ec_pair(vec_c) == []
+
+
+@patch("mythril.laser.ethereum.natives.validate_point", return_value=1)
+@patch("mythril.laser.ethereum.natives.bn128.is_on_curve", return_value=True)
+@patch("mythril.laser.ethereum.natives.bn128.pairing", return_value=1)
+@patch("mythril.laser.ethereum.natives.bn128.normalize")
+def test_ec_pair(f1, f2, f3, f4):
+    FQ.fielf_modulus = 100
+    a = FQ(val=1)
+    f1.return_value = (a, a)
+    vec_c = [0] * 192
+    assert ec_pair(vec_c) == [0] * 31 + [1]
+
+
+@patch("mythril.laser.ethereum.natives.validate_point", return_value=False)
+def test_ec_pair_point_validation_failure(f1):
+    vec_c = [0] * 192
+    assert ec_pair(vec_c) == []
+
+
+@patch("mythril.laser.ethereum.natives.validate_point", return_value=1)
+def test_ec_pair_field_exceed_mod(f1):
+    FQ.fielf_modulus = 100
+    a = FQ(val=1)
+    f1.return_value = (a, a)
+    vec_c = [10] * 192
+    assert ec_pair(vec_c) == []
diff --git a/tests/laser/Precompiles/elliptic_mul_test.py b/tests/laser/Precompiles/elliptic_mul_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..c3b3be9d6bab55037b57d7108a65db7f93651f4f
--- /dev/null
+++ b/tests/laser/Precompiles/elliptic_mul_test.py
@@ -0,0 +1,27 @@
+from mock import patch
+from eth_utils import decode_hex
+from mythril.laser.ethereum.natives import ec_mul
+from py_ecc.optimized_bn128 import FQ
+
+VECTOR_A = decode_hex(
+    "0000000000000000000000000000000000000000000000000000000000000001"
+    "0000000000000000000000000000000000000000000000000000000000000020"
+    "0000000000000000000000000000000000000000000000000000000000000020"
+    "03"
+    "fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2e"
+    "fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"
+)
+
+
+@patch("mythril.laser.ethereum.natives.validate_point", return_value=1)
+@patch("mythril.laser.ethereum.natives.bn128.multiply", return_value=1)
+@patch("mythril.laser.ethereum.natives.bn128.normalize")
+def test_ec_mul(f1, f2, f3):
+    FQ.fielf_modulus = 128
+    a = FQ(val=1)
+    f1.return_value = (a, a)
+    assert ec_mul(VECTOR_A) == ([0] * 31 + [1]) * 2
+
+
+def test_ec_mul_validation_failure():
+    assert ec_mul(VECTOR_A) == []
diff --git a/tests/laser/Precompiles/identity_test.py b/tests/laser/Precompiles/identity_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..ded2b5c85b56604a692ad26317037cb5a90b13f4
--- /dev/null
+++ b/tests/laser/Precompiles/identity_test.py
@@ -0,0 +1,13 @@
+import pytest
+
+from mock import patch
+from eth_utils import decode_hex
+from mythril.laser.ethereum.natives import identity, NativeContractException
+from mythril.laser.smt import symbol_factory
+
+
+@pytest.mark.parametrize(
+    "input_list, expected_result", (([], []), ([10, 20], [10, 20]))
+)
+def test_identity(input_list, expected_result):
+    assert identity(input_list) == expected_result
diff --git a/tests/laser/Precompiles/mod_exp_test.py b/tests/laser/Precompiles/mod_exp_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..2cc6a49d5de4a569d88bdc6e26b30e160f8722eb
--- /dev/null
+++ b/tests/laser/Precompiles/mod_exp_test.py
@@ -0,0 +1,60 @@
+import pytest
+from eth_utils import decode_hex, big_endian_to_int
+from mythril.laser.ethereum.natives import mod_exp
+
+
+EIP198_VECTOR_A = decode_hex(
+    "0000000000000000000000000000000000000000000000000000000000000001"
+    "0000000000000000000000000000000000000000000000000000000000000020"
+    "0000000000000000000000000000000000000000000000000000000000000020"
+    "03"
+    "fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2e"
+    "fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"
+)
+
+EIP198_VECTOR_B = decode_hex(
+    "0000000000000000000000000000000000000000000000000000000000000000"
+    "0000000000000000000000000000000000000000000000000000000000000020"
+    "0000000000000000000000000000000000000000000000000000000000000020"
+    "fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2e"
+    "fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"
+)
+
+EIP198_VECTOR_C = decode_hex(
+    "0000000000000000000000000000000000000000000000000000000000000001"
+    "0000000000000000000000000000000000000000000000000000000000000002"
+    "0000000000000000000000000000000000000000000000000000000000000020"
+    "03"
+    "ffff"
+    "8000000000000000000000000000000000000000000000000000000000000000"
+    "07"
+)
+
+EIP198_VECTOR_D = decode_hex(
+    "0000000000000000000000000000000000000000000000000000000000000001"
+    "0000000000000000000000000000000000000000000000000000000000000002"
+    "0000000000000000000000000000000000000000000000000000000000000020"
+    "03"
+    "ffff"
+    "80"
+)
+
+
+@pytest.mark.parametrize(
+    "data,expected",
+    (
+        (EIP198_VECTOR_A, 1),
+        (EIP198_VECTOR_B, 0),
+        (
+            EIP198_VECTOR_C,
+            26689440342447178617115869845918039756797228267049433585260346420242739014315,
+        ),
+        (
+            EIP198_VECTOR_D,
+            26689440342447178617115869845918039756797228267049433585260346420242739014315,
+        ),
+    ),
+)
+def test_modexp_result(data, expected):
+    actual = mod_exp(data)
+    assert big_endian_to_int(actual) == expected
diff --git a/tests/laser/Precompiles/ripemd_test.py b/tests/laser/Precompiles/ripemd_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..7f18ff5fb67608d70fbac47c57b2a2d7179a4062
--- /dev/null
+++ b/tests/laser/Precompiles/ripemd_test.py
@@ -0,0 +1,95 @@
+import pytest
+
+from mock import patch
+from eth_utils import decode_hex
+from mythril.laser.ethereum.natives import ripemd160, NativeContractException
+from mythril.laser.smt import symbol_factory
+
+
+@pytest.mark.parametrize(
+    "input_list, expected_result",
+    (
+        (
+            [],
+            [
+                0,
+                0,
+                0,
+                0,
+                0,
+                0,
+                0,
+                0,
+                0,
+                0,
+                0,
+                0,
+                156,
+                17,
+                133,
+                165,
+                197,
+                233,
+                252,
+                84,
+                97,
+                40,
+                8,
+                151,
+                126,
+                232,
+                245,
+                72,
+                178,
+                37,
+                141,
+                49,
+            ],
+        ),
+        (
+            [10, 20],
+            [
+                0,
+                0,
+                0,
+                0,
+                0,
+                0,
+                0,
+                0,
+                0,
+                0,
+                0,
+                0,
+                92,
+                161,
+                226,
+                233,
+                76,
+                11,
+                228,
+                69,
+                224,
+                14,
+                89,
+                120,
+                246,
+                184,
+                197,
+                182,
+                35,
+                215,
+                51,
+                130,
+            ],
+        ),
+    ),
+)
+def test_ripemd160(input_list, expected_result):
+    assert ripemd160(input_list) == expected_result
+
+
+def test_ripemd160_symbol():
+    input_list = ["bab", symbol_factory.BitVecSym("name", 256)]
+    with pytest.raises(NativeContractException):
+        ripemd160(input_list)
diff --git a/tests/laser/Precompiles/sha256_test.py b/tests/laser/Precompiles/sha256_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..f03e98c68878116e8d37890d4116f189d8d28711
--- /dev/null
+++ b/tests/laser/Precompiles/sha256_test.py
@@ -0,0 +1,95 @@
+import pytest
+
+from mock import patch
+from eth_utils import decode_hex
+from mythril.laser.ethereum.natives import sha256, NativeContractException
+from mythril.laser.smt import symbol_factory
+
+
+@pytest.mark.parametrize(
+    "input_list, expected_result",
+    (
+        (
+            [],
+            [
+                227,
+                176,
+                196,
+                66,
+                152,
+                252,
+                28,
+                20,
+                154,
+                251,
+                244,
+                200,
+                153,
+                111,
+                185,
+                36,
+                39,
+                174,
+                65,
+                228,
+                100,
+                155,
+                147,
+                76,
+                164,
+                149,
+                153,
+                27,
+                120,
+                82,
+                184,
+                85,
+            ],
+        ),
+        (
+            [10, 20],
+            [
+                195,
+                48,
+                250,
+                117,
+                58,
+                197,
+                190,
+                59,
+                143,
+                203,
+                82,
+                116,
+                80,
+                98,
+                247,
+                129,
+                204,
+                158,
+                15,
+                79,
+                169,
+                129,
+                162,
+                189,
+                6,
+                252,
+                185,
+                105,
+                53,
+                91,
+                148,
+                105,
+            ],
+        ),
+    ),
+)
+def test_sha256(input_list, expected_result):
+    assert sha256(input_list) == expected_result
+
+
+def test_sha_symbol():
+    input_list = ["bab", symbol_factory.BitVecSym("name", 256)]
+    with pytest.raises(NativeContractException):
+        sha256(input_list)
diff --git a/tests/laser/__init__.py b/tests/laser/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/tests/laser/evm_testsuite/VMTests/LICENSE b/tests/laser/evm_testsuite/VMTests/LICENSE
new file mode 100644
index 0000000000000000000000000000000000000000..65f52d6f57b0ec2759930e9f4d3ec6a803d30bcf
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/LICENSE
@@ -0,0 +1,7 @@
+Copyright 2014 Ethereum Foundation
+
+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.
diff --git a/tests/laser/evm_testsuite/VMTests/README.md b/tests/laser/evm_testsuite/VMTests/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..7801bc44d9bc0d2effbe72f90ed72615e26c8bd4
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/README.md
@@ -0,0 +1,4 @@
+Files found in this directory are taken from https://github.com/ethereum/tests, released under the 
+license LICENSE in the same directory as this file.
+
+All credit goes to the awesome people that made this!
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/add0.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/add0.json
new file mode 100644
index 0000000000000000000000000000000000000000..1ca74e7963891fb5aa454de617447fd8504cfab9
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/add0.json
@@ -0,0 +1,50 @@
+{
+    "add0": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/add0Filler.json",
+            "sourceHash": "8ffcccd596ff216a8304f822e302bd7b2abe3f7f7616928a2a0385d2cfdf01ac"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x013874",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/add1.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/add1.json
new file mode 100644
index 0000000000000000000000000000000000000000..46eb708a187add7639e052a3643d8d5a29da4d65
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/add1.json
@@ -0,0 +1,50 @@
+{
+    "add1": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/add1Filler.json",
+            "sourceHash": "36b138942544cd189bff05ff1694917ed4cef48760592536b2829f3e90d5850a"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60047fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x013874",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60047fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x03"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60047fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/add2.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/add2.json
new file mode 100644
index 0000000000000000000000000000000000000000..5fa47da6bd9d2613c01285e0f6cab56c61c21d7e
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/add2.json
@@ -0,0 +1,48 @@
+{
+    "add2": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/add2Filler.json",
+            "sourceHash": "c17fbe9e92877d5a60743ca4c172bba1060e20b08f9ee00ca0ccb6b72bac897f"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x01730c",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/add3.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/add3.json
new file mode 100644
index 0000000000000000000000000000000000000000..cdb1fdce6848dc2692e10d0436064650cb4486c5
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/add3.json
@@ -0,0 +1,48 @@
+{
+    "add3": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/add3Filler.json",
+            "sourceHash": "d64685dfa395fd7dc69e5883eaedaeece8217daff0ad658a083dc2f2fc870ef1"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x6000600001600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x01730c",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6000600001600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6000600001600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/add4.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/add4.json
new file mode 100644
index 0000000000000000000000000000000000000000..25cd18b1852a8fd6551fefcaeee0ffcb3cd7827b
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/add4.json
@@ -0,0 +1,48 @@
+{
+    "add4": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/add4Filler.json",
+            "sourceHash": "3b04e90121702949a56e656f4f895f5de3aed278fd3530eec4c52c378f41dcfa"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600101600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x01730c",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600101600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600101600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/addmod0.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/addmod0.json
new file mode 100644
index 0000000000000000000000000000000000000000..409b1c6e6e449c79159dfa9ebb72d819e3209846
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/addmod0.json
@@ -0,0 +1,50 @@
+{
+    "addmod0": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/addmod0Filler.json",
+            "sourceHash": "aba7a646dee5e90acf0c2257a986ff99d044f057de21667f2acec868f7d4b8eb"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60026002600108600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x01386c",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60026002600108600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x01"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60026002600108600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/addmod1.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/addmod1.json
new file mode 100644
index 0000000000000000000000000000000000000000..92b2f421258b88da47ac520f2178281d0d92bf36
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/addmod1.json
@@ -0,0 +1,50 @@
+{
+    "addmod1": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/addmod1Filler.json",
+            "sourceHash": "edf8071d0533dd82ff2fb34b4caab47db62aa7d918004d82630cd2b37ddcbc90"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60026002600003600160000308600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x013860",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60026002600003600160000308600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x01"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60026002600003600160000308600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/addmod1_overflow2.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/addmod1_overflow2.json
new file mode 100644
index 0000000000000000000000000000000000000000..d5219e65caa7cebae29e0d2b78ce742e0dc1ffd4
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/addmod1_overflow2.json
@@ -0,0 +1,48 @@
+{
+    "addmod1_overflow2": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/addmod1_overflow2Filler.json",
+            "sourceHash": "9029d29f6ad3ad30d1cae39fe98723bb400f9fab4562bd7898a0168a0f353a3f"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60056000600160000308600055",
+            "data": "0x",
+            "gas": "0x2710",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x136e",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60056000600160000308600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60056000600160000308600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/addmod1_overflow3.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/addmod1_overflow3.json
new file mode 100644
index 0000000000000000000000000000000000000000..f8cc65a21ee7d8f3f5550215f0fa46a923cf3527
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/addmod1_overflow3.json
@@ -0,0 +1,50 @@
+{
+    "addmod1_overflow3": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/addmod1_overflow3Filler.json",
+            "sourceHash": "f51942005cbb182f759380c7c7fa43d9666d8ea095cc9ce0538e04c2ffc2dd03"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60056001600160000308600055",
+            "data": "0x",
+            "gas": "0x0f4240",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0ef406",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60056001600160000308600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x01"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60056001600160000308600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/addmod1_overflow4.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/addmod1_overflow4.json
new file mode 100644
index 0000000000000000000000000000000000000000..be0130e14dd3de0594aff9542c5cc64a3c4360b4
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/addmod1_overflow4.json
@@ -0,0 +1,50 @@
+{
+    "addmod1_overflow4": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/addmod1_overflow4Filler.json",
+            "sourceHash": "59184840928cfdb750aab06b0a42c30d4dc99a713f315239b1b6596ec9ef92c2"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60056002600160000308600055",
+            "data": "0x",
+            "gas": "0x0f4240",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0ef406",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60056002600160000308600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x02"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60056002600160000308600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/addmod1_overflowDiff.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/addmod1_overflowDiff.json
new file mode 100644
index 0000000000000000000000000000000000000000..b549fc510bbfcdb3cc96e283eedd5acbe43e1697
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/addmod1_overflowDiff.json
@@ -0,0 +1,50 @@
+{
+    "addmod1_overflowDiff": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/addmod1_overflowDiffFiller.json",
+            "sourceHash": "4836017c5969c3cc9e6fee8a3da1e2d81454d2880d10fadd146cdb8ca8b57273"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60056002600003600160000308600055",
+            "data": "0x",
+            "gas": "0x0f4240",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0ef400",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60056002600003600160000308600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x04"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60056002600003600160000308600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/addmod2.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/addmod2.json
new file mode 100644
index 0000000000000000000000000000000000000000..09bda8de4357e69fcdb42be6289aa053ad2e99c1
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/addmod2.json
@@ -0,0 +1,50 @@
+{
+    "addmod2": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/addmod2Filler.json",
+            "sourceHash": "22a6b0713565860ede4858c04c85d823cc24829962730303aeb7bacf48e6e2af"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60036001600660000308600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x013866",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60036001600660000308600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x02"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60036001600660000308600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/addmod2_0.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/addmod2_0.json
new file mode 100644
index 0000000000000000000000000000000000000000..559984bc278a7e680d5b48298c1173f7bf9cf4e9
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/addmod2_0.json
@@ -0,0 +1,48 @@
+{
+    "addmod2_0": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/addmod2_0Filler.json",
+            "sourceHash": "dc557aacebaa46b88f072e79ac09df8a576c1551f7ce3381bc22aa33a5fdfa7b"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60036001600660000308600360056000030714600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0172ea",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60036001600660000308600360056000030714600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60036001600660000308600360056000030714600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/addmod2_1.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/addmod2_1.json
new file mode 100644
index 0000000000000000000000000000000000000000..6babefb7a2815a6905a0eeea11ffd13dccd2a48a
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/addmod2_1.json
@@ -0,0 +1,50 @@
+{
+    "addmod2_1": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/addmod2_1Filler.json",
+            "sourceHash": "f5227cd573f551a66a89ca6ef0075d999fa0dfcd1b6cc162deba46db3fc957ae"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60036001600660000308600360056000030614600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x013852",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60036001600660000308600360056000030614600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x01"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60036001600660000308600360056000030614600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/addmod3.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/addmod3.json
new file mode 100644
index 0000000000000000000000000000000000000000..9827f1b270fc27d2ed95a536775a56b92774004b
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/addmod3.json
@@ -0,0 +1,50 @@
+{
+    "addmod3": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/addmod3Filler.json",
+            "sourceHash": "98f42c19c4c02edb27ddbe15d425fa031f3b79998b3fcfce32ecbb070dca20f7"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60036000036001600408600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x013866",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60036000036001600408600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x05"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60036000036001600408600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/addmod3_0.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/addmod3_0.json
new file mode 100644
index 0000000000000000000000000000000000000000..a77f34b11b5cb7acffd23c11f973a4b382a2a60a
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/addmod3_0.json
@@ -0,0 +1,48 @@
+{
+    "addmod3_0": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/addmod3_0Filler.json",
+            "sourceHash": "20e873a721f9d6c9a6808a017a7ddb48538f6e24e0ea5bb2e1e0d616aee00b1e"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60026003600003600160040814600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0172f8",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60026003600003600160040814600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60026003600003600160040814600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/addmodBigIntCast.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/addmodBigIntCast.json
new file mode 100644
index 0000000000000000000000000000000000000000..9e1faaf8e91439681c412fc3891e59202c6a3d75
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/addmodBigIntCast.json
@@ -0,0 +1,50 @@
+{
+    "addmodBigIntCast": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/addmodBigIntCastFiller.json",
+            "sourceHash": "6425ea71989061d67059c0ff21a02ae588b5a1b7d69acab1136d8e5cd3341349"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x600560017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff08600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x01386c",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x600560017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff08600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x01"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x600560017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff08600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/addmodDivByZero.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/addmodDivByZero.json
new file mode 100644
index 0000000000000000000000000000000000000000..cfd899e97e476e76eef026b903e5d47467261eba
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/addmodDivByZero.json
@@ -0,0 +1,48 @@
+{
+    "addmodDivByZero": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/addmodDivByZeroFiller.json",
+            "sourceHash": "ff8897ddc6eff1209bf12094e82e622ac4a2ecd6ce84ffdac4e4b1bf6c0a7bda"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60006001600408600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x017304",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60006001600408600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60006001600408600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/addmodDivByZero1.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/addmodDivByZero1.json
new file mode 100644
index 0000000000000000000000000000000000000000..5b2ba518f581f5973eb36ed9e821168e3e534867
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/addmodDivByZero1.json
@@ -0,0 +1,48 @@
+{
+    "addmodDivByZero1": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/addmodDivByZero1Filler.json",
+            "sourceHash": "38ae4bc3d451120dcd38c38ede77bde9e767c64e25025a459233261ba101b05f"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60006001600008600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x017304",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60006001600008600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60006001600008600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/addmodDivByZero2.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/addmodDivByZero2.json
new file mode 100644
index 0000000000000000000000000000000000000000..a75c5aba0873df818270df6000f71d74d15ea5fa
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/addmodDivByZero2.json
@@ -0,0 +1,48 @@
+{
+    "addmodDivByZero2": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/addmodDivByZero2Filler.json",
+            "sourceHash": "433f565d64a9730f98cd80b4ae1510d496eba6a3a311c85c2d12394f3edd8cf3"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60006000600108600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x017304",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60006000600108600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60006000600108600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/addmodDivByZero3.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/addmodDivByZero3.json
new file mode 100644
index 0000000000000000000000000000000000000000..19f4fc1ca58daf48a8f4630cc345dbd33fbcda1a
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/addmodDivByZero3.json
@@ -0,0 +1,50 @@
+{
+    "addmodDivByZero3": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/addmodDivByZero3Filler.json",
+            "sourceHash": "f10de49a80343bfa59231702b9a2f7c500d1c000693005c39a82049ed55b62f8"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60016000600060000803600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x013866",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60016000600060000803600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60016000600060000803600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/arith1.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/arith1.json
new file mode 100644
index 0000000000000000000000000000000000000000..1f643d9d5c77f52600617944f5fec2cf38323dd6
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/arith1.json
@@ -0,0 +1,48 @@
+{
+    "arith1": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/arith1Filler.json",
+            "sourceHash": "26a824545a0d305ff19c0483bf52a65822c1df521fac97eac52902de884f2a5f"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x989680",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x6001600190016007026005016002900460049060016021900560150160030260059007600303600960110a60005260086000f3",
+            "data": "0x",
+            "gas": "0x0f4240",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0f41bf",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x0000000000000000",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6001600190016007026005016002900460049060016021900560150160030260059007600303600960110a60005260086000f3",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6001600190016007026005016002900460049060016021900560150160030260059007600303600960110a60005260086000f3",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/div1.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/div1.json
new file mode 100644
index 0000000000000000000000000000000000000000..d2925fb270f5ef0bcbbc692930bfc0d835122a5e
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/div1.json
@@ -0,0 +1,48 @@
+{
+    "div1": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/div1Filler.json",
+            "sourceHash": "159c0277fb5839d12de6e134cafe963c3b66c577959ad6c760d2c76af7f896c5"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60027ffedcba9876543210fedcba9876543210fedcba9876543210fedcba98765432100460005260206000f3",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x018686",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x7f6e5d4c3b2a19087f6e5d4c3b2a19087f6e5d4c3b2a19087f6e5d4c3b2a1908",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60027ffedcba9876543210fedcba9876543210fedcba9876543210fedcba98765432100460005260206000f3",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60027ffedcba9876543210fedcba9876543210fedcba9876543210fedcba98765432100460005260206000f3",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/divBoostBug.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/divBoostBug.json
new file mode 100644
index 0000000000000000000000000000000000000000..ccea6ffffb35d1f136223c00e645fbe773be6818
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/divBoostBug.json
@@ -0,0 +1,50 @@
+{
+    "divBoostBug": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/divBoostBugFiller.json",
+            "sourceHash": "b572d1a3d37f2ac6255b64338654b664ae1e27b5da5a8ce7e337812f0ae357f5"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x7f01dae6076b981dae6076b981dae6076b981dae6076b981dae6076b981dae60777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffba04600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x013872",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x7f01dae6076b981dae6076b981dae6076b981dae6076b981dae6076b981dae60777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffba04600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x89"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x7f01dae6076b981dae6076b981dae6076b981dae6076b981dae6076b981dae60777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffba04600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/divByNonZero0.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/divByNonZero0.json
new file mode 100644
index 0000000000000000000000000000000000000000..c0ce10e337fdf51fcdceb902f19ea669a37de663
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/divByNonZero0.json
@@ -0,0 +1,50 @@
+{
+    "divByNonZero0": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/divByNonZero0Filler.json",
+            "sourceHash": "de10028af4d71ec4eab4f19099b395e5a8ee65b3797507c5100574344f432a41"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x6002600504600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x013872",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6002600504600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x02"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6002600504600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/divByNonZero1.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/divByNonZero1.json
new file mode 100644
index 0000000000000000000000000000000000000000..5bd0d10f82a3dea93ca4fa6e26f91a66b38fa23b
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/divByNonZero1.json
@@ -0,0 +1,48 @@
+{
+    "divByNonZero1": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/divByNonZero1Filler.json",
+            "sourceHash": "a10288727a8cd42937137db0964c54dfeb67031156d9e89c762c1ccf5400f46d"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x6018601704600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x01730a",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6018601704600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6018601704600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/divByNonZero2.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/divByNonZero2.json
new file mode 100644
index 0000000000000000000000000000000000000000..57fc77bfea551e9b97c44b517848d173767be56b
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/divByNonZero2.json
@@ -0,0 +1,48 @@
+{
+    "divByNonZero2": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/divByNonZero2Filler.json",
+            "sourceHash": "09b0a23cd19a08af2b97b1348b9c15ad0668dbb7f1303fc8c188edbfc532163c"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x6018600004600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x01730a",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6018600004600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6018600004600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/divByNonZero3.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/divByNonZero3.json
new file mode 100644
index 0000000000000000000000000000000000000000..3b8f04dc1a457b0ebf7a474e7553ee2f88bd0556
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/divByNonZero3.json
@@ -0,0 +1,50 @@
+{
+    "divByNonZero3": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/divByNonZero3Filler.json",
+            "sourceHash": "2421e4d08c24171e953eeb5b7e1e6f1db9a16a8d3160d4ab082401a379bcda37"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x6001600104600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x013872",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6001600104600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x01"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6001600104600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/divByZero.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/divByZero.json
new file mode 100644
index 0000000000000000000000000000000000000000..281566d97c26678b657d367ca9701a682f463f6a
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/divByZero.json
@@ -0,0 +1,48 @@
+{
+    "divByZero": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/divByZeroFiller.json",
+            "sourceHash": "d08e0f0e1b8a688776ad0772dcb91f93ce5320d0e8e34723139d20b3358234e1"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x6000600204600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x01730a",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6000600204600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6000600204600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/divByZero_2.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/divByZero_2.json
new file mode 100644
index 0000000000000000000000000000000000000000..fe656deca0990f632563795450e5843f2abd5d51
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/divByZero_2.json
@@ -0,0 +1,50 @@
+{
+    "divByZero_2": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/divByZero_2Filler.json",
+            "sourceHash": "63a28c09a22266dc3c56fe10cf0542d7945ff53214deba17b511372c4d24fd29"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60076000600d0401600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x01386c",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60076000600d0401600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x07"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60076000600d0401600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/exp0.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/exp0.json
new file mode 100644
index 0000000000000000000000000000000000000000..e24df0e8926c710ab498e82dd1308b4a6f1416a4
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/exp0.json
@@ -0,0 +1,50 @@
+{
+    "exp0": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/exp0Filler.json",
+            "sourceHash": "d7bca8fc54c818174631d156150165cf8b3cb5b3275ee3f00aa651a9614a8b6b"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x600260020a600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x013863",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x600260020a600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x04"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x600260020a600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/exp1.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/exp1.json
new file mode 100644
index 0000000000000000000000000000000000000000..c35c2a19b26de7c981fb87aead53e50e4d66ece1
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/exp1.json
@@ -0,0 +1,50 @@
+{
+    "exp1": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/exp1Filler.json",
+            "sourceHash": "790225dd362e72d2c03d6fb70e8f3d1b07c27ba502d3e4968d0584342925cf78"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0a600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x01372d",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0a600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x01"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0a600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/exp2.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/exp2.json
new file mode 100644
index 0000000000000000000000000000000000000000..00a4b92042363f428f71ddd2e6ee68e449d5d801
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/exp2.json
@@ -0,0 +1,50 @@
+{
+    "exp2": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/exp2Filler.json",
+            "sourceHash": "048b0885d4cbf3735ed6d6ea4e70f6d2fcabf1ec0c797028859f0138485129c7"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x637fffffff637fffffff0a600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x013845",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x637fffffff637fffffff0a600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0xbc8cccccccc888888880000000aaaaaab00000000fffffffffffffff7fffffff"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x637fffffff637fffffff0a600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/exp3.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/exp3.json
new file mode 100644
index 0000000000000000000000000000000000000000..a360179f36acf5fb811eccdb4b0c79ae8b609160
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/exp3.json
@@ -0,0 +1,48 @@
+{
+    "exp3": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/exp3Filler.json",
+            "sourceHash": "0fb6a29eff8766b8b8e5d4bebd1bd26191382cf9a53fb082f318d835d3ef54ca"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x637fffffff60000a600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0172dd",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x637fffffff60000a600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x637fffffff60000a600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/exp4.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/exp4.json
new file mode 100644
index 0000000000000000000000000000000000000000..4cb75cb093ee6ff232b754adc4a30106bc210125
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/exp4.json
@@ -0,0 +1,50 @@
+{
+    "exp4": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/exp4Filler.json",
+            "sourceHash": "b0493347ef7099abaa8b086c34db3f90d32c3b1ba099799be4e6937f44707d84"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x6000637fffffff0a600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x01386d",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6000637fffffff0a600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x01"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6000637fffffff0a600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/exp5.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/exp5.json
new file mode 100644
index 0000000000000000000000000000000000000000..54dd5a3f37fb593c6eec4f88c98a5def1dfb8e78
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/exp5.json
@@ -0,0 +1,50 @@
+{
+    "exp5": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/exp5Filler.json",
+            "sourceHash": "050d2365266bd54b09698870bf65e32e3aaabd28ae1edaf8df7162fbb707e810"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60016101010a600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x013863",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60016101010a600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x0101"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60016101010a600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/exp6.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/exp6.json
new file mode 100644
index 0000000000000000000000000000000000000000..aab416e928c0acfe676202220732b0b5b53e61b0
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/exp6.json
@@ -0,0 +1,50 @@
+{
+    "exp6": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/exp6Filler.json",
+            "sourceHash": "4534de4b71ac08f103de5d9c76546ede7925f520b88f5dbadca3ece614f19101"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x61010160010a600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x013859",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x61010160010a600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x01"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x61010160010a600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/exp7.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/exp7.json
new file mode 100644
index 0000000000000000000000000000000000000000..30e0fdf32359d14385807b354956d10e93875181
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/exp7.json
@@ -0,0 +1,48 @@
+{
+    "exp7": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/exp7Filler.json",
+            "sourceHash": "caa58d4cf6deb6783a20c24ec41da247074d43a7038c9eca2ca0122f9c6a59f9"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x61010160020a600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0172f1",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x61010160020a600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x61010160020a600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/exp8.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/exp8.json
new file mode 100644
index 0000000000000000000000000000000000000000..d8e0ec5cf3dc0e02386772a80a18d33c40e42ee9
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/exp8.json
@@ -0,0 +1,50 @@
+{
+    "exp8": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/exp8Filler.json",
+            "sourceHash": "1cc9a393c6ceda35ec9afd4aca74145c1c244a0d4765ede3f473e0fd194ca595"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x600060000a600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x01386d",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x600060000a600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x01"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x600060000a600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_0.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_0.json
new file mode 100644
index 0000000000000000000000000000000000000000..7357f15a4cbd1a9d61084990721b04f29e74e001
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_0.json
@@ -0,0 +1,58 @@
+{
+    "expPowerOf256Of256_0": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_0Filler.json",
+            "sourceHash": "6863ca9c3ee1851b0b73bd28fd8f93247e10db38711c963874c5525fdde6e9a3"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x989680",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60006101000a6101000a600055600060ff0a6101000a60015560006101010a6101000a60025560006101000a60ff0a600355600060ff0a60ff0a60045560006101010a60ff0a60055560006101000a6101010a600655600060ff0a6101010a60075560006101010a6101010a600855",
+            "data": "0x",
+            "gas": "0x0f4240",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0c81a6",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60006101000a6101000a600055600060ff0a6101000a60015560006101010a6101000a60025560006101000a60ff0a600355600060ff0a60ff0a60045560006101010a60ff0a60055560006101000a6101010a600655600060ff0a6101010a60075560006101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x0100",
+                    "0x01": "0x0100",
+                    "0x02": "0x0100",
+                    "0x03": "0xff",
+                    "0x04": "0xff",
+                    "0x05": "0xff",
+                    "0x06": "0x0101",
+                    "0x07": "0x0101",
+                    "0x08": "0x0101"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60006101000a6101000a600055600060ff0a6101000a60015560006101010a6101000a60025560006101000a60ff0a600355600060ff0a60ff0a60045560006101010a60ff0a60055560006101000a6101010a600655600060ff0a6101010a60075560006101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_1.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_1.json
new file mode 100644
index 0000000000000000000000000000000000000000..11d370b9808aa7b3c7ee86cdcaba59adb3b2219e
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_1.json
@@ -0,0 +1,55 @@
+{
+    "expPowerOf256Of256_1": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_1Filler.json",
+            "sourceHash": "69cfec5346c375b71292c83f0077c8db86c8046a52aed0700f70628c5de03cf7"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x989680",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60016101000a6101000a600055600160ff0a6101000a60015560016101010a6101000a60025560016101000a60ff0a600355600160ff0a60ff0a60045560016101010a60ff0a60055560016101000a6101010a600655600160ff0a6101010a60075560016101010a6101010a600855",
+            "data": "0x",
+            "gas": "0x0f4240",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0d30d8",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60016101000a6101000a600055600160ff0a6101000a60015560016101010a6101000a60025560016101000a60ff0a600355600160ff0a60ff0a60045560016101010a60ff0a60055560016101000a6101010a600655600160ff0a6101010a60075560016101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {
+                    "0x03": "0x06c3acd330b959ad6efabce6d2d2125e73a88a65a9880d203dddf5957f7f0001",
+                    "0x04": "0x8f965a06da0ac41dcb3a34f1d8ab7d8fee620a94faa42c395997756b007ffeff",
+                    "0x05": "0xbce9265d88a053c18bc229ebff404c1534e1db43de85131da0179fe9ff8100ff",
+                    "0x06": "0x02b5e9d7a094c19f5ebdd4f2e618f859ed15e4f1f0351f286bf849eb7f810001",
+                    "0x07": "0xc73b7a6f68385c653a24993bb72eea0e4ba17470816ec658cf9c5bedfd81ff01",
+                    "0x08": "0xb89fc178355660fe1c92c7d8ff11524702fad6e2255447946442356b00810101"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60016101000a6101000a600055600160ff0a6101000a60015560016101010a6101000a60025560016101000a60ff0a600355600160ff0a60ff0a60045560016101010a60ff0a60055560016101000a6101010a600655600160ff0a6101010a60075560016101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_10.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_10.json
new file mode 100644
index 0000000000000000000000000000000000000000..332b960907f6eb2ccfd679450b7eab1f7f35f44d
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_10.json
@@ -0,0 +1,55 @@
+{
+    "expPowerOf256Of256_10": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_10Filler.json",
+            "sourceHash": "4b8da51eee6773daecfe22bd2067c03bc00a82f27934f7b8053636433008d2fe"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x989680",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x600a6101000a6101000a600055600a60ff0a6101000a600155600a6101010a6101000a600255600a6101000a60ff0a600355600a60ff0a60ff0a600455600a6101010a60ff0a600555600a6101000a6101010a600655600a60ff0a6101010a600755600a6101010a6101010a600855",
+            "data": "0x",
+            "gas": "0x0f4240",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0d2dae",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x600a6101000a6101000a600055600a60ff0a6101000a600155600a6101010a6101000a600255600a6101000a60ff0a600355600a60ff0a60ff0a600455600a6101010a60ff0a600555600a6101000a6101010a600655600a60ff0a6101010a600755600a6101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {
+                    "0x03": "0xfe0f60957dc223578a0298879ec55c33085514ff7f0000000000000000000001",
+                    "0x04": "0xc1ea45f348b5d351c4d8fe5c77da979cadc33d866acc42e981278896b1f600ff",
+                    "0x05": "0x56ddb29bca94fb986ac0a40188b3b53f3216b3559bd8324a77ea8bd8a80a00ff",
+                    "0x06": "0x2d49ff6b0bbe177ae9317000b68fb921f7aa6aff810000000000000000000001",
+                    "0x07": "0x185fa9eab94cfe3016b69657e83b23fd24cc6960218254231c3db627a7f60101",
+                    "0x08": "0xa7a0223829f26d6c635368034320563df4aa5eb62efc87a42bb35f69b20a0101"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x600a6101000a6101000a600055600a60ff0a6101000a600155600a6101010a6101000a600255600a6101000a60ff0a600355600a60ff0a60ff0a600455600a6101010a60ff0a600555600a6101000a6101010a600655600a60ff0a6101010a600755600a6101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_11.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_11.json
new file mode 100644
index 0000000000000000000000000000000000000000..ac9f4312b72ee0a9ce3b53cac3b4bd455d77e3c2
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_11.json
@@ -0,0 +1,55 @@
+{
+    "expPowerOf256Of256_11": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_11Filler.json",
+            "sourceHash": "9f894285b221c629d940fd5717ca08b2f5f1e35b809191f00557ed3d1c76e01c"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x989680",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x600b6101000a6101000a600055600b60ff0a6101000a600155600b6101010a6101000a600255600b6101000a60ff0a600355600b60ff0a60ff0a600455600b6101010a60ff0a600555600b6101000a6101010a600655600b60ff0a6101010a600755600b6101010a6101010a600855",
+            "data": "0x",
+            "gas": "0x0f4240",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0d2d54",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x600b6101000a6101000a600055600b60ff0a6101000a600155600b6101010a6101000a600255600b6101000a60ff0a600355600b60ff0a60ff0a600455600b6101010a60ff0a600555600b6101000a6101010a600655600b60ff0a6101010a600755600b6101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {
+                    "0x03": "0xe1440264b8ee0cea0218879ec55c33085514ff7f000000000000000000000001",
+                    "0x04": "0x29575fdce377b23043e489e358581474bc863187fa85f9945473a2be5889feff",
+                    "0x05": "0x3df8c030ec521fb109c4d887dbbc14c7c9c9921b27058e3503971b60b18b00ff",
+                    "0x06": "0x67799740340daf4a30f000b68fb921f7aa6aff81000000000000000000000001",
+                    "0x07": "0x540a4e4635b40585e09ff10b63ffe310dd717fca5c0a51570091e25e378bff01",
+                    "0x08": "0xdbbaef5c49ffee61b08cde6ebc8dba6e9a62d56c2355d1980cb9e790bc8b0101"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x600b6101000a6101000a600055600b60ff0a6101000a600155600b6101010a6101000a600255600b6101000a60ff0a600355600b60ff0a60ff0a600455600b6101010a60ff0a600555600b6101000a6101010a600655600b60ff0a6101010a600755600b6101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_12.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_12.json
new file mode 100644
index 0000000000000000000000000000000000000000..2eadbc28b8f44aa4c9e890c030db169eef7a8220
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_12.json
@@ -0,0 +1,55 @@
+{
+    "expPowerOf256Of256_12": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_12Filler.json",
+            "sourceHash": "3f676ad5517e82148d0d2da5936d57a608e33179c423d4304a6fe825b5707548"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x989680",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x600c6101000a6101000a600055600c60ff0a6101000a600155600c6101010a6101000a600255600c6101000a60ff0a600355600c60ff0a60ff0a600455600c6101010a60ff0a600555600c6101000a6101010a600655600c60ff0a6101010a600755600c6101010a6101010a600855",
+            "data": "0x",
+            "gas": "0x0f4240",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0d2cfa",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x600c6101000a6101000a600055600c60ff0a6101000a600155600c6101010a6101000a600255600c6101000a60ff0a600355600c60ff0a60ff0a600455600c6101010a60ff0a600555600c6101000a6101010a600655600c60ff0a6101010a600755600c6101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {
+                    "0x03": "0xb0e95b83a36ce98218879ec55c33085514ff7f00000000000000000000000001",
+                    "0x04": "0xc482ab56ec19186dc48c88f30861a850b2253b1ea6dc021589e569bd47f400ff",
+                    "0x05": "0xcf45c7f9af4bbe4a83055b55b97777ad5e0a3f08b129c9ae208c5d713c0c00ff",
+                    "0x06": "0xa5cbb62a421049b0f000b68fb921f7aa6aff8100000000000000000000000001",
+                    "0x07": "0x3bde6ca66dffe1bf5d727c3edea74c7a4af43b3912e6256d37705c8f3bf40101",
+                    "0x08": "0x3f49a1e40c5213aa4ffed57eb4c1ad2d181b2aaa289e9d59c2256c43480c0101"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x600c6101000a6101000a600055600c60ff0a6101000a600155600c6101010a6101000a600255600c6101000a60ff0a600355600c60ff0a60ff0a600455600c6101010a60ff0a600555600c6101000a6101010a600655600c60ff0a6101010a600755600c6101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_13.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_13.json
new file mode 100644
index 0000000000000000000000000000000000000000..3d487fd1587794dff6bbad4c452cb0db21b883b5
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_13.json
@@ -0,0 +1,55 @@
+{
+    "expPowerOf256Of256_13": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_13Filler.json",
+            "sourceHash": "da54905daaeaa0664d44547ff55e475b07362ac581d4a395233ed5e2c6f52ced"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x989680",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x600d6101000a6101000a600055600d60ff0a6101000a600155600d6101010a6101000a600255600d6101000a60ff0a600355600d60ff0a60ff0a600455600d6101010a60ff0a600555600d6101000a6101010a600655600d60ff0a6101010a600755600d6101010a6101010a600855",
+            "data": "0x",
+            "gas": "0x0f4240",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0d2ca0",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x600d6101000a6101000a600055600d60ff0a6101000a600155600d6101010a6101000a600255600d6101000a60ff0a600355600d60ff0a60ff0a600455600d6101010a60ff0a600555600d6101000a6101010a600655600d60ff0a6101010a600755600d6101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {
+                    "0x03": "0xe02639036c698218879ec55c33085514ff7f0000000000000000000000000001",
+                    "0x04": "0x8be664bde946d939ce551b948b503787942d2a7734509288c1b62fd5c48bfeff",
+                    "0x05": "0xa923a28e7a75aef26c51580ffc686879e4a0b404b089bdbcd751d88b478d00ff",
+                    "0x06": "0x41ac5ea30fc9b0f000b68fb921f7aa6aff810000000000000000000000000001",
+                    "0x07": "0x0daa3a177ec975cb69bb4acf4a6e1be7bcc1ad33d1ffad97510f9fea9d8dff01",
+                    "0x08": "0x19e6822beb889be28310060f4fb9741bfd50a31fa81ec65de21f7b02548d0101"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x600d6101000a6101000a600055600d60ff0a6101000a600155600d6101010a6101000a600255600d6101000a60ff0a600355600d60ff0a60ff0a600455600d6101010a60ff0a600555600d6101000a6101010a600655600d60ff0a6101010a600755600d6101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_14.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_14.json
new file mode 100644
index 0000000000000000000000000000000000000000..4aeaa3095e9eca047cb0b34def4dfb639778cb4e
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_14.json
@@ -0,0 +1,55 @@
+{
+    "expPowerOf256Of256_14": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_14Filler.json",
+            "sourceHash": "edd3df91eb065b15cab5d220c3d106ed68ddaf58d6c58f53a8cd65b27d2b2581"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x989680",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x600e6101000a6101000a600055600e60ff0a6101000a600155600e6101010a6101000a600255600e6101000a60ff0a600355600e60ff0a60ff0a600455600e6101010a60ff0a600555600e6101000a6101010a600655600e60ff0a6101010a600755600e6101010a6101010a600855",
+            "data": "0x",
+            "gas": "0x0f4240",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0d2c46",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x600e6101000a6101000a600055600e60ff0a6101000a600155600e6101010a6101000a600255600e6101000a60ff0a600355600e60ff0a60ff0a600455600e6101010a60ff0a600555600e6101000a6101010a600655600e60ff0a6101010a600755600e6101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {
+                    "0x03": "0xdb9902ec698218879ec55c33085514ff7f000000000000000000000000000001",
+                    "0x04": "0x83fab06c6c8fef761ebbb9534c06ac2a9d61820623008069062ff3b1e1f200ff",
+                    "0x05": "0x3f791dd183ed5b963bd86e0dba1a9dd5b8ceeb078f15c73062f1942fd40e00ff",
+                    "0x06": "0xe0bfa28fc9b0f000b68fb921f7aa6aff81000000000000000000000000000001",
+                    "0x07": "0x8133b760dfae27560eb490f235ddfa301f058dee4f01f3fe4b3567d0d3f20101",
+                    "0x08": "0xcd4cd0124e983af71620fb5f98275965c6a8bebc4b8adc288b63224ee20e0101"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x600e6101000a6101000a600055600e60ff0a6101000a600155600e6101010a6101000a600255600e6101000a60ff0a600355600e60ff0a60ff0a600455600e6101010a60ff0a600555600e6101000a6101010a600655600e60ff0a6101010a600755600e6101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_15.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_15.json
new file mode 100644
index 0000000000000000000000000000000000000000..892b82197e74f757f3cc70b471816924500207a3
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_15.json
@@ -0,0 +1,55 @@
+{
+    "expPowerOf256Of256_15": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_15Filler.json",
+            "sourceHash": "f7cb05c59e6a333a6f97a5d9f4c0f35af8d8422f06d1cfe1aa80a98c27f99ed1"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x989680",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x600f6101000a6101000a600055600f60ff0a6101000a600155600f6101010a6101000a600255600f6101000a60ff0a600355600f60ff0a60ff0a600455600f6101010a60ff0a600555600f6101000a6101010a600655600f60ff0a6101010a600755600f6101010a6101010a600855",
+            "data": "0x",
+            "gas": "0x0f4240",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0d2bec",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x600f6101000a6101000a600055600f60ff0a6101000a600155600f6101010a6101000a600255600f6101000a60ff0a600355600f60ff0a60ff0a600455600f6101010a60ff0a600555600f6101000a6101010a600655600f60ff0a6101010a600755600f6101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {
+                    "0x03": "0x9882ec698218879ec55c33085514ff7f00000000000000000000000000000001",
+                    "0x04": "0x75c4915e18b96704209738f5ca765568bb4dc4113d56683977825a132c8dfeff",
+                    "0x05": "0x5c76839bf5a80b1da705dbdf43e4dd6770cd7501af11ff2dab7918dfe18f00ff",
+                    "0x06": "0xbf228fc9b0f000b68fb921f7aa6aff8100000000000000000000000000000001",
+                    "0x07": "0xc6a29131e7594004bc2aa79f0d2c402a1409c57c77d284c14b1a3ab0ff8fff01",
+                    "0x08": "0xe6b3e5cf6ec90e532fef7d08455ebf92a03e9e3f6e224ea0febdf1a9f08f0101"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x600f6101000a6101000a600055600f60ff0a6101000a600155600f6101010a6101000a600255600f6101000a60ff0a600355600f60ff0a60ff0a600455600f6101010a60ff0a600555600f6101000a6101010a600655600f60ff0a6101010a600755600f6101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_16.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_16.json
new file mode 100644
index 0000000000000000000000000000000000000000..80819a093e71ede7d837d67c49b3466d71076d1d
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_16.json
@@ -0,0 +1,55 @@
+{
+    "expPowerOf256Of256_16": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_16Filler.json",
+            "sourceHash": "df0ea880ab4d8279515ba63f5a4c098d3869d42a1145eee993bdb07d543191ac"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x989680",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60106101000a6101000a600055601060ff0a6101000a60015560106101010a6101000a60025560106101000a60ff0a600355601060ff0a60ff0a60045560106101010a60ff0a60055560106101000a6101010a600655601060ff0a6101010a60075560106101010a6101010a600855",
+            "data": "0x",
+            "gas": "0x0f4240",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0d2b92",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60106101000a6101000a600055601060ff0a6101000a60015560106101010a6101000a60025560106101000a60ff0a600355601060ff0a60ff0a60045560106101010a60ff0a60055560106101000a6101010a600655601060ff0a6101010a60075560106101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {
+                    "0x03": "0x82ec698218879ec55c33085514ff7f0000000000000000000000000000000001",
+                    "0x04": "0x3122f4bcdf6dd8b265cd18eb6af28c879aed44a35e0bf59273e39e6c7ff000ff",
+                    "0x05": "0x6a2b3bc87a02c29b9d27757df43047ecd0f15485270fca27417a701c701000ff",
+                    "0x06": "0x228fc9b0f000b68fb921f7aa6aff810000000000000000000000000000000001",
+                    "0x07": "0x88e1259502eef93d46060aacc9e2ff506c734dade0b6714ab12d17e46ff00101",
+                    "0x08": "0x4a103813c12c12169b218296bb0a9eae80cf8d2b158aa70eb990f99480100101"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60106101000a6101000a600055601060ff0a6101000a60015560106101010a6101000a60025560106101000a60ff0a600355601060ff0a60ff0a60045560106101010a60ff0a60055560106101000a6101010a600655601060ff0a6101010a60075560106101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_17.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_17.json
new file mode 100644
index 0000000000000000000000000000000000000000..8d00a5ed09a695ef6ff4d5192eba0b0216e8d0dc
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_17.json
@@ -0,0 +1,55 @@
+{
+    "expPowerOf256Of256_17": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_17Filler.json",
+            "sourceHash": "f070c654038863bc1be0d7f5a1f94d32eeae2548d2253bef46dd9153621c8d3a"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x989680",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60116101000a6101000a600055601160ff0a6101000a60015560116101010a6101000a60025560116101000a60ff0a600355601160ff0a60ff0a60045560116101010a60ff0a60055560116101000a6101010a600655601160ff0a6101010a60075560116101010a6101010a600855",
+            "data": "0x",
+            "gas": "0x0f4240",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0d2b38",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60116101000a6101000a600055601160ff0a6101000a60015560116101010a6101000a60025560116101000a60ff0a600355601160ff0a60ff0a60045560116101010a60ff0a60055560116101000a6101010a600655601160ff0a6101010a60075560116101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {
+                    "0x03": "0xec698218879ec55c33085514ff7f000000000000000000000000000000000001",
+                    "0x04": "0x722ad218eb1995a2d257c4c06d8de993c203cfc8e3512df7d633e17e908ffeff",
+                    "0x05": "0x8ac9b5ec08d74612cb29f941481d274b51721af2296207c0da8d24667f9100ff",
+                    "0x06": "0x8fc9b0f000b68fb921f7aa6aff81000000000000000000000000000000000001",
+                    "0x07": "0x81d5ff63680841482299f3eab616446dcd336f537c0c565aa4112ab95d91ff01",
+                    "0x08": "0x9c6ca90dac4e97dea02ac969e8649ee9e6232e0c3f4797411151cb8f90910101"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60116101000a6101000a600055601160ff0a6101000a60015560116101010a6101000a60025560116101000a60ff0a600355601160ff0a60ff0a60045560116101010a60ff0a60055560116101000a6101010a600655601160ff0a6101010a60075560116101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_18.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_18.json
new file mode 100644
index 0000000000000000000000000000000000000000..b05374172d46b862fdf496249b61da32ee96c8c3
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_18.json
@@ -0,0 +1,55 @@
+{
+    "expPowerOf256Of256_18": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_18Filler.json",
+            "sourceHash": "8cb52e6bdf20dde0fbdfcfa1309199db454a3bea15b4695b2f19fc0de0eb7aca"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x989680",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60126101000a6101000a600055601260ff0a6101000a60015560126101010a6101000a60025560126101000a60ff0a600355601260ff0a60ff0a60045560126101010a60ff0a60055560126101000a6101010a600655601260ff0a6101010a60075560126101010a6101010a600855",
+            "data": "0x",
+            "gas": "0x0f4240",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0d2ade",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60126101000a6101000a600055601260ff0a6101000a60015560126101010a6101000a60025560126101000a60ff0a600355601260ff0a60ff0a60045560126101010a60ff0a60055560126101000a6101010a600655601260ff0a6101010a60075560126101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {
+                    "0x03": "0x698218879ec55c33085514ff7f00000000000000000000000000000000000001",
+                    "0x04": "0x8a2cbd9f40794e2205b13306f2aa0a43c60823c64b95d8601fa4f1e521ee00ff",
+                    "0x05": "0xc1b5a1e3a81da51b10d84e880f0113ff67b863ddad3faf1f4ecf413f101200ff",
+                    "0x06": "0xc9b0f000b68fb921f7aa6aff8100000000000000000000000000000000000001",
+                    "0x07": "0x410be68e49452a1fbcd863bf6e8d637f8eae4979c34c88d552afbcc20fee0101",
+                    "0x08": "0xf540cb714754b5b1eb0373833833bd7fb0ee925ce8b92962500b7a1c22120101"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60126101000a6101000a600055601260ff0a6101000a60015560126101010a6101000a60025560126101000a60ff0a600355601260ff0a60ff0a60045560126101010a60ff0a60055560126101000a6101010a600655601260ff0a6101010a60075560126101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_19.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_19.json
new file mode 100644
index 0000000000000000000000000000000000000000..53991c313973c1992a250bd171bab3c2c08f8476
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_19.json
@@ -0,0 +1,55 @@
+{
+    "expPowerOf256Of256_19": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_19Filler.json",
+            "sourceHash": "2bf12bb4afe51d507c22e76e8e5c567b0ef569281b1ebfd4045334c1da40bef5"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x989680",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60136101000a6101000a600055601360ff0a6101000a60015560136101010a6101000a60025560136101000a60ff0a600355601360ff0a60ff0a60045560136101010a60ff0a60055560136101000a6101010a600655601360ff0a6101010a60075560136101010a6101010a600855",
+            "data": "0x",
+            "gas": "0x0f4240",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0d2a84",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60136101000a6101000a600055601360ff0a6101000a60015560136101010a6101000a60025560136101000a60ff0a600355601360ff0a60ff0a60045560136101010a60ff0a60055560136101000a6101010a600655601360ff0a6101010a60075560136101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {
+                    "0x03": "0x8218879ec55c33085514ff7f0000000000000000000000000000000000000001",
+                    "0x04": "0xb795ad7ac24cfbb7435cf53bd3584f3d4b2709935635c3ceb66e761ff091feff",
+                    "0x05": "0x1f0bb7be91a0ccd0cca93d75cf03de3e6b56fe8f1c54242617665327219300ff",
+                    "0x06": "0xb0f000b68fb921f7aa6aff810000000000000000000000000000000000000001",
+                    "0x07": "0xad571756ecbff1bfdef064861e5e92c5d897a9cc380e54bdbaabd80bb793ff01",
+                    "0x08": "0xd8b5b531989e689f700dcdb43ab90e79a49dfbbb5a13dbf751df98bb34930101"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60136101000a6101000a600055601360ff0a6101000a60015560136101010a6101000a60025560136101000a60ff0a600355601360ff0a60ff0a60045560136101010a60ff0a60055560136101000a6101010a600655601360ff0a6101010a60075560136101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_2.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_2.json
new file mode 100644
index 0000000000000000000000000000000000000000..c1952dd09b3a35d8b21dc377ffc773bb97433db0
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_2.json
@@ -0,0 +1,55 @@
+{
+    "expPowerOf256Of256_2": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_2Filler.json",
+            "sourceHash": "1bb794ffa6e9ae153773b173b7a12dac12fac68c4ca5cda54e75173507967636"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x989680",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60026101000a6101000a600055600260ff0a6101000a60015560026101010a6101000a60025560026101000a60ff0a600355600260ff0a60ff0a60045560026101010a60ff0a60055560026101000a6101010a600655600260ff0a6101010a60075560026101010a6101010a600855",
+            "data": "0x",
+            "gas": "0x0f4240",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0d307e",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60026101000a6101000a600055600260ff0a6101000a60015560026101010a6101000a60025560026101000a60ff0a600355600260ff0a60ff0a60045560026101010a60ff0a60055560026101000a6101010a600655600260ff0a6101010a60075560026101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {
+                    "0x03": "0x4ee4ceeaac565c81f55a87c43f82f7c889ef4fc7c679671e28d594ff7f000001",
+                    "0x04": "0x82f46a1b4e34d66712910615d2571d75606ceac51fa8ca8c58cf6ca881fe00ff",
+                    "0x05": "0x81c9fcefa5de158ae2007f25d35c0d11cd735342a48905955a5a6852800200ff",
+                    "0x06": "0x666ac362902470ed850709e2a29969d10cba09debc03c38d172aeaff81000001",
+                    "0x07": "0xeb30a3c678a01bde914548f98f3366dc0ffe9f85384ebf1111d03dad7ffe0101",
+                    "0x08": "0x72d0a7939b6303ce1d46e6e3f1b8be303bfdb2b00f41ad8076b0975782020101"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60026101000a6101000a600055600260ff0a6101000a60015560026101010a6101000a60025560026101000a60ff0a600355600260ff0a60ff0a60045560026101010a60ff0a60055560026101000a6101010a600655600260ff0a6101010a60075560026101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_20.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_20.json
new file mode 100644
index 0000000000000000000000000000000000000000..2ac3f962f8867e74f2d4c27572fca81653321197
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_20.json
@@ -0,0 +1,55 @@
+{
+    "expPowerOf256Of256_20": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_20Filler.json",
+            "sourceHash": "3e1e5001e4e59a393a85390f68cd05d35e46428201bde93b6f68ceb7ef9ec051"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x989680",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60146101000a6101000a600055601460ff0a6101000a60015560146101010a6101000a60025560146101000a60ff0a600355601460ff0a60ff0a60045560146101010a60ff0a60055560146101000a6101010a600655601460ff0a6101010a60075560146101010a6101010a600855",
+            "data": "0x",
+            "gas": "0x0f4240",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0d2a2a",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60146101000a6101000a600055601460ff0a6101000a60015560146101010a6101000a60025560146101000a60ff0a600355601460ff0a60ff0a60045560146101010a60ff0a60055560146101000a6101010a600655601460ff0a6101010a60075560146101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {
+                    "0x03": "0x18879ec55c33085514ff7f000000000000000000000000000000000000000001",
+                    "0x04": "0x67e4797dc21f02ce4a7c52218c7dbea5d212e6c244e24f0ba4c08613c7ec00ff",
+                    "0x05": "0xa1ce1a085f258785846939cc1d2e8725ac94ad4dff8913234e00679fb41400ff",
+                    "0x06": "0xf000b68fb921f7aa6aff81000000000000000000000000000000000000000001",
+                    "0x07": "0xcce501857a1cb45473915a28082af950e0f78f7e2de68ce748adb661b3ec0101",
+                    "0x08": "0x3b2e28d274a16c08b58a23bad63bba6d7b09685769d1f68ca3873bedc8140101"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60146101000a6101000a600055601460ff0a6101000a60015560146101010a6101000a60025560146101000a60ff0a600355601460ff0a60ff0a60045560146101010a60ff0a60055560146101000a6101010a600655601460ff0a6101010a60075560146101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_21.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_21.json
new file mode 100644
index 0000000000000000000000000000000000000000..e63dc63ed4d61a7a77071aa31d0cdae28ffa9677
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_21.json
@@ -0,0 +1,55 @@
+{
+    "expPowerOf256Of256_21": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_21Filler.json",
+            "sourceHash": "ce52da9057e3fa7d2cd345a3397d93afefa12c7879817ff918ce958ab90f2595"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x989680",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60156101000a6101000a600055601560ff0a6101000a60015560156101010a6101000a60025560156101000a60ff0a600355601560ff0a60ff0a60045560156101010a60ff0a60055560156101000a6101010a600655601560ff0a6101010a60075560156101010a6101010a600855",
+            "data": "0x",
+            "gas": "0x0f4240",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0d29d0",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60156101000a6101000a600055601560ff0a6101000a60015560156101010a6101000a60025560156101000a60ff0a600355601560ff0a60ff0a60045560156101010a60ff0a60055560156101000a6101010a600655601560ff0a6101010a60075560156101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {
+                    "0x03": "0x879ec55c33085514ff7f00000000000000000000000000000000000000000001",
+                    "0x04": "0x7fd07055ff50cdfe4b4bd9a15133d72d3607d92eb7ac81bac93db7ff4c93feff",
+                    "0x05": "0x665ac5c769e87f61d5993abc26522fbfca2734d76a63216b2d550d29c79500ff",
+                    "0x06": "0xb68fb921f7aa6aff8100000000000000000000000000000000000000000001",
+                    "0x07": "0x1c93db67c9884bc694686d69a25a5d7ed089841d5ce147fdd7199ab00d95ff01",
+                    "0x08": "0x485053d8ff66be52036597520344fac87b6a305426a9e49221d3f934dc950101"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60156101000a6101000a600055601560ff0a6101000a60015560156101010a6101000a60025560156101000a60ff0a600355601560ff0a60ff0a60045560156101010a60ff0a60055560156101000a6101010a600655601560ff0a6101010a60075560156101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_22.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_22.json
new file mode 100644
index 0000000000000000000000000000000000000000..0d1f02555d06e630c03d8d23344ddd4e9bd13ffe
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_22.json
@@ -0,0 +1,55 @@
+{
+    "expPowerOf256Of256_22": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_22Filler.json",
+            "sourceHash": "b568d0b177c9f22d73b46e92e6fc973e292a6406e5c0fd774c4d62ffd1323a56"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x989680",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60166101000a6101000a600055601660ff0a6101000a60015560166101010a6101000a60025560166101000a60ff0a600355601660ff0a60ff0a60045560166101010a60ff0a60055560166101000a6101010a600655601660ff0a6101010a60075560166101010a6101010a600855",
+            "data": "0x",
+            "gas": "0x0f4240",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0d2976",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60166101000a6101000a600055601660ff0a6101000a60015560166101010a6101000a60025560166101000a60ff0a600355601660ff0a60ff0a60045560166101010a60ff0a60055560166101000a6101010a600655601660ff0a6101010a60075560166101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {
+                    "0x03": "0x9ec55c33085514ff7f0000000000000000000000000000000000000000000001",
+                    "0x04": "0xec447e662ac08957d7e290a421dbf54c0aaf43aadc9cc465ad0b02f071ea00ff",
+                    "0x05": "0xdc9178d3bab470096f01477c859b5f4173986640b659426412a653465c1600ff",
+                    "0x06": "0xb68fb921f7aa6aff810000000000000000000000000000000000000000000001",
+                    "0x07": "0xdcf0a770777610503596ae0311af46c171151ed45107d7e7bb8f74bb5bea0101",
+                    "0x08": "0x4d65773387993928c95c861274232d3fb6f6b7fe1b22e4e61a30e71172160101"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60166101000a6101000a600055601660ff0a6101000a60015560166101010a6101000a60025560166101000a60ff0a600355601660ff0a60ff0a60045560166101010a60ff0a60055560166101000a6101010a600655601660ff0a6101010a60075560166101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_23.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_23.json
new file mode 100644
index 0000000000000000000000000000000000000000..991f1cc2c4d878298e8095a8b80ffcd71fa6d103
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_23.json
@@ -0,0 +1,55 @@
+{
+    "expPowerOf256Of256_23": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_23Filler.json",
+            "sourceHash": "38af599c5f1710b1d7c98da78bf0c4426b7fd2c3ea8afe4272147706a93b231b"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x989680",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60176101000a6101000a600055601760ff0a6101000a60015560176101010a6101000a60025560176101000a60ff0a600355601760ff0a60ff0a60045560176101010a60ff0a60055560176101000a6101010a600655601760ff0a6101010a60075560176101010a6101010a600855",
+            "data": "0x",
+            "gas": "0x0f4240",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0d291c",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60176101000a6101000a600055601760ff0a6101000a60015560176101010a6101000a60025560176101000a60ff0a600355601760ff0a60ff0a60045560176101010a60ff0a60055560176101000a6101010a600655601760ff0a6101010a60075560176101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {
+                    "0x03": "0xc55c33085514ff7f000000000000000000000000000000000000000000000001",
+                    "0x04": "0x537ca0f03f974303005f1e6693b55b72315a166841732e42b8353724a495feff",
+                    "0x05": "0x86418797ec60058de6cca47dfdbee79923ac49d7801e01840041ca76719700ff",
+                    "0x06": "0x8fb921f7aa6aff81000000000000000000000000000000000000000000000001",
+                    "0x07": "0x56a55341ab8d4318f1cfb55d5f21e2ba35d7e070a72bac6b2b21baae5f97ff01",
+                    "0x08": "0x55ddd0ec77909de6d8311116cf520398e816f928b06fdd90ec239d0488970101"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60176101000a6101000a600055601760ff0a6101000a60015560176101010a6101000a60025560176101000a60ff0a600355601760ff0a60ff0a60045560176101010a60ff0a60055560176101000a6101010a600655601760ff0a6101010a60075560176101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_24.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_24.json
new file mode 100644
index 0000000000000000000000000000000000000000..1d6ff87f886aa6420667399b009bdcba013fb8e6
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_24.json
@@ -0,0 +1,55 @@
+{
+    "expPowerOf256Of256_24": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_24Filler.json",
+            "sourceHash": "b2214b33d3fab1dfe04637edd51f67ec988e5bc2cbf134113adca7a36b73580b"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x989680",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60186101000a6101000a600055601860ff0a6101000a60015560186101010a6101000a60025560186101000a60ff0a600355601860ff0a60ff0a60045560186101010a60ff0a60055560186101000a6101010a600655601860ff0a6101010a60075560186101010a6101010a600855",
+            "data": "0x",
+            "gas": "0x0f4240",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0d28c2",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60186101000a6101000a600055601860ff0a6101000a60015560186101010a6101000a60025560186101000a60ff0a600355601860ff0a60ff0a60045560186101010a60ff0a60055560186101000a6101010a600655601860ff0a6101010a60075560186101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {
+                    "0x03": "0x5c33085514ff7f00000000000000000000000000000000000000000000000001",
+                    "0x04": "0xd542e526003539ead104274aff2d78332366e29d328c2161f0c120731fe800ff",
+                    "0x05": "0xc706cb25e8384ce9bb5c9cb48415238ba03e16c448e292c0a101843b081800ff",
+                    "0x06": "0xb921f7aa6aff8100000000000000000000000000000000000000000000000001",
+                    "0x07": "0x4ca55f89202c524cb0f1cb3195d13c8d94a9f7a05c59e1d4031577c707e80101",
+                    "0x08": "0x8c4b0574e9156b80035f3ecdcf1fe79d273ed7559747a4322bcd338f20180101"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60186101000a6101000a600055601860ff0a6101000a60015560186101010a6101000a60025560186101000a60ff0a600355601860ff0a60ff0a60045560186101010a60ff0a60055560186101000a6101010a600655601860ff0a6101010a60075560186101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_25.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_25.json
new file mode 100644
index 0000000000000000000000000000000000000000..a4360a3725b3be4b6bf64e513a363129b6276604
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_25.json
@@ -0,0 +1,55 @@
+{
+    "expPowerOf256Of256_25": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_25Filler.json",
+            "sourceHash": "74d1ad702e512305c9b820a2f64cff06cf51504b5d46fd73aee35f186e64f053"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x989680",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60196101000a6101000a600055601960ff0a6101000a60015560196101010a6101000a60025560196101000a60ff0a600355601960ff0a60ff0a60045560196101010a60ff0a60055560196101000a6101010a600655601960ff0a6101010a60075560196101010a6101010a600855",
+            "data": "0x",
+            "gas": "0x0f4240",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0d2868",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60196101000a6101000a600055601960ff0a6101000a60015560196101010a6101000a60025560196101000a60ff0a600355601960ff0a60ff0a60045560196101010a60ff0a60055560196101000a6101010a600655601960ff0a6101010a60075560196101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {
+                    "0x03": "0x33085514ff7f0000000000000000000000000000000000000000000000000001",
+                    "0x04": "0x7f510dd7198cac0a92ff7ea80451838c0dfa12114c41a0ef05907397f897feff",
+                    "0x05": "0x1275e752b6aee228ecba5e9b57ef1111deff3c651e2cfbf2cccd13151f9900ff",
+                    "0x06": "0x21f7aa6aff810000000000000000000000000000000000000000000000000001",
+                    "0x07": "0x6646340ad51a03bb710caf05756b685b33c7dad62ae68d369243700ead99ff01",
+                    "0x08": "0x29d80e8060ef2221929bb18215586c742686d6860e028ca0456b443238990101"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60196101000a6101000a600055601960ff0a6101000a60015560196101010a6101000a60025560196101000a60ff0a600355601960ff0a60ff0a60045560196101010a60ff0a60055560196101000a6101010a600655601960ff0a6101010a60075560196101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_26.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_26.json
new file mode 100644
index 0000000000000000000000000000000000000000..0fc4d781e65c26a1ed0823a3e8b67cc68470257b
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_26.json
@@ -0,0 +1,55 @@
+{
+    "expPowerOf256Of256_26": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_26Filler.json",
+            "sourceHash": "f8cd2c9613fe495b1e4350181fb338743a9b059ec738b292702e62a997f0411f"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x989680",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x601a6101000a6101000a600055601a60ff0a6101000a600155601a6101010a6101000a600255601a6101000a60ff0a600355601a60ff0a60ff0a600455601a6101010a60ff0a600555601a6101000a6101010a600655601a60ff0a6101010a600755601a6101010a6101010a600855",
+            "data": "0x",
+            "gas": "0x0f4240",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0d280e",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x601a6101000a6101000a600055601a60ff0a6101000a600155601a6101010a6101000a600255601a6101000a60ff0a600355601a60ff0a60ff0a600455601a6101010a60ff0a600555601a6101000a6101010a600655601a60ff0a6101010a600755601a6101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {
+                    "0x03": "0x085514ff7f000000000000000000000000000000000000000000000000000001",
+                    "0x04": "0x1d164db738eb6893868b361ad2803f97be35764456e82a837667a693d1e600ff",
+                    "0x05": "0x8b92c24abebf376a5aab5ff4dfd3538a03d38a10bced2aae8e1a8a85b81a00ff",
+                    "0x06": "0xf7aa6aff81000000000000000000000000000000000000000000000000000001",
+                    "0x07": "0x6931bda98c70e860a1f6a5224940f1ec7e6734cd9456c95806384f7cb7e60101",
+                    "0x08": "0x3402a9db66492dfc2a220715e76243469462f24edc56903ba1d8e96ed21a0101"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x601a6101000a6101000a600055601a60ff0a6101000a600155601a6101010a6101000a600255601a6101000a60ff0a600355601a60ff0a60ff0a600455601a6101010a60ff0a600555601a6101000a6101010a600655601a60ff0a6101010a600755601a6101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_27.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_27.json
new file mode 100644
index 0000000000000000000000000000000000000000..9a32942f5fc0cec425cd4b9daa52d851bf6e9ae2
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_27.json
@@ -0,0 +1,55 @@
+{
+    "expPowerOf256Of256_27": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_27Filler.json",
+            "sourceHash": "58b69b876666593f06ee8e5fef2f9fc078908f419ce364fe9dedf5acffeea71e"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x989680",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x601b6101000a6101000a600055601b60ff0a6101000a600155601b6101010a6101000a600255601b6101000a60ff0a600355601b60ff0a60ff0a600455601b6101010a60ff0a600555601b6101000a6101010a600655601b60ff0a6101010a600755601b6101010a6101010a600855",
+            "data": "0x",
+            "gas": "0x0f4240",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0d27b4",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x601b6101000a6101000a600055601b60ff0a6101000a600155601b6101010a6101000a600255601b6101000a60ff0a600355601b60ff0a60ff0a600455601b6101010a60ff0a600555601b6101000a6101010a600655601b60ff0a6101010a600755601b6101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {
+                    "0x03": "0x5514ff7f00000000000000000000000000000000000000000000000000000001",
+                    "0x04": "0x178918ffbcb401d4efd2f7dfb4d01a897172267f0f491121ac52dd614899feff",
+                    "0x05": "0x38ecff71480ca0b422f2ed6f780d5fead2ae234a49104b10a86f7f0dd19b00ff",
+                    "0x06": "0xaa6aff8100000000000000000000000000000000000000000000000000000001",
+                    "0x07": "0xd02811cb5dc1d80567e810532b235b7672f5c78cd6e89bb511d5e2d8f79bff01",
+                    "0x08": "0x1b4e6404f474c18055d30bb8987672f59e97980d6f9de1764c0fbec5ec9b0101"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x601b6101000a6101000a600055601b60ff0a6101000a600155601b6101010a6101000a600255601b6101000a60ff0a600355601b60ff0a60ff0a600455601b6101010a60ff0a600555601b6101000a6101010a600655601b60ff0a6101010a600755601b6101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_28.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_28.json
new file mode 100644
index 0000000000000000000000000000000000000000..58b12d8dee908ac7aeb2ffe286135cee0c52f0ba
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_28.json
@@ -0,0 +1,55 @@
+{
+    "expPowerOf256Of256_28": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_28Filler.json",
+            "sourceHash": "7c777e8ac6e44db49986159099879a393d4d1e24a134a942bc56e9a3f645f441"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x989680",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x601c6101000a6101000a600055601c60ff0a6101000a600155601c6101010a6101000a600255601c6101000a60ff0a600355601c60ff0a60ff0a600455601c6101010a60ff0a600555601c6101000a6101010a600655601c60ff0a6101010a600755601c6101010a6101010a600855",
+            "data": "0x",
+            "gas": "0x0f4240",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0d275a",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x601c6101000a6101000a600055601c60ff0a6101000a600155601c6101010a6101000a600255601c6101000a60ff0a600355601c60ff0a60ff0a600455601c6101010a60ff0a600555601c6101000a6101010a600655601c60ff0a6101010a600755601c6101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {
+                    "0x03": "0x14ff7f0000000000000000000000000000000000000000000000000000000001",
+                    "0x04": "0xffd368e44b3f85cb81ae394c9809ca9fa2db46a83d7880a912ab6d4a87e400ff",
+                    "0x05": "0x0981ad53c19b15a94bcf0bf20235dd0da9df25f46ae635029fe2062e6c1c00ff",
+                    "0x06": "0x6aff810000000000000000000000000000000000000000000000000000000001",
+                    "0x07": "0x19df06ffa28250867006726405fbc05d43dc2f9d2f025006db089bd46be40101",
+                    "0x08": "0x243fffe3a4f2982f45055c08f379648ab886da8027a7401117a8e0b8881c0101"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x601c6101000a6101000a600055601c60ff0a6101000a600155601c6101010a6101000a600255601c6101000a60ff0a600355601c60ff0a60ff0a600455601c6101010a60ff0a600555601c6101000a6101010a600655601c60ff0a6101010a600755601c6101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_29.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_29.json
new file mode 100644
index 0000000000000000000000000000000000000000..4d1b3e1d230a46011f5249a223325e110672510c
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_29.json
@@ -0,0 +1,55 @@
+{
+    "expPowerOf256Of256_29": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_29Filler.json",
+            "sourceHash": "b0d3a0e97954254e535a7cba322485f664e2915eadb53a97e9294808bb5736e5"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x989680",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x601d6101000a6101000a600055601d60ff0a6101000a600155601d6101010a6101000a600255601d6101000a60ff0a600355601d60ff0a60ff0a600455601d6101010a60ff0a600555601d6101000a6101010a600655601d60ff0a6101010a600755601d6101010a6101010a600855",
+            "data": "0x",
+            "gas": "0x0f4240",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0d2700",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x601d6101000a6101000a600055601d60ff0a6101000a600155601d6101010a6101000a600255601d6101000a60ff0a600355601d60ff0a60ff0a600455601d6101010a60ff0a600555601d6101000a6101010a600655601d60ff0a6101010a600755601d6101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {
+                    "0x03": "0xff7f000000000000000000000000000000000000000000000000000000000001",
+                    "0x04": "0x41e065d46e0349cfe624c4e8a2034aea1f7edfff80e511cd8067d488949bfeff",
+                    "0x05": "0xa84162ca6675a22c4c79dfc4ea15f760db5a04dbf04246764199b668879d00ff",
+                    "0x06": "0xff81000000000000000000000000000000000000000000000000000000000001",
+                    "0x07": "0x1226984faa6b05ebdbd45d8477fa4fd5b55bfd5061de03c319282b153d9dff01",
+                    "0x08": "0x5cc9e6b0b749fd94541ad00364bdec2fca7816981ca3e38f485decc7a49d0101"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x601d6101000a6101000a600055601d60ff0a6101000a600155601d6101010a6101000a600255601d6101000a60ff0a600355601d60ff0a60ff0a600455601d6101010a60ff0a600555601d6101000a6101010a600655601d60ff0a6101010a600755601d6101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_3.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_3.json
new file mode 100644
index 0000000000000000000000000000000000000000..36f84846d0e383411da17cf8854100b5056e394c
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_3.json
@@ -0,0 +1,55 @@
+{
+    "expPowerOf256Of256_3": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_3Filler.json",
+            "sourceHash": "53999523fa8817e9744f5212cb80074bff9d270fa6581d7d88ed73920d414ab2"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x989680",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60036101000a6101000a600055600360ff0a6101000a60015560036101010a6101000a60025560036101000a60ff0a600355600360ff0a60ff0a60045560036101010a60ff0a60055560036101000a6101010a600655600360ff0a6101010a60075560036101010a6101010a600855",
+            "data": "0x",
+            "gas": "0x0f4240",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0d3024",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60036101000a6101000a600055600360ff0a6101000a60015560036101010a6101000a60025560036101000a60ff0a600355600360ff0a60ff0a60045560036101010a60ff0a60055560036101000a6101010a600655600360ff0a6101010a60075560036101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {
+                    "0x03": "0x109a00e1370d2d2922bf892e85becb54297354b2e5c75388d514ff7f00000001",
+                    "0x04": "0x54a792f15e9aba7e4ad9e716bc169eea3a6e2e9c49bf9b335874613c8081feff",
+                    "0x05": "0x5d24a14d8e5e039372cd0f6a0f31e9ed6b75adba9f16b1c5b3edd5ba818300ff",
+                    "0x06": "0x298e2f316b4ccded5ebf515998d9ec20df69404b04a441782a6aff8100000001",
+                    "0x07": "0x4335694e98f372183c62a2339fa4ad161e9b4c42240bdc9452abffd07783ff01",
+                    "0x08": "0xf0f0820797315acd063056bba76f6a9c3e281cdb5197a233967ca94684830101"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60036101000a6101000a600055600360ff0a6101000a60015560036101010a6101000a60025560036101000a60ff0a600355600360ff0a60ff0a60045560036101010a60ff0a60055560036101000a6101010a600655600360ff0a6101010a60075560036101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_30.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_30.json
new file mode 100644
index 0000000000000000000000000000000000000000..cba58c683afb740259b515d053b8b3dd37328faa
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_30.json
@@ -0,0 +1,55 @@
+{
+    "expPowerOf256Of256_30": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_30Filler.json",
+            "sourceHash": "804f4e95e384d6edbff23e904b20f47e7fa056744a955a10e0a41c32a620f7a1"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x989680",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x601e6101000a6101000a600055601e60ff0a6101000a600155601e6101010a6101000a600255601e6101000a60ff0a600355601e60ff0a60ff0a600455601e6101010a60ff0a600555601e6101000a6101010a600655601e60ff0a6101010a600755601e6101010a6101010a600855",
+            "data": "0x",
+            "gas": "0x0f4240",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0d26a6",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x601e6101000a6101000a600055601e60ff0a6101000a600155601e6101010a6101000a600255601e6101000a60ff0a600355601e60ff0a60ff0a600455601e6101010a60ff0a600555601e6101000a6101010a600655601e60ff0a6101010a600755601e6101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {
+                    "0x03": "0x7f00000000000000000000000000000000000000000000000000000000000001",
+                    "0x04": "0xe9772778f50fa0a69cd10fa019ac56d72ac7a7d7af26c4ba28415c8f41e200ff",
+                    "0x05": "0x33f0385ef73feebdb952e5adb643dd0fa178fd9271578219ad50a73d241e00ff",
+                    "0x06": "0x8100000000000000000000000000000000000000000000000000000000000001",
+                    "0x07": "0xfd405cce8f73dffc04a6f0ff6ffc6bf7961876d09c5b4933a68f0cc623e20101",
+                    "0x08": "0xc5a8f4566fd2e96e4ce3a8b3ec0863e7b20bc3b2f3dc5261ba8a0174421e0101"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x601e6101000a6101000a600055601e60ff0a6101000a600155601e6101010a6101000a600255601e6101000a60ff0a600355601e60ff0a60ff0a600455601e6101010a60ff0a600555601e6101000a6101010a600655601e60ff0a6101010a600755601e6101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_31.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_31.json
new file mode 100644
index 0000000000000000000000000000000000000000..7f99bdb1c23bb24941d6d00e3c5cc57c81093e3e
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_31.json
@@ -0,0 +1,55 @@
+{
+    "expPowerOf256Of256_31": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_31Filler.json",
+            "sourceHash": "bae9acb496c84a8fcc457a184519f0b42a40f8c0bb9c606c32a4c0e6cc73bc5c"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x989680",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x601f6101000a6101000a600055601f60ff0a6101000a600155601f6101010a6101000a600255601f6101000a60ff0a600355601f60ff0a60ff0a600455601f6101010a60ff0a600555601f6101000a6101010a600655601f60ff0a6101010a600755601f6101010a6101010a600855",
+            "data": "0x",
+            "gas": "0x0f4240",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0d264c",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x601f6101000a6101000a600055601f60ff0a6101000a600155601f6101010a6101000a600255601f6101000a60ff0a600355601f60ff0a60ff0a600455601f6101010a60ff0a600555601f6101000a6101010a600655601f60ff0a6101010a600755601f6101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {
+                    "0x03": "0x01",
+                    "0x04": "0xf9cb87f5b1ab58602f52a1e9d392e5675b86a59a53943a8d4ec2a915dc9dfeff",
+                    "0x05": "0x893d729a64e318860ec5047e70e598da163eb41e71e74b04dfd4712d419f00ff",
+                    "0x06": "0x01",
+                    "0x07": "0xee5f2839c1b4f6ca05e6fdb04e2fb49c0f860b3765c27dc781a150cb7f9fff01",
+                    "0x08": "0xb4c358e3c6bcddfb509ea487d733df0e1854f29c3b6bfd4a8caabe3f609f0101"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x601f6101000a6101000a600055601f60ff0a6101000a600155601f6101010a6101000a600255601f6101000a60ff0a600355601f60ff0a60ff0a600455601f6101010a60ff0a600555601f6101000a6101010a600655601f60ff0a6101010a600755601f6101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_32.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_32.json
new file mode 100644
index 0000000000000000000000000000000000000000..0277deba06a0bd1908caa2a0fa06d15d6ace045a
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_32.json
@@ -0,0 +1,56 @@
+{
+    "expPowerOf256Of256_32": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_32Filler.json",
+            "sourceHash": "f566ebbbcb84fc96179f87b08deeacd0d2819c3be9ffc463c64b98dc94d9eb70"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x989680",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60206101000a6101000a600055602060ff0a6101000a60015560206101010a6101000a60025560206101000a60ff0a600355602060ff0a60ff0a60045560206101010a60ff0a60055560206101000a6101010a600655602060ff0a6101010a60075560206101010a6101010a600855",
+            "data": "0x",
+            "gas": "0x0f4240",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0cef56",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60206101000a6101000a600055602060ff0a6101000a60015560206101010a6101000a60025560206101000a60ff0a600355602060ff0a60ff0a60045560206101010a60ff0a60055560206101000a6101010a600655602060ff0a6101010a60075560206101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x01",
+                    "0x03": "0x01",
+                    "0x04": "0xb8247842bb5ce75c08d0c251669ed5870fa24a22952e5db3a7c66c59ffe000ff",
+                    "0x05": "0xee526e5a06f2a990b2bf6c951e5feabf0e07ee16877296e1be872db9e02000ff",
+                    "0x06": "0x01",
+                    "0x07": "0xeda7d024b6de40a9d3b966e71f10a4667edc5b71cab07aeabcac6249dfe00101",
+                    "0x08": "0x512ecfaeeb11205f0833e1054dcb1300488e0954be5af77a49e143aa00200101"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60206101000a6101000a600055602060ff0a6101000a60015560206101010a6101000a60025560206101000a60ff0a600355602060ff0a60ff0a60045560206101010a60ff0a60055560206101000a6101010a600655602060ff0a6101010a60075560206101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_33.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_33.json
new file mode 100644
index 0000000000000000000000000000000000000000..84f2dfacee9b41c63ab497308f989cee6b341ce7
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_33.json
@@ -0,0 +1,56 @@
+{
+    "expPowerOf256Of256_33": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_33Filler.json",
+            "sourceHash": "62951920849f41acd9c64c96645f372cc099f52e21f802d21f04a76e47dcca8d"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x989680",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60216101000a6101000a600055602160ff0a6101000a60015560216101010a6101000a60025560216101000a60ff0a600355602160ff0a60ff0a60045560216101010a60ff0a60055560216101000a6101010a600655602160ff0a6101010a60075560216101010a6101010a600855",
+            "data": "0x",
+            "gas": "0x0f4240",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0cef56",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60216101000a6101000a600055602160ff0a6101000a60015560216101010a6101000a60025560216101000a60ff0a600355602160ff0a60ff0a60045560216101010a60ff0a60055560216101000a6101010a600655602160ff0a6101010a60075560216101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x01",
+                    "0x03": "0x01",
+                    "0x04": "0x8dcb65b5494eba78cd6756a6f9851f6e26d0f2bb9ecd7e9abd7e9b11209ffeff",
+                    "0x05": "0x6694bb31b20cd625f3756897dae6d738f2e64467b5b6f10fa3e07763ffa100ff",
+                    "0x06": "0x01",
+                    "0x07": "0xe678999aeffd1f1f45081f64de7f80ab083dd7df04721ed64ee04c03bda1ff01",
+                    "0x08": "0x39b68fb9898dd7568abd178397251ce8226a25c1d305a4e79573333520a10101"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60216101000a6101000a600055602160ff0a6101000a60015560216101010a6101000a60025560216101000a60ff0a600355602160ff0a60ff0a60045560216101010a60ff0a60055560216101000a6101010a600655602160ff0a6101010a60075560216101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_4.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_4.json
new file mode 100644
index 0000000000000000000000000000000000000000..7d5bc83bc4a6dd3b8f02f3d19c0a92da16aaa5e2
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_4.json
@@ -0,0 +1,55 @@
+{
+    "expPowerOf256Of256_4": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_4Filler.json",
+            "sourceHash": "9e89b6c7017914475e04d79e5d288d291131826bc9eed968aa011e9d948bf772"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x989680",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60046101000a6101000a600055600460ff0a6101000a60015560046101010a6101000a60025560046101000a60ff0a600355600460ff0a60ff0a60045560046101010a60ff0a60055560046101000a6101010a600655600460ff0a6101010a60075560046101010a6101010a600855",
+            "data": "0x",
+            "gas": "0x0f4240",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0d2fca",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60046101000a6101000a600055600460ff0a6101000a60015560046101010a6101000a60025560046101000a60ff0a600355600460ff0a60ff0a60045560046101010a60ff0a60055560046101000a6101010a600655600460ff0a6101010a60075560046101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {
+                    "0x03": "0xe6540ce46eaf70da9d644015a661e0e245b13f307cb3885514ff7f0000000001",
+                    "0x04": "0x6526b38b05a6325b80e1c84ab41dc934fd70f33f1bd0eab3d1f61a4707fc00ff",
+                    "0x05": "0xe959516cd27e5d8fd487b72db2989b3ec2ba9fb7ead41554526fe5a3040400ff",
+                    "0x06": "0xe7498a48c6ce2530bbe814ee3440c8c44fffab7ad8a277aa6aff810000000001",
+                    "0x07": "0x2dffa3e901e5a392d15b79f4193d2168147d2aa7c55870b46c3a905d03fc0101",
+                    "0x08": "0xe16ea721c96539edb4f7fb82de0dad8cccb1e7a6966a6777635f6fb908040101"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60046101000a6101000a600055600460ff0a6101000a60015560046101010a6101000a60025560046101000a60ff0a600355600460ff0a60ff0a60045560046101010a60ff0a60055560046101000a6101010a600655600460ff0a6101010a60075560046101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_5.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_5.json
new file mode 100644
index 0000000000000000000000000000000000000000..00b842223f6f81846fd1bc207c59ebad81201a1f
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_5.json
@@ -0,0 +1,55 @@
+{
+    "expPowerOf256Of256_5": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_5Filler.json",
+            "sourceHash": "d81389f12c21ff3e30ea2020d3dd5d086364da646e9fe273b4ad9f954f06ec60"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x989680",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60056101000a6101000a600055600560ff0a6101000a60015560056101010a6101000a60025560056101000a60ff0a600355600560ff0a60ff0a60045560056101010a60ff0a60055560056101000a6101010a600655600560ff0a6101010a60075560056101010a6101010a600855",
+            "data": "0x",
+            "gas": "0x0f4240",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0d2f70",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60056101000a6101000a600055600560ff0a6101000a60015560056101010a6101000a60025560056101000a60ff0a600355600560ff0a60ff0a60045560056101010a60ff0a60055560056101000a6101010a600655600560ff0a6101010a60075560056101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {
+                    "0x03": "0xb581ac185aad71db2d177c286929c4c22809e5dcb3085514ff7f000000000001",
+                    "0x04": "0x75789eb2a64bc971389fbd11a1e6d7abbf95ad25e23fb9aa25e73a0bfc83feff",
+                    "0x05": "0xfc403fa42ceb6a0d0d3321bd9b2d8af25b1b667f87a04f496c78168d078500ff",
+                    "0x06": "0xcec5ec213b9cb5811f6ae00428fd7b6ef5a1af39a1f7aa6aff81000000000001",
+                    "0x07": "0x70ab32233202b98d382d17713fa0be391eaf74f85ba1740c9c3238c4ed85ff01",
+                    "0x08": "0xb622672a213faa79b32185ff93a7b27a8499e48f7b032cdb4d1a70300c850101"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60056101000a6101000a600055600560ff0a6101000a60015560056101010a6101000a60025560056101000a60ff0a600355600560ff0a60ff0a60045560056101010a60ff0a60055560056101000a6101010a600655600560ff0a6101010a60075560056101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_6.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_6.json
new file mode 100644
index 0000000000000000000000000000000000000000..23ae401e1ba1f5e795db4075bd3ce15e3f10578d
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_6.json
@@ -0,0 +1,55 @@
+{
+    "expPowerOf256Of256_6": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_6Filler.json",
+            "sourceHash": "d7294bb173d18f88acc0e8b342fe20037ce735b0eabab1ee878b6cccd909dd69"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x989680",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60066101000a6101000a600055600660ff0a6101000a60015560066101010a6101000a60025560066101000a60ff0a600355600660ff0a60ff0a60045560066101010a60ff0a60055560066101000a6101010a600655600660ff0a6101010a60075560066101010a6101010a600855",
+            "data": "0x",
+            "gas": "0x0f4240",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0d2f16",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60066101000a6101000a600055600660ff0a6101000a60015560066101010a6101000a60025560066101000a60ff0a600355600660ff0a60ff0a60045560066101010a60ff0a60055560066101000a6101010a600655600660ff0a6101010a60075560066101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {
+                    "0x03": "0x1948059de1def03c4ec35fc22c2bb8f2bf45dc33085514ff7f00000000000001",
+                    "0x04": "0x41f818a8e24eb6d7bb7b193b4f2b5fdcf4bd0d453f2ac3499d8830d391fa00ff",
+                    "0x05": "0xede6fe4a943dfb5d967a2b85d6728759d40d2ef0ae4bc28bbb1867f98c0600ff",
+                    "0x06": "0x083c936cbaad5de592badc2e142fe4ebd6103921f7aa6aff8100000000000001",
+                    "0x07": "0x57385019fe4e0939ca3f35c37cadfaf52fba5b1cdfb02def3866e8068bfa0101",
+                    "0x08": "0x810ac878bd98428f6be8c6426ba9f9da09e3e33bf4fe10bfa3f8b12c92060101"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60066101000a6101000a600055600660ff0a6101000a60015560066101010a6101000a60025560066101000a60ff0a600355600660ff0a60ff0a60045560066101010a60ff0a60055560066101000a6101010a600655600660ff0a6101010a60075560066101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_7.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_7.json
new file mode 100644
index 0000000000000000000000000000000000000000..d10f25a1bbfd466d1ff98c815c6f0d71f9d4948e
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_7.json
@@ -0,0 +1,55 @@
+{
+    "expPowerOf256Of256_7": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_7Filler.json",
+            "sourceHash": "5f0497543f5bbfea20d19f43c7129d149e737241704676e072b63afde805be9a"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x989680",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60076101000a6101000a600055600760ff0a6101000a60015560076101010a6101000a60025560076101000a60ff0a600355600760ff0a60ff0a60045560076101010a60ff0a60055560076101000a6101010a600655600760ff0a6101010a60075560076101010a6101010a600855",
+            "data": "0x",
+            "gas": "0x0f4240",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0d2ebc",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60076101000a6101000a600055600760ff0a6101000a60015560076101010a6101000a60025560076101000a60ff0a600355600760ff0a60ff0a60045560076101010a60ff0a60055560076101000a6101010a600655600760ff0a6101010a60075560076101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {
+                    "0x03": "0x8bb02654111ad8c60ad8af132283a81f455c33085514ff7f0000000000000001",
+                    "0x04": "0xa8f75c129dbb8466d6703a2a0b8212131b3248d70e2478862ac40fe17485feff",
+                    "0x05": "0x5fd4d2de580383ee59f5e800ddb3f1717ceae03aede19d3dec5e5a69918700ff",
+                    "0x06": "0xc8624230b524b85d6340da48a5db20370fb921f7aa6aff810000000000000001",
+                    "0x07": "0x287b58a5a13cd7f454468ca616c181712f5ed25433a7d5a894b6ced35f87ff01",
+                    "0x08": "0x09930d11ac2804fa977bf951593c8dff8498779cc0cdc5812a4fba2f98870101"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60076101000a6101000a600055600760ff0a6101000a60015560076101010a6101000a60025560076101000a60ff0a600355600760ff0a60ff0a60045560076101010a60ff0a60055560076101000a6101010a600655600760ff0a6101010a60075560076101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_8.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_8.json
new file mode 100644
index 0000000000000000000000000000000000000000..0a395fb5e3a533e23e8ca102f3e92ca419fdaa26
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_8.json
@@ -0,0 +1,55 @@
+{
+    "expPowerOf256Of256_8": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_8Filler.json",
+            "sourceHash": "15792a145929161f4b5174b8ac68de0118939c8190a930f37d644d5b713b6710"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x05f5e100",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60086101000a6101000a600055600860ff0a6101000a60015560086101010a6101000a60025560086101000a60ff0a600355600860ff0a60ff0a60045560086101010a60ff0a60055560086101000a6101010a600655600860ff0a6101010a60075560086101010a6101010a600855",
+            "data": "0x",
+            "gas": "0x989680",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x9682a2",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60086101000a6101000a600055600860ff0a6101000a60015560086101010a6101000a60025560086101000a60ff0a600355600860ff0a60ff0a60045560086101010a60ff0a60055560086101000a6101010a600655600860ff0a6101010a60075560086101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {
+                    "0x03": "0x230041a0e7602d6e459609ed39081ec55c33085514ff7f000000000000000001",
+                    "0x04": "0xc407d8a413ef9079ead457ed686a05ac81039c0cae0a7f6afd01e8461ff800ff",
+                    "0x05": "0x67a397e0692385e4cd83853aabce220a94d449e885fa867e96d3ef5e180800ff",
+                    "0x06": "0x70add926e753655d6d0ebe9c0f81368fb921f7aa6aff81000000000000000001",
+                    "0x07": "0x0bdce80b8378e43f13d454b9d0a4c83cf311b8eaa45d5122cfd544a217f80101",
+                    "0x08": "0x629c25790e1488998877a9ecdf0fb69637e77d8a4bdc1b46270093ba20080101"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60086101000a6101000a600055600860ff0a6101000a60015560086101010a6101000a60025560086101000a60ff0a600355600860ff0a60ff0a60045560086101010a60ff0a60055560086101000a6101010a600655600860ff0a6101010a60075560086101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_9.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_9.json
new file mode 100644
index 0000000000000000000000000000000000000000..45f230402a79a970a82469e29b6fbd0f97526ced
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_9.json
@@ -0,0 +1,55 @@
+{
+    "expPowerOf256Of256_9": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_9Filler.json",
+            "sourceHash": "212ea9362b564faaa5a671ac3903679ec022f19adddf2ba1efa75226fdfde37e"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x989680",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60096101000a6101000a600055600960ff0a6101000a60015560096101010a6101000a60025560096101000a60ff0a600355600960ff0a60ff0a60045560096101010a60ff0a60055560096101000a6101010a600655600960ff0a6101010a60075560096101010a6101010a600855",
+            "data": "0x",
+            "gas": "0x0f4240",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0d2e08",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60096101000a6101000a600055600960ff0a6101000a60015560096101010a6101000a60025560096101000a60ff0a600355600960ff0a60ff0a60045560096101010a60ff0a60055560096101000a6101010a600655600960ff0a6101010a60075560096101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {
+                    "0x03": "0x53017d8eb210db2c8cd4a299079ec55c33085514ff7f00000000000000000001",
+                    "0x04": "0x48be09b6c6ae2aa660f1972125cecbb1038b5d236ecf766ba786e2c4e887feff",
+                    "0x05": "0x2e350d847ba73dc2099f83f532951c47269d9fd7e411b50bae00a9581f8900ff",
+                    "0x06": "0x013ab9e1f0df89a184b4d07080b68fb921f7aa6aff8100000000000000000001",
+                    "0x07": "0xf387ed41c1050f9da667f429a3e8fb30b61a55ede97d7b8acd797a03cd89ff01",
+                    "0x08": "0x525696c22bb3ce00fd2e3f6bbb9b4ea1046a5e31fcff2fedf8f8c74d28890101"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60096101000a6101000a600055600960ff0a6101000a60015560096101010a6101000a60025560096101000a60ff0a600355600960ff0a60ff0a60045560096101010a60ff0a60055560096101000a6101010a600655600960ff0a6101010a60075560096101010a6101010a600855",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_1.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_1.json
new file mode 100644
index 0000000000000000000000000000000000000000..e7c7acc131f90dda2655a7cdf701863caad7a59e
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_1.json
@@ -0,0 +1,52 @@
+{
+    "expPowerOf256_1": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256_1Filler.json",
+            "sourceHash": "0d7062f87c376d5496399d09973fd1d17d4e5812c3b44c5a16f35243e382fd64"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60016101000a600055600160ff0a60015560016101010a600255",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x9be9",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60016101000a600055600160ff0a60015560016101010a600255",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x0100",
+                    "0x01": "0xff",
+                    "0x02": "0x0101"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60016101000a600055600160ff0a60015560016101010a600255",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_10.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_10.json
new file mode 100644
index 0000000000000000000000000000000000000000..3545996c96f21bed9fe30637399eb187507a54bc
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_10.json
@@ -0,0 +1,52 @@
+{
+    "expPowerOf256_10": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256_10Filler.json",
+            "sourceHash": "04051dd7b9d82fc286b3295f20d29f42f9e92cd282e588295c728f27f781d635"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x600a6101000a600055600a60ff0a600155600a6101010a600255",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x9be9",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x600a6101000a600055600a60ff0a600155600a6101010a600255",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x0100000000000000000000",
+                    "0x01": "0xf62c88d104d1882cf601",
+                    "0x02": "0x010a2d78d2fcd2782d0a01"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x600a6101000a600055600a60ff0a600155600a6101010a600255",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_11.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_11.json
new file mode 100644
index 0000000000000000000000000000000000000000..36615b8e9f39c87055ad27b2977cb4ab94fe91c1
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_11.json
@@ -0,0 +1,52 @@
+{
+    "expPowerOf256_11": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256_11Filler.json",
+            "sourceHash": "539fa78d77db2b2b4e5dadf17841ea9ccce92cee9e965e405ae3da8343d38383"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x600b6101000a600055600b60ff0a600155600b6101010a600255",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x9be9",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x600b6101000a600055600b60ff0a600155600b6101010a600255",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x010000000000000000000000",
+                    "0x01": "0xf5365c4833ccb6a4c90aff",
+                    "0x02": "0x010b37a64bcfcf4aa5370b01"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x600b6101000a600055600b60ff0a600155600b6101010a600255",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_12.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_12.json
new file mode 100644
index 0000000000000000000000000000000000000000..27f7c3fbac44bc37e97343af1523592afa6787d2
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_12.json
@@ -0,0 +1,52 @@
+{
+    "expPowerOf256_12": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256_12Filler.json",
+            "sourceHash": "c837269f587b7fa487d63c649517f0c82e0ab3fbc87cf3209ee63214adb247fc"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x600c6101000a600055600c60ff0a600155600c6101010a600255",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x9be9",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x600c6101000a600055600c60ff0a600155600c6101010a600255",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x01000000000000000000000000",
+                    "0x01": "0xf44125ebeb98e9ee2441f401",
+                    "0x02": "0x010c42ddf21b9f19efdc420c01"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x600c6101000a600055600c60ff0a600155600c6101010a600255",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_13.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_13.json
new file mode 100644
index 0000000000000000000000000000000000000000..f2a1ba949cf1204c68af9945fdf8a5fe4e336d68
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_13.json
@@ -0,0 +1,52 @@
+{
+    "expPowerOf256_13": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256_13Filler.json",
+            "sourceHash": "164362da0450215255015d0d05abaa8b78e77646f27966337a8a878f16da6f43"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x600d6101000a600055600d60ff0a600155600d6101010a600255",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x9be9",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x600d6101000a600055600d60ff0a600155600d6101010a600255",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x0100000000000000000000000000",
+                    "0x01": "0xf34ce4c5ffad5104361db20cff",
+                    "0x02": "0x010d4f20d00dbab909cc1e4e0d01"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x600d6101000a600055600d60ff0a600155600d6101010a600255",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_14.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_14.json
new file mode 100644
index 0000000000000000000000000000000000000000..2b1c78ae30d9d04a6661d965be29cb29c2935e08
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_14.json
@@ -0,0 +1,52 @@
+{
+    "expPowerOf256_14": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256_14Filler.json",
+            "sourceHash": "bb07d85208662a3236b75df0e004bf54abb982bb14e8134b13e666279a39f6a1"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x600e6101000a600055600e60ff0a600155600e6101010a600255",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x9be9",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x600e6101000a600055600e60ff0a600155600e6101010a600255",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x010000000000000000000000000000",
+                    "0x01": "0xf25997e139ada3b331e7945af201",
+                    "0x02": "0x010e5c6ff0ddc873c2d5ea6c5b0e01"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x600e6101000a600055600e60ff0a600155600e6101010a600255",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_15.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_15.json
new file mode 100644
index 0000000000000000000000000000000000000000..f76bedba76012a8ba5782e64b54198e900779778
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_15.json
@@ -0,0 +1,52 @@
+{
+    "expPowerOf256_15": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256_15Filler.json",
+            "sourceHash": "43d4318cd8989bb434be6f41f011dd397eb2b2c785070bedf9e4a333b279b5c7"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x600f6101000a600055600f60ff0a600155600f6101010a600255",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x9be9",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x600f6101000a600055600f60ff0a600155600f6101010a600255",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x01000000000000000000000000000000",
+                    "0x01": "0xf1673e495873f60f7eb5acc6970eff",
+                    "0x02": "0x010f6acc60cea63c3698c056c7690f01"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x600f6101000a600055600f60ff0a600155600f6101010a600255",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_16.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_16.json
new file mode 100644
index 0000000000000000000000000000000000000000..e12e4148379eaf523a147b4d0cd2d9d9b3efa3f2
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_16.json
@@ -0,0 +1,52 @@
+{
+    "expPowerOf256_16": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256_16Filler.json",
+            "sourceHash": "66586a25e55376d52b4c15b22b116ffa26232b26978a9f16403d7e37560f8065"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60106101000a600055601060ff0a60015560106101010a600255",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x9be9",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60106101000a600055601060ff0a60015560106101010a600255",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x0100000000000000000000000000000000",
+                    "0x01": "0xf075d70b0f1b82196f36f719d077f001",
+                    "0x02": "0x01107a372d2f74e272cf59171e30781001"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60106101000a600055601060ff0a60015560106101010a600255",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_17.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_17.json
new file mode 100644
index 0000000000000000000000000000000000000000..8470d679d6d327cb4293d2a65f35a9d55bc118d4
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_17.json
@@ -0,0 +1,52 @@
+{
+    "expPowerOf256_17": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256_17Filler.json",
+            "sourceHash": "5340e7363062468ab959ac92d014d03bd8e172fc6764fc7d2fe0200d437662da"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60116101000a600055601160ff0a60015560116101010a600255",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x9be9",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60116101000a600055601160ff0a60015560116101010a600255",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x010000000000000000000000000000000000",
+                    "0x01": "0xef856134040c669755c7c022b6a77810ff",
+                    "0x02": "0x01118ab1645ca45755422870354ea8881101"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60116101000a600055601160ff0a60015560116101010a600255",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_18.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_18.json
new file mode 100644
index 0000000000000000000000000000000000000000..c46d7a9382c68f91423467f9d9972d5ece03a45c
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_18.json
@@ -0,0 +1,52 @@
+{
+    "expPowerOf256_18": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256_18Filler.json",
+            "sourceHash": "d2e13a0fdf747a1900296c97eb60b6ae888c47d96e776159454b321e2f0dc362"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60126101000a600055601260ff0a60015560126101010a600255",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x9be9",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60126101000a600055601260ff0a60015560126101010a600255",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x01000000000000000000000000000000000000",
+                    "0x01": "0xee95dbd2d0085a30be71f86293f0d098ee01",
+                    "0x02": "0x01129c3c15c100fbac976a98a583f730991201"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60126101000a600055601260ff0a60015560126101010a600255",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_19.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_19.json
new file mode 100644
index 0000000000000000000000000000000000000000..111e287c48aa7ece1fe8008ab48b2e89c2fa3d16
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_19.json
@@ -0,0 +1,52 @@
+{
+    "expPowerOf256_19": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256_19Filler.json",
+            "sourceHash": "37d0b9634c1b1523efd2a59cbba3a9bebf63696e36f07c786266b1da5b767667"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60136101000a600055601360ff0a60015560136101010a600255",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x9be9",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60136101000a600055601360ff0a60015560136101010a600255",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x0100000000000000000000000000000000000000",
+                    "0x01": "0xeda745f6fd3851d68db3866a315cdfc85512ff",
+                    "0x02": "0x0113aed851d6c1fca84402033e297b27c9ab1301"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60136101000a600055601360ff0a60015560136101010a600255",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_2.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_2.json
new file mode 100644
index 0000000000000000000000000000000000000000..b32c1696c20a6cd760a455e9f3f3608910e6bece
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_2.json
@@ -0,0 +1,52 @@
+{
+    "expPowerOf256_2": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256_2Filler.json",
+            "sourceHash": "fc70a26e625c0d09ff09f1c38b004037cb6ac37d222ab8f7e5d63ffeecb548bf"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60026101000a600055600260ff0a60015560026101010a600255",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x9be9",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60026101000a600055600260ff0a60015560026101010a600255",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x010000",
+                    "0x01": "0xfe01",
+                    "0x02": "0x010201"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60026101000a600055600260ff0a60015560026101010a600255",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_20.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_20.json
new file mode 100644
index 0000000000000000000000000000000000000000..d3b9e32b6505e6cd359b39ee362c698913f05877
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_20.json
@@ -0,0 +1,52 @@
+{
+    "expPowerOf256_20": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256_20Filler.json",
+            "sourceHash": "d895dace7075b6b234a3b6669055b84a074d38caf2c94740dd707ede5c4e52e6"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60146101000a600055601460ff0a60015560146101010a600255",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x9be9",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60146101000a600055601460ff0a60015560146101010a600255",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x010000000000000000000000000000000000000000",
+                    "0x01": "0xecb99eb1063b1984b725d2e3c72b82e88cbdec01",
+                    "0x02": "0x0114c2872a2898bea4ec46054167a4a2f174be1401"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60146101000a600055601460ff0a60015560146101010a600255",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_21.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_21.json
new file mode 100644
index 0000000000000000000000000000000000000000..1dd78bd3967ca747a27196984f3a432bacf37679
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_21.json
@@ -0,0 +1,52 @@
+{
+    "expPowerOf256_21": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256_21Filler.json",
+            "sourceHash": "85a12df1a4f899dbb79e93cd5ecebe67fdd00f6a01ecf7d2beb506e50917de31"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60156101000a600055601560ff0a60015560156101010a600255",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x9be9",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60156101000a600055601560ff0a60015560156101010a600255",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x01000000000000000000000000000000000000000000",
+                    "0x01": "0xebcce5125534de6b326ead10e3645765a4312e14ff",
+                    "0x02": "0x0115d749b152c1576391324b46a90c47946632d21501"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60156101000a600055601560ff0a60015560156101010a600255",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_22.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_22.json
new file mode 100644
index 0000000000000000000000000000000000000000..c47ec3ad47be559e987aa0b50c83d03959172a00
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_22.json
@@ -0,0 +1,52 @@
+{
+    "expPowerOf256_22": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256_22Filler.json",
+            "sourceHash": "d6c840b8fed448a5485f9902fbe548d3d0833253591b7523d2c8e7cee4b45d46"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60166101000a600055601660ff0a60015560166101010a600255",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x9be9",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60166101000a600055601660ff0a60015560166101010a600255",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x0100000000000000000000000000000000000000000000",
+                    "0x01": "0xeae1182d42dfa98cc73c3e63d280f30e3e8cfce6ea01",
+                    "0x02": "0x0116ed20fb041418baf4c37d91efb553dbfa9904e71601"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60166101000a600055601660ff0a60015560166101010a600255",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_23.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_23.json
new file mode 100644
index 0000000000000000000000000000000000000000..6ac6e6a00786dd0ae50c4b1bc51366b21888bdad
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_23.json
@@ -0,0 +1,52 @@
+{
+    "expPowerOf256_23": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256_23Filler.json",
+            "sourceHash": "70639158e9a2e7705e8e651519caa294422d4c22c4ae5f7aa4208c99934f8750"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60176101000a600055601760ff0a60015560176101010a600255",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x9be9",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60176101000a600055601760ff0a60015560176101010a600255",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x010000000000000000000000000000000000000000000000",
+                    "0x01": "0xe9f63715159cc9e33a7502256eae721b304e6fea0316ff",
+                    "0x02": "0x0118040e1bff182cd3afb8410f81a5092fd6939debfd1701"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60176101000a600055601760ff0a60015560176101010a600255",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_24.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_24.json
new file mode 100644
index 0000000000000000000000000000000000000000..fdf5a4c94f6708dde80848013088b6e6225dedbf
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_24.json
@@ -0,0 +1,52 @@
+{
+    "expPowerOf256_24": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256_24Filler.json",
+            "sourceHash": "de159931cdc4d9e3b05bcd2450e0a3a68cefd8f7790f0e9b3e4bd20b00348372"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60186101000a600055601860ff0a60015560186101010a600255",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x9be9",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60186101000a600055601860ff0a60015560186101010a600255",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x01000000000000000000000000000000000000000000000000",
+                    "0x01": "0xe90c40de00872d19573a8d23493fc3a9151e217a1913e801",
+                    "0x02": "0x01191c122a1b1745008367f9509126ae39066a3189e9141801"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60186101000a600055601860ff0a60015560186101010a600255",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_25.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_25.json
new file mode 100644
index 0000000000000000000000000000000000000000..2bd2dde406c2d9af6373f04c14a486ee28e79942
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_25.json
@@ -0,0 +1,52 @@
+{
+    "expPowerOf256_25": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256_25Filler.json",
+            "sourceHash": "2be606687455e2c91c144dee314eb4a9b58d6d8fb20cdc3a2a5e249d343bff20"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60196101000a600055601960ff0a60015560196101010a600255",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x9be9",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60196101000a600055601960ff0a60015560196101010a600255",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x0100000000000000000000000000000000000000000000000000",
+                    "0x01": "0xe823349d2286a5ec3de3529625f683e56c0903589efad418ff",
+                    "0x02": "0x011a352e3c45325c4583eb6149e1b7d4e73f709bbb72fd2c1901"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60196101000a600055601960ff0a60015560196101010a600255",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_26.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_26.json
new file mode 100644
index 0000000000000000000000000000000000000000..42e404d77179671271976a3051bcc45c6a8a46ed
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_26.json
@@ -0,0 +1,52 @@
+{
+    "expPowerOf256_26": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256_26Filler.json",
+            "sourceHash": "af71d938f6d58b1844196bd7efc232950357925dffae71ba917e3fae15fd590b"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x601a6101000a600055601a60ff0a600155601a6101010a600255",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x9be9",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x601a6101000a600055601a60ff0a600155601a6101010a600255",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x010000000000000000000000000000000000000000000000000000",
+                    "0x01": "0xe73b116885641f4651a56f438fd08d61869cfa55465bd944e601",
+                    "0x02": "0x011b4f636a81778ea1c96f4cab2b998cbc26b00c572e7029451a01"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x601a6101000a600055601a60ff0a600155601a6101010a600255",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_27.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_27.json
new file mode 100644
index 0000000000000000000000000000000000000000..6295ad3aa0525c729be7801012d873ca0cc7d775
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_27.json
@@ -0,0 +1,52 @@
+{
+    "expPowerOf256_27": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256_27Filler.json",
+            "sourceHash": "12b4fd8203f25dac8e6737c3bed9161e0a5750b398c2422c4e11ad654f0c3b36"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x601b6101000a600055601b60ff0a600155601b6101010a600255",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x9be9",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x601b6101000a600055601b60ff0a600155601b6101010a600255",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x01000000000000000000000000000000000000000000000000000000",
+                    "0x01": "0xe653d6571cdebb270b53c9d44c40bcd425165d5af1157d6ba11aff",
+                    "0x02": "0x011c6ab2cdebf906306b38bbf7d6c52648e2d6bc63859e996e5f1b01"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x601b6101000a600055601b60ff0a600155601b6101010a600255",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_28.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_28.json
new file mode 100644
index 0000000000000000000000000000000000000000..228b35216b33b4cc3706ccb60894eed7cdbfc8aa
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_28.json
@@ -0,0 +1,52 @@
+{
+    "expPowerOf256_28": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256_28Filler.json",
+            "sourceHash": "e17b86493cb24537086cf9add344b6ae59bf3ae5940aeb9ad44eeb4a746823ef"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x601c6101000a600055601c60ff0a600155601c6101010a600255",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x9be9",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x601c6101000a600055601c60ff0a600155601c6101010a600255",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x0100000000000000000000000000000000000000000000000000000000",
+                    "0x01": "0xe56d8280c5c1dc6be448760a77f47c1750f146fd962467ee3579e401",
+                    "0x02": "0x011d871d80b9e4ff369ba3f4b3ce9beb6f2bb9931fe9243807cd7a1c01"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x601c6101000a600055601c60ff0a600155601c6101010a600255",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_29.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_29.json
new file mode 100644
index 0000000000000000000000000000000000000000..dabe8e0cd80a928762271b358758b8e166e1185a
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_29.json
@@ -0,0 +1,52 @@
+{
+    "expPowerOf256_29": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256_29Filler.json",
+            "sourceHash": "b90d51e859337fb3fcf2e09ca2206790304d7bbaf7c5752081dfa62ec20a00bb"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x601d6101000a600055601d60ff0a600155601d6101010a600255",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x9be9",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x601d6101000a600055601d60ff0a600155601d6101010a600255",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x010000000000000000000000000000000000000000000000000000000000",
+                    "0x01": "0xe48814fe44fc1a8f78642d946d7c879b39a055b6988e438647446a1cff",
+                    "0x02": "0x011ea4a49e3a9ee435d23f98a8826a875a9ae54cb3090d5c3fd547961d01"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x601d6101000a600055601d60ff0a600155601d6101010a600255",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_3.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_3.json
new file mode 100644
index 0000000000000000000000000000000000000000..c46d139962286bb3378ea7cac0ccbccbf52b2624
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_3.json
@@ -0,0 +1,52 @@
+{
+    "expPowerOf256_3": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256_3Filler.json",
+            "sourceHash": "6214682fab04f2582976d90de343ca30bf46ab6f7793ef052c9c0cd244c29c6e"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60036101000a600055600360ff0a60015560036101010a600255",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x9be9",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60036101000a600055600360ff0a60015560036101010a600255",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x01000000",
+                    "0x01": "0xfd02ff",
+                    "0x02": "0x01030301"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60036101000a600055600360ff0a60015560036101010a600255",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_30.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_30.json
new file mode 100644
index 0000000000000000000000000000000000000000..9569c75b2192370ac65f2129516deba37215da9d
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_30.json
@@ -0,0 +1,52 @@
+{
+    "expPowerOf256_30": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256_30Filler.json",
+            "sourceHash": "68b204da901a1c2f2cf81688626dad9204b912276b7e4432974a8c0e256715ac"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x601e6101000a600055601e60ff0a600155601e6101010a600255",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x9be9",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x601e6101000a600055601e60ff0a600155601e6101010a600255",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x01000000000000000000000000000000000000000000000000000000000000",
+                    "0x01": "0xe3a38ce946b71e74e8ebc966d90f0b139e66b560e1f5b542c0fd25b2e201",
+                    "0x02": "0x011fc34942d8d9831a0811d8412aecf1e1f58031ffbc16699c151cddb31e01"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x601e6101000a600055601e60ff0a600155601e6101010a600255",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_31.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_31.json
new file mode 100644
index 0000000000000000000000000000000000000000..5b972d3bc9817ab4c4a9c613488361d42a091e5f
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_31.json
@@ -0,0 +1,52 @@
+{
+    "expPowerOf256_31": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256_31Filler.json",
+            "sourceHash": "49e5149601ae2cfa0564b18d38bcc35b4fe703cac76882025a1b35a9cabef567"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x601f6101000a600055601f60ff0a600155601f6101010a600255",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x9be9",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x601f6101000a600055601f60ff0a600155601f6101010a600255",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x0100000000000000000000000000000000000000000000000000000000000000",
+                    "0x01": "0xe2bfe95c5d7067567402dd9d7235fc088ac84eab8113bf8d7e3c288d2f1eff",
+                    "0x02": "0x0120e30c8c1bb25c9d2219ea196c17ded3d775b231bbd28005b131fa90d11f01"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x601f6101000a600055601f60ff0a600155601f6101010a600255",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_32.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_32.json
new file mode 100644
index 0000000000000000000000000000000000000000..09b1fe21ca00856ce4b867615a0b203aec1308a8
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_32.json
@@ -0,0 +1,51 @@
+{
+    "expPowerOf256_32": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256_32Filler.json",
+            "sourceHash": "974decf621c77d7ff79be3bc89ae8deecb63c5766ea8fd5a83b2dfd3b1f2058c"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60206101000a600055602060ff0a60015560206101010a600255",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0xd681",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60206101000a600055602060ff0a60015560206101010a600255",
+                "nonce": "0x00",
+                "storage": {
+                    "0x01": "0xe1dd29730112f6ef1d8edabfd4c3c60c823d865cd592abcdf0bdec64a1efe001",
+                    "0x02": "0x2203ef98a7ce0ef9bf3c04038583f6b2ab4d27e3ed8e5285b6e32c8b61f02001"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60206101000a600055602060ff0a60015560206101010a600255",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_33.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_33.json
new file mode 100644
index 0000000000000000000000000000000000000000..acf63ce777ba7ed18f4601ce40ab102ed80caafa
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_33.json
@@ -0,0 +1,51 @@
+{
+    "expPowerOf256_33": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256_33Filler.json",
+            "sourceHash": "2a7b68ea601c62fb6ae7603e4576332eb8e52655734329d0b56be10ce4d88d8f"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60216101000a600055602160ff0a60015560216101010a600255",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0xd681",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60216101000a600055602160ff0a60015560216101010a600255",
+                "nonce": "0x00",
+                "storage": {
+                    "0x01": "0xfb4c498e11e3f82e714be514ef024675bb48d678bd192222cd2e783d4df020ff",
+                    "0x02": "0x25f3884075dd08b8fb400789097aa95df8750bd17be0d83c9a0fb7ed52102101"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60216101000a600055602160ff0a60015560216101010a600255",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_4.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_4.json
new file mode 100644
index 0000000000000000000000000000000000000000..c6c6108c75d454ed1237064bc21760f181e54cf0
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_4.json
@@ -0,0 +1,52 @@
+{
+    "expPowerOf256_4": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256_4Filler.json",
+            "sourceHash": "622075985c1d1107f37816ee8e9b24730902567916e00e2cc3b732f2dff0cbea"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60046101000a600055600460ff0a60015560046101010a600255",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x9be9",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60046101000a600055600460ff0a60015560046101010a600255",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x0100000000",
+                    "0x01": "0xfc05fc01",
+                    "0x02": "0x0104060401"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60046101000a600055600460ff0a60015560046101010a600255",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_5.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_5.json
new file mode 100644
index 0000000000000000000000000000000000000000..59ad161a73d48d02910aa0e9fc86f68226ae5141
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_5.json
@@ -0,0 +1,52 @@
+{
+    "expPowerOf256_5": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256_5Filler.json",
+            "sourceHash": "0deb85f9420b006b9e7cad328b4f1df2a820afac55d7ab1e0be81a67b9f4bf0c"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60056101000a600055600560ff0a60015560056101010a600255",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x9be9",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60056101000a600055600560ff0a60015560056101010a600255",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x010000000000",
+                    "0x01": "0xfb09f604ff",
+                    "0x02": "0x01050a0a0501"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60056101000a600055600560ff0a60015560056101010a600255",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_6.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_6.json
new file mode 100644
index 0000000000000000000000000000000000000000..80ab8a989c6fa671f5225a0468448d60299a3053
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_6.json
@@ -0,0 +1,52 @@
+{
+    "expPowerOf256_6": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256_6Filler.json",
+            "sourceHash": "fce500eb9c5fb197ee2d407f7a0e6f69ad4bb1905ce651982255241e9b5210fd"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60066101000a600055600660ff0a60015560066101010a600255",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x9be9",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60066101000a600055600660ff0a60015560066101010a600255",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x01000000000000",
+                    "0x01": "0xfa0eec0efa01",
+                    "0x02": "0x01060f140f0601"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60066101000a600055600660ff0a60015560066101010a600255",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_7.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_7.json
new file mode 100644
index 0000000000000000000000000000000000000000..130baab7e711809588cdcb07f04b995366ce9e85
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_7.json
@@ -0,0 +1,52 @@
+{
+    "expPowerOf256_7": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256_7Filler.json",
+            "sourceHash": "9f25116f93a9ebcf664ae3b302dcbc55d0c42a32ae52f837bff7057bc0adda16"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60076101000a600055600760ff0a60015560076101010a600255",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x9be9",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60076101000a600055600760ff0a60015560076101010a600255",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x0100000000000000",
+                    "0x01": "0xf914dd22eb06ff",
+                    "0x02": "0x0107152323150701"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60076101000a600055600760ff0a60015560076101010a600255",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_8.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_8.json
new file mode 100644
index 0000000000000000000000000000000000000000..062fd8f48805ce17026c8ecca95a01aaecf4c09d
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_8.json
@@ -0,0 +1,52 @@
+{
+    "expPowerOf256_8": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256_8Filler.json",
+            "sourceHash": "6852bc5231c88e1d8dbd098c914b6e4496748429c62d9a3bac90c3a452bfbf12"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60086101000a600055600860ff0a60015560086101010a600255",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x9be9",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60086101000a600055600860ff0a60015560086101010a600255",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x010000000000000000",
+                    "0x01": "0xf81bc845c81bf801",
+                    "0x02": "0x01081c3846381c0801"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60086101000a600055600860ff0a60015560086101010a600255",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_9.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_9.json
new file mode 100644
index 0000000000000000000000000000000000000000..7f2204a1ba29dd1af4c28e14540529656ddbb6c8
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_9.json
@@ -0,0 +1,52 @@
+{
+    "expPowerOf256_9": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf256_9Filler.json",
+            "sourceHash": "9daf0e960cb9e7ab3c3aaf8c587201eca7d809394fca60b0c301231d891d75d5"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60096101000a600055600960ff0a60015560096101010a600255",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x9be9",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60096101000a600055600960ff0a60015560096101010a600255",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x01000000000000000000",
+                    "0x01": "0xf723ac7d8253dc08ff",
+                    "0x02": "0x010924547e7e54240901"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60096101000a600055600960ff0a60015560096101010a600255",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf2_128.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf2_128.json
new file mode 100644
index 0000000000000000000000000000000000000000..5440c7c591bfa3a28f5e08fde357977dbb54f8a4
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf2_128.json
@@ -0,0 +1,52 @@
+{
+    "expPowerOf2_128": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf2_128Filler.json",
+            "sourceHash": "dac6d272b59f1cb03027b6e106b0b659a5ad6511e8cc121464dd73b220e512ff"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x608060020a600055607f60020a600155608160020a600255",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x9be9",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x608060020a600055607f60020a600155608160020a600255",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x0100000000000000000000000000000000",
+                    "0x01": "0x80000000000000000000000000000000",
+                    "0x02": "0x0200000000000000000000000000000000"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x608060020a600055607f60020a600155608160020a600255",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf2_16.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf2_16.json
new file mode 100644
index 0000000000000000000000000000000000000000..2ac14e4593fe686cac195404c8d4204a571d6df9
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf2_16.json
@@ -0,0 +1,52 @@
+{
+    "expPowerOf2_16": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf2_16Filler.json",
+            "sourceHash": "298553d61666a9d9042726a205f483b392fcf206135ff0c709abab221cbf07cb"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x601060020a600055600f60020a600155601160020a600255",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x9be9",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x601060020a600055600f60020a600155601160020a600255",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x010000",
+                    "0x01": "0x8000",
+                    "0x02": "0x020000"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x601060020a600055600f60020a600155601160020a600255",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf2_2.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf2_2.json
new file mode 100644
index 0000000000000000000000000000000000000000..8b55f49a7d9b9c798873db474efde33bf4a46201
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf2_2.json
@@ -0,0 +1,52 @@
+{
+    "expPowerOf2_2": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf2_2Filler.json",
+            "sourceHash": "a82b4186babe26c83c518bf8bbd99cd104af2f47bb39300eb40556aad07b5e12"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x600260020a600055600160020a600155600360020a600255",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x9be9",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x600260020a600055600160020a600155600360020a600255",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x04",
+                    "0x01": "0x02",
+                    "0x02": "0x08"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x600260020a600055600160020a600155600360020a600255",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf2_256.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf2_256.json
new file mode 100644
index 0000000000000000000000000000000000000000..0cea9a2ddafc320b3637b8b08b3443088f41f7a5
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf2_256.json
@@ -0,0 +1,50 @@
+{
+    "expPowerOf2_256": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf2_256Filler.json",
+            "sourceHash": "c188d36960623fbc68bd0024325dfd28df3964c6ef43d2e5322500c780389b05"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x61010060020a60005560ff60020a60015561010160020a600255",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x011105",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x61010060020a60005560ff60020a60015561010160020a600255",
+                "nonce": "0x00",
+                "storage": {
+                    "0x01": "0x8000000000000000000000000000000000000000000000000000000000000000"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x61010060020a60005560ff60020a60015561010160020a600255",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf2_32.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf2_32.json
new file mode 100644
index 0000000000000000000000000000000000000000..5841c8fe55d49d4a143b86951f4120b09fddcdd2
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf2_32.json
@@ -0,0 +1,52 @@
+{
+    "expPowerOf2_32": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf2_32Filler.json",
+            "sourceHash": "c6609e6780ee6df802de62d1dea9be23d63c4e9dcf9cccb789aea189af24ca4b"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x602060020a600055601f60020a600155602160020a600255",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x9be9",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x602060020a600055601f60020a600155602160020a600255",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x0100000000",
+                    "0x01": "0x80000000",
+                    "0x02": "0x0200000000"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x602060020a600055601f60020a600155602160020a600255",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf2_4.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf2_4.json
new file mode 100644
index 0000000000000000000000000000000000000000..fa6e31bb0582841238b9c428ced053e8e8269f32
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf2_4.json
@@ -0,0 +1,52 @@
+{
+    "expPowerOf2_4": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf2_4Filler.json",
+            "sourceHash": "824b5c5eb508090e972079c0ec4df08cb8a47ffaa01c430e27bd87d5fe5ff231"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x600460020a600055600360020a600155600560020a600255",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x9be9",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x600460020a600055600360020a600155600560020a600255",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x10",
+                    "0x01": "0x08",
+                    "0x02": "0x20"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x600460020a600055600360020a600155600560020a600255",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf2_64.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf2_64.json
new file mode 100644
index 0000000000000000000000000000000000000000..874f707f6ea275ec4089d208ee122c3b92685e40
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf2_64.json
@@ -0,0 +1,52 @@
+{
+    "expPowerOf2_64": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf2_64Filler.json",
+            "sourceHash": "54e3387f099e871b185cfc2774993f7c7a0e84043861114322ec501197877b00"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x604060020a600055603f60020a600155604160020a600255",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x9be9",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x604060020a600055603f60020a600155604160020a600255",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x010000000000000000",
+                    "0x01": "0x8000000000000000",
+                    "0x02": "0x020000000000000000"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x604060020a600055603f60020a600155604160020a600255",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf2_8.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf2_8.json
new file mode 100644
index 0000000000000000000000000000000000000000..bf2e9f00479a3caf0760f668178d4264e143cff0
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf2_8.json
@@ -0,0 +1,52 @@
+{
+    "expPowerOf2_8": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expPowerOf2_8Filler.json",
+            "sourceHash": "7fe7ad308e3f9e180ceaa707ef7c0704b9824db69d5583b389118c7d008259a0"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x600860020a600055600760020a600155600960020a600255",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x9be9",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x600860020a600055600760020a600155600960020a600255",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x0100",
+                    "0x01": "0x80",
+                    "0x02": "0x0200"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x600860020a600055600760020a600155600960020a600255",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expXY.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expXY.json
new file mode 100644
index 0000000000000000000000000000000000000000..9bc13a8e048c9eda8055f2a1815c955b42b1c0f5
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expXY.json
@@ -0,0 +1,51 @@
+{
+    "expXY": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expXYFiller.json",
+            "sourceHash": "aa54a8124b5ab846684618ae6ca2a2b00b6b6f89ea8a92916d4c344252bc73b9"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x6000356000556020356001556001546000540a600255",
+            "data": "0x0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000100000000000f",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0xd609",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6000356000556020356001556001546000540a600255",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x02",
+                    "0x01": "0x0100000000000f"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6000356000556020356001556001546000540a600255",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expXY_success.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expXY_success.json
new file mode 100644
index 0000000000000000000000000000000000000000..1e64bd4241013bce466241465cb65650b8ca68cf
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expXY_success.json
@@ -0,0 +1,52 @@
+{
+    "expXY_success": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/expXY_successFiller.json",
+            "sourceHash": "2591b4069ce479a824e6de352cc0feb650dd6e68e6b5d91a6ceae7ac47a182fd"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x6000356000556020356001556001546000540a600255",
+            "data": "0x0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000f",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x9bad",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6000356000556020356001556001546000540a600255",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x02",
+                    "0x01": "0x0f",
+                    "0x02": "0x8000"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6000356000556020356001556001546000540a600255",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/fibbonacci_unrolled.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/fibbonacci_unrolled.json
new file mode 100644
index 0000000000000000000000000000000000000000..38300eec266e585f0bea192e96da3f431b70ab22
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/fibbonacci_unrolled.json
@@ -0,0 +1,48 @@
+{
+    "fibbonacci_unrolled": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/fibbonacci_unrolledFiller.json",
+            "sourceHash": "f2efe4855621477d368126f2eb61a6c0e0a859482ba9ca35ae946c183095e687"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x989680",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x6001600181810181810181810181810181810181810181810181810181810181810181810181810181810181810181810181810181810160005260206000f3",
+            "data": "0x",
+            "gas": "0x0f4240",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0f4192",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x0000000000000000000000000000000000000000000000000000000000001055",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6001600181810181810181810181810181810181810181810181810181810181810181810181810181810181810181810181810181810160005260206000f3",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6001600181810181810181810181810181810181810181810181810181810181810181810181810181810181810181810181810181810160005260206000f3",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mod0.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mod0.json
new file mode 100644
index 0000000000000000000000000000000000000000..182bea8230fd23e5ea4efa0806112a198fefa1bd
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mod0.json
@@ -0,0 +1,50 @@
+{
+    "mod0": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/mod0Filler.json",
+            "sourceHash": "3e7d577aa0433a1c8bb59b19b139d2f195f93802b29f1cfa25586a5be27d5a55"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x6003600206600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x013872",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6003600206600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x02"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6003600206600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mod1.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mod1.json
new file mode 100644
index 0000000000000000000000000000000000000000..54e8cd063c8d6a88dcd3bf6e8f1b352f0d373d82
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mod1.json
@@ -0,0 +1,50 @@
+{
+    "mod1": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/mod1Filler.json",
+            "sourceHash": "400ab04d809c783c91ed79620d859ad3cde7557f4e16b629d883118692b010db"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff06600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x013872",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff06600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x01"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff06600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mod2.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mod2.json
new file mode 100644
index 0000000000000000000000000000000000000000..b6bd955a778ac87ce0f213d7f1bbf2a941ace1b7
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mod2.json
@@ -0,0 +1,48 @@
+{
+    "mod2": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/mod2Filler.json",
+            "sourceHash": "a0a44f5d470eb9b698cbb6e47079ddf9869089a7d53d72c2ee4742bb605c45b5"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600006600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x01730a",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600006600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600006600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mod3.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mod3.json
new file mode 100644
index 0000000000000000000000000000000000000000..94b0e5e3281f9a635bd3018b19ec13ee6f33ef12
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mod3.json
@@ -0,0 +1,48 @@
+{
+    "mod3": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/mod3Filler.json",
+            "sourceHash": "7488d5657da87f809a873eac653c93daab9bc57e606cd57c2a71071ba2ea2e3d"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x6000600306600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x01730a",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6000600306600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6000600306600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mod4.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mod4.json
new file mode 100644
index 0000000000000000000000000000000000000000..4c13e683d1204b271c2e58247d7ddd79da9b4218
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mod4.json
@@ -0,0 +1,50 @@
+{
+    "mod4": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/mod4Filler.json",
+            "sourceHash": "7d48b4616d7370ab85fa3014c889388eb07a0e6e111c8bc66ffdb5075245af30"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x6003600260000306600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x01386c",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6003600260000306600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x02"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6003600260000306600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/modByZero.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/modByZero.json
new file mode 100644
index 0000000000000000000000000000000000000000..645f930affe8a8da2ed7a88d5d955c3c1adda4fc
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/modByZero.json
@@ -0,0 +1,50 @@
+{
+    "modByZero": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/modByZeroFiller.json",
+            "sourceHash": "1ee861fa9935cce6f76e61719dd69f769ce07555784e64132bb11c83dc4ac82d"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x6001600060030603600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x01386c",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6001600060030603600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6001600060030603600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mul0.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mul0.json
new file mode 100644
index 0000000000000000000000000000000000000000..2a0f0123a031340a203a3d1d12b735eba764b0dd
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mul0.json
@@ -0,0 +1,50 @@
+{
+    "mul0": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/mul0Filler.json",
+            "sourceHash": "f10c71e7abc8fcf1c8275d4fab7995b1a099623699bec6b431b9b683adb13d19"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x6003600202600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x013872",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6003600202600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x06"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6003600202600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mul1.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mul1.json
new file mode 100644
index 0000000000000000000000000000000000000000..0911f259b4f419c9b6fda93daa621bd140ecc43d
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mul1.json
@@ -0,0 +1,50 @@
+{
+    "mul1": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/mul1Filler.json",
+            "sourceHash": "18ac7009fa72c2a295b18398053e4a38b7513dcc78cf21dda7165277645b8a31"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff02600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x013872",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff02600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x01"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff02600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mul2.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mul2.json
new file mode 100644
index 0000000000000000000000000000000000000000..a1e1cbe049116fcbbcf2ff9be41dac9002971bce
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mul2.json
@@ -0,0 +1,48 @@
+{
+    "mul2": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/mul2Filler.json",
+            "sourceHash": "15d55a50802f3114002e61e7cc3ccf67965130efc05f401666744665bb0fd7e5"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x6017600002600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x01730a",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6017600002600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6017600002600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mul3.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mul3.json
new file mode 100644
index 0000000000000000000000000000000000000000..4f20e4f3ec3b22773afc1602ff762be65287ae7d
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mul3.json
@@ -0,0 +1,50 @@
+{
+    "mul3": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/mul3Filler.json",
+            "sourceHash": "833d319fb029a718db5a29c1f80b163aea968523c768b47346331102fc245d9a"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x6001601702600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x013872",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6001601702600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x17"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6001601702600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mul4.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mul4.json
new file mode 100644
index 0000000000000000000000000000000000000000..c0d331a70dfb9ec0b8b86061d5d545942056cd46
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mul4.json
@@ -0,0 +1,50 @@
+{
+    "mul4": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/mul4Filler.json",
+            "sourceHash": "f2153621a98b81499e3d6692ee5ecb70305619ea9d216e33bfd4f30386c888cc"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f800000000000000000000000000000000000000000000000000000000000000002600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x013872",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f800000000000000000000000000000000000000000000000000000000000000002600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x8000000000000000000000000000000000000000000000000000000000000000"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f800000000000000000000000000000000000000000000000000000000000000002600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mul5.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mul5.json
new file mode 100644
index 0000000000000000000000000000000000000000..28df671df349ce85807d4e07f49b49e5189b0df4
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mul5.json
@@ -0,0 +1,48 @@
+{
+    "mul5": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/mul5Filler.json",
+            "sourceHash": "d3beb055e4e2cd779d8e0a9809c8d64f0afd3f2c5709e96781120b46c7c79f63"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x7f80000000000000000000000000000000000000000000000000000000000000007f800000000000000000000000000000000000000000000000000000000000000002600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x01730a",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x7f80000000000000000000000000000000000000000000000000000000000000007f800000000000000000000000000000000000000000000000000000000000000002600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x7f80000000000000000000000000000000000000000000000000000000000000007f800000000000000000000000000000000000000000000000000000000000000002600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mul6.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mul6.json
new file mode 100644
index 0000000000000000000000000000000000000000..51f28e3201d4275f2e89043f9f9dc1e890f16093
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mul6.json
@@ -0,0 +1,50 @@
+{
+    "mul6": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/mul6Filler.json",
+            "sourceHash": "11d29defa64cdfbb8a43175b0e372cd909c8117d038214db7e55287fe8b8e4e1"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff02600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x013872",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff02600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x01"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff02600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mul7.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mul7.json
new file mode 100644
index 0000000000000000000000000000000000000000..07808193a0cf9b9802d5599b4e470e7a8bc0fbce
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mul7.json
@@ -0,0 +1,48 @@
+{
+    "mul7": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/mul7Filler.json",
+            "sourceHash": "19d2f9f0f01f9720e26192d56e917a98349ebca4838b88b445f0bc192d31fb37"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x7001234567890abcdef0fedcba09876543217001234567890abcdef0fedcba09876543217001234567890abcdef0fedcba0987654321020260005260206000f3",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x01867e",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x47d0817e4167b1eb4f9fc722b133ef9d7d9a6fb4c2c1c442d000107a5e419561",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x7001234567890abcdef0fedcba09876543217001234567890abcdef0fedcba09876543217001234567890abcdef0fedcba0987654321020260005260206000f3",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x7001234567890abcdef0fedcba09876543217001234567890abcdef0fedcba09876543217001234567890abcdef0fedcba0987654321020260005260206000f3",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mulmod0.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mulmod0.json
new file mode 100644
index 0000000000000000000000000000000000000000..20d34c91ad128b51185a3e3abea78cf5a41943e1
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mulmod0.json
@@ -0,0 +1,48 @@
+{
+    "mulmod0": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/mulmod0Filler.json",
+            "sourceHash": "7a85365937f4a347082dcccf17277f2fabe096434e1463d033eca053177c26de"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60026002600109600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x017304",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60026002600109600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60026002600109600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mulmod1.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mulmod1.json
new file mode 100644
index 0000000000000000000000000000000000000000..7fc2fb55a11cdcbe2dbd2a2b74b6edaafe71c0f3
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mulmod1.json
@@ -0,0 +1,48 @@
+{
+    "mulmod1": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/mulmod1Filler.json",
+            "sourceHash": "6db56ceb11f53bd80b8f3531720133c250640c35c9ba822aba0d5ea2fb9c0bc6"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60036002600003600160000309600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0172f8",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60036002600003600160000309600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60036002600003600160000309600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mulmod1_overflow.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mulmod1_overflow.json
new file mode 100644
index 0000000000000000000000000000000000000000..597da982de43c8e6c879c24f4abbe52dbce35fac
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mulmod1_overflow.json
@@ -0,0 +1,48 @@
+{
+    "mulmod1_overflow": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/mulmod1_overflowFiller.json",
+            "sourceHash": "4c2a84a6695eac961ca4d3d9f493bd2b1f7294a9d182b3d6473156d242ce370f"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60056002600160000309600055",
+            "data": "0x",
+            "gas": "0x2710",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x136e",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60056002600160000309600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60056002600160000309600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mulmod1_overflow2.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mulmod1_overflow2.json
new file mode 100644
index 0000000000000000000000000000000000000000..baad99a6ff4161312fa1890b1b989ed663dc6879
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mulmod1_overflow2.json
@@ -0,0 +1,50 @@
+{
+    "mulmod1_overflow2": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/mulmod1_overflow2Filler.json",
+            "sourceHash": "17f238c5929305eeddf4df7e289bd41936bceafeccda7c1f3ad63df457cef8a4"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x600560027f800000000000000000000000000000000000000000000000000000000000000009600055",
+            "data": "0x",
+            "gas": "0x0f4240",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0ef40c",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x600560027f800000000000000000000000000000000000000000000000000000000000000009600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x01"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x600560027f800000000000000000000000000000000000000000000000000000000000000009600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mulmod1_overflow3.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mulmod1_overflow3.json
new file mode 100644
index 0000000000000000000000000000000000000000..6d952d85c429a6666c9ac97ca15916ad6bf42be0
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mulmod1_overflow3.json
@@ -0,0 +1,50 @@
+{
+    "mulmod1_overflow3": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/mulmod1_overflow3Filler.json",
+            "sourceHash": "07059fc8bbd6426ca73d3dbf7c27ee13cdfc6b7f011a4567fdf4c24db26a9289"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x600560027f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff09600055",
+            "data": "0x",
+            "gas": "0x0f4240",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0ef40c",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x600560027f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff09600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x04"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x600560027f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff09600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mulmod1_overflow4.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mulmod1_overflow4.json
new file mode 100644
index 0000000000000000000000000000000000000000..e1186e457a68454d59206b37cbfa212624f72e09
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mulmod1_overflow4.json
@@ -0,0 +1,50 @@
+{
+    "mulmod1_overflow4": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/mulmod1_overflow4Filler.json",
+            "sourceHash": "33cef2a558f1598c9506702942344efc563fb91d7afb8888c00313911aac3681"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x600560027f800000000000000000000000000000000000000000000000000000000000000109600055",
+            "data": "0x",
+            "gas": "0x0f4240",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0ef40c",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x600560027f800000000000000000000000000000000000000000000000000000000000000109600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x03"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x600560027f800000000000000000000000000000000000000000000000000000000000000109600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mulmod2.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mulmod2.json
new file mode 100644
index 0000000000000000000000000000000000000000..5c12812795d7dfedc9e43e40eeb9b135d30c5fe2
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mulmod2.json
@@ -0,0 +1,50 @@
+{
+    "mulmod2": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/mulmod2Filler.json",
+            "sourceHash": "775f75c0de180ff2d75ebace50e0de592f0c2d6fe37834d7ddee534a11a74b95"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60036001600560000309600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x013866",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60036001600560000309600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x02"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60036001600560000309600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mulmod2_0.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mulmod2_0.json
new file mode 100644
index 0000000000000000000000000000000000000000..88d0181ad64ab992244c41ecd50b4957ce021a21
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mulmod2_0.json
@@ -0,0 +1,48 @@
+{
+    "mulmod2_0": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/mulmod2_0Filler.json",
+            "sourceHash": "e0b5b4c3d337750afce688fd1052033093d205564d51c9b7ffd5d229431b87db"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60036001600560000309600360056000030714600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0172ea",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60036001600560000309600360056000030714600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60036001600560000309600360056000030714600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mulmod2_1.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mulmod2_1.json
new file mode 100644
index 0000000000000000000000000000000000000000..132ec283726a3929b2730734fdd266606bdc240b
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mulmod2_1.json
@@ -0,0 +1,50 @@
+{
+    "mulmod2_1": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/mulmod2_1Filler.json",
+            "sourceHash": "06ca473c76f3d122323af9b62efe6fdc9cc0908e176db279806be103db96dbf2"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60036001600560000309600360056000030614600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x013852",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60036001600560000309600360056000030614600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x01"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60036001600560000309600360056000030614600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mulmod3.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mulmod3.json
new file mode 100644
index 0000000000000000000000000000000000000000..69852d18bf0709e752a5429933a07f48f3235ae8
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mulmod3.json
@@ -0,0 +1,50 @@
+{
+    "mulmod3": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/mulmod3Filler.json",
+            "sourceHash": "7cc844062b25211aa679f8cd221741f0ee4128d6a52d7d19d571e5916541f0a8"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60036000036001600509600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x013866",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60036000036001600509600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x05"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60036000036001600509600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mulmod3_0.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mulmod3_0.json
new file mode 100644
index 0000000000000000000000000000000000000000..51a203023eed97253acb1542c0ba30a9e0e54b19
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mulmod3_0.json
@@ -0,0 +1,48 @@
+{
+    "mulmod3_0": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/mulmod3_0Filler.json",
+            "sourceHash": "b3d3a4cdf02aa5cb2b41d91cea4a94ef1c69b7b17c27d18fa16f3555dab41f24"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60026003600003600160050914600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0172f8",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60026003600003600160050914600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60026003600003600160050914600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mulmod4.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mulmod4.json
new file mode 100644
index 0000000000000000000000000000000000000000..e374d1e0dbbb30eb5f98c894edb79051919d9766
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mulmod4.json
@@ -0,0 +1,48 @@
+{
+    "mulmod4": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/mulmod4Filler.json",
+            "sourceHash": "6182e58d7e616d18db75f5a0fa4577abf1c00b1d76a62f9d86b8f2a72e133d44"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x6064601b60250960005360006001f3",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x018680",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6064601b60250960005360006001f3",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6064601b60250960005360006001f3",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mulmoddivByZero.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mulmoddivByZero.json
new file mode 100644
index 0000000000000000000000000000000000000000..e730ca6b50c0f8af36bee2cbd8323eca48496d8f
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mulmoddivByZero.json
@@ -0,0 +1,48 @@
+{
+    "mulmoddivByZero": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/mulmoddivByZeroFiller.json",
+            "sourceHash": "8a022cd49b9135b3a23925324bda3d394dd7a930e80699d054897bb40dbd7a9b"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60006001600509600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x017304",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60006001600509600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60006001600509600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mulmoddivByZero1.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mulmoddivByZero1.json
new file mode 100644
index 0000000000000000000000000000000000000000..4804dd823da41e73d43a4d9725f771b9915c51e4
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mulmoddivByZero1.json
@@ -0,0 +1,48 @@
+{
+    "mulmoddivByZero1": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/mulmoddivByZero1Filler.json",
+            "sourceHash": "cbcd5284164a3ec86b605bc3a42efb84f54710e7407b4b78d79a492d09ae8a7f"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60006001600009600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x017304",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60006001600009600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60006001600009600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mulmoddivByZero2.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mulmoddivByZero2.json
new file mode 100644
index 0000000000000000000000000000000000000000..f2a7fad01d5ed8073d7b9c47298ccdd6b4ea68a9
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mulmoddivByZero2.json
@@ -0,0 +1,48 @@
+{
+    "mulmoddivByZero2": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/mulmoddivByZero2Filler.json",
+            "sourceHash": "7f8bc67d37e359d6313f6e86a6569da126d12329f8bb93945b6902a9f03f51b5"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60006000600109600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x017304",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60006000600109600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60006000600109600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mulmoddivByZero3.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mulmoddivByZero3.json
new file mode 100644
index 0000000000000000000000000000000000000000..411a4b09c7e20d86c8df8cc756ebf7d2d62030fc
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mulmoddivByZero3.json
@@ -0,0 +1,50 @@
+{
+    "mulmoddivByZero3": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/mulmoddivByZero3Filler.json",
+            "sourceHash": "7688b4d65f8ec53bf9153958e4e1513cff10bf7aeef85358c5460c93650c5b7e"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60006000600009600103600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x013866",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60006000600009600103600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x01"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60006000600009600103600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/not1.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/not1.json
new file mode 100644
index 0000000000000000000000000000000000000000..7252d28aa2f8516dab580f8030e5d332f93ea90b
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/not1.json
@@ -0,0 +1,48 @@
+{
+    "not1": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/not1Filler.json",
+            "sourceHash": "1f61a917c75f86536e6a6d2244ef9fff5af15ae315eeca357fc50515d7998cc9"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x989680",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x6201e2406000526000511960005260206000f3",
+            "data": "0x",
+            "gas": "0x0f4240",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0f421f",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1dbf",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6201e2406000526000511960005260206000f3",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6201e2406000526000511960005260206000f3",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdiv0.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdiv0.json
new file mode 100644
index 0000000000000000000000000000000000000000..acf5ade8d9e78794b5ed120212e90238bd6c227e
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdiv0.json
@@ -0,0 +1,50 @@
+{
+    "sdiv0": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/sdiv0Filler.json",
+            "sourceHash": "2c0d876988f16b3044bf06c02656608dd4bff9d1c543b5bf4bdbc719077b6df4"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60000305600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x01386c",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60000305600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60000305600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdiv1.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdiv1.json
new file mode 100644
index 0000000000000000000000000000000000000000..b1684fbf8b1fc2cb9a587e586300b9aa9f959bce
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdiv1.json
@@ -0,0 +1,50 @@
+{
+    "sdiv1": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/sdiv1Filler.json",
+            "sourceHash": "4cb3f0d95c2be66db60cf7feb607cbe4e8626f770d5819b1687cea47f1d7ae51"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6000037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff05600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x01386c",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6000037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff05600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6000037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff05600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdiv2.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdiv2.json
new file mode 100644
index 0000000000000000000000000000000000000000..e33659653ca54e89ff59e547cc5f49f7d275d00b
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdiv2.json
@@ -0,0 +1,48 @@
+{
+    "sdiv2": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/sdiv2Filler.json",
+            "sourceHash": "ae07c37c5d2bb2af34d6fdf03af2b989192e0b33c10537da65e85c957a007312"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x6004600003600260000305600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0172fe",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6004600003600260000305600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6004600003600260000305600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdiv3.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdiv3.json
new file mode 100644
index 0000000000000000000000000000000000000000..0030f6df52e770310544b4eb6b2208693f13aaab
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdiv3.json
@@ -0,0 +1,50 @@
+{
+    "sdiv3": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/sdiv3Filler.json",
+            "sourceHash": "8ee2402bfe21dabf91e921a32251808f8ad9f3a9739132155e283cfe4f0a0747"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x6002600003600405600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x01386c",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6002600003600405600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6002600003600405600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdiv4.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdiv4.json
new file mode 100644
index 0000000000000000000000000000000000000000..5eae9385f3a5d01397951b57894a9bb114630dfe
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdiv4.json
@@ -0,0 +1,50 @@
+{
+    "sdiv4": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/sdiv4Filler.json",
+            "sourceHash": "271280077cf5bee771ebcccae268a86ac603c990debe40a7f3b0f32324def426"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x6004600003600505600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x01386c",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6004600003600505600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6004600003600505600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdiv5.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdiv5.json
new file mode 100644
index 0000000000000000000000000000000000000000..682fcee849cb9003163ce245032dfa9cbca4d65e
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdiv5.json
@@ -0,0 +1,50 @@
+{
+    "sdiv5": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/sdiv5Filler.json",
+            "sourceHash": "36db7de83011fb20807d30a5be5dfd0ab8b48c4f5cbb426d81e5189cc04d0694"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60016000037f800000000000000000000000000000000000000000000000000000000000000060000305600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x013866",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60016000037f800000000000000000000000000000000000000000000000000000000000000060000305600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x8000000000000000000000000000000000000000000000000000000000000000"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60016000037f800000000000000000000000000000000000000000000000000000000000000060000305600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdiv6.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdiv6.json
new file mode 100644
index 0000000000000000000000000000000000000000..eaf72d9f5ffcd471610aff2bc50978d60c76b7b8
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdiv6.json
@@ -0,0 +1,48 @@
+{
+    "sdiv6": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/sdiv6Filler.json",
+            "sourceHash": "a045b5379d9af7d8304b71f8c67876fcbf1710892858cec78a6bffb30d4e21e1"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60007f800000000000000000000000000000000000000000000000000000000000000060000305600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x017304",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60007f800000000000000000000000000000000000000000000000000000000000000060000305600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60007f800000000000000000000000000000000000000000000000000000000000000060000305600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdiv7.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdiv7.json
new file mode 100644
index 0000000000000000000000000000000000000000..5be1532828d5ca540d36d2df28e64ec8f95366aa
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdiv7.json
@@ -0,0 +1,48 @@
+{
+    "sdiv7": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/sdiv7Filler.json",
+            "sourceHash": "f4fe8c32af100ae3c2c8084e2b00306df9e38cf9313873ad810ecfa0461b7481"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x6019600160000305600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x017304",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6019600160000305600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6019600160000305600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdiv8.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdiv8.json
new file mode 100644
index 0000000000000000000000000000000000000000..0a58e78695022ee3b3062720e885c5882846a99f
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdiv8.json
@@ -0,0 +1,50 @@
+{
+    "sdiv8": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/sdiv8Filler.json",
+            "sourceHash": "78a291be48ce1144fbc0a8579c1a081a60f8b60b3ac5d6fedcc6293e18815caa"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x6001600003600160000305600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x013866",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6001600003600160000305600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x01"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6001600003600160000305600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdiv9.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdiv9.json
new file mode 100644
index 0000000000000000000000000000000000000000..ca39b09076e08f3c0271616168dced4c8d091395
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdiv9.json
@@ -0,0 +1,50 @@
+{
+    "sdiv9": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/sdiv9Filler.json",
+            "sourceHash": "7a561f7a1e2f67ee73d4a80da566df5cffb62750cf3ba78b3ed05d4060c719c0"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x6001600160000305600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x01386c",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6001600160000305600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6001600160000305600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdivByZero0.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdivByZero0.json
new file mode 100644
index 0000000000000000000000000000000000000000..90022b009bc22ef560c7a697bfaf6414db7eb84c
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdivByZero0.json
@@ -0,0 +1,48 @@
+{
+    "sdivByZero0": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/sdivByZero0Filler.json",
+            "sourceHash": "96ed2f4a00af3d35ce604e7c80653ab3bd82068c016d055b05a5ac974b617c75"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x6000600003600360000305600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0172fe",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6000600003600360000305600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6000600003600360000305600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdivByZero1.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdivByZero1.json
new file mode 100644
index 0000000000000000000000000000000000000000..c63950dbb2c1c2df3aeb1d1d5c08d588b486950a
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdivByZero1.json
@@ -0,0 +1,48 @@
+{
+    "sdivByZero1": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/sdivByZero1Filler.json",
+            "sourceHash": "b1da3a2bbeee8a06d2aed771b57930c7942ada63fc583943364cdc4f5944ba5a"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60000305600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x017304",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60000305600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60000305600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdivByZero2.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdivByZero2.json
new file mode 100644
index 0000000000000000000000000000000000000000..c74285fd29a77e7675ec2f494bb613e813311ea2
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdivByZero2.json
@@ -0,0 +1,50 @@
+{
+    "sdivByZero2": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/sdivByZero2Filler.json",
+            "sourceHash": "1c8def1dce7b0cbede238934556897534a1307ed30815446ef651b5f42526a01"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x600160007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf923bdff6000030501600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x013866",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x600160007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf923bdff6000030501600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x01"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x600160007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf923bdff6000030501600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdiv_dejavu.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdiv_dejavu.json
new file mode 100644
index 0000000000000000000000000000000000000000..0d80f2f8e206a8593d1e578b7835e72800a54180
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdiv_dejavu.json
@@ -0,0 +1,50 @@
+{
+    "sdiv_dejavu": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/sdiv_dejavuFiller.json",
+            "sourceHash": "a18742fdc18faf55d5d8473bdd7353855f15cbf0e5777fd844b887c56089c3c2"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x600560096000030580600055",
+            "data": "0x",
+            "gas": "0x989680",
+            "gasPrice": "0x01",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x984849",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x600560096000030580600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x600560096000030580600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdiv_i256min.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdiv_i256min.json
new file mode 100644
index 0000000000000000000000000000000000000000..288615bdc2592a7a48e8eb0e0c64a03cb33e79d9
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdiv_i256min.json
@@ -0,0 +1,50 @@
+{
+    "sdiv_i256min": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/sdiv_i256minFiller.json",
+            "sourceHash": "7b034b640478e576766cf07ec531a2e797b450e51e5e28ad8e44671b735a3c2d"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60016000037f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60000305600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x013866",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60016000037f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60000305600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60016000037f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60000305600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdiv_i256min2.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdiv_i256min2.json
new file mode 100644
index 0000000000000000000000000000000000000000..41f9e077561da38defd76da3b09ef2c8dc3caec1
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdiv_i256min2.json
@@ -0,0 +1,50 @@
+{
+    "sdiv_i256min2": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/sdiv_i256min2Filler.json",
+            "sourceHash": "aea84dd4611287455f1e3edacab6c6f97dcbc2514fe8c5c03634934d7f675822"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60016000037f800000000000000000000000000000000000000000000000000000000000000060000305600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x013866",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60016000037f800000000000000000000000000000000000000000000000000000000000000060000305600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x8000000000000000000000000000000000000000000000000000000000000000"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60016000037f800000000000000000000000000000000000000000000000000000000000000060000305600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdiv_i256min3.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdiv_i256min3.json
new file mode 100644
index 0000000000000000000000000000000000000000..adf69d6bb190cfb49e3a3ff139d96212cccf3105
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdiv_i256min3.json
@@ -0,0 +1,48 @@
+{
+    "sdiv_i256min3": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/sdiv_i256min3Filler.json",
+            "sourceHash": "e3bddf0c7cb0c1ac947275072cc39085532b34dbe34213f5a69a6a45c4f89f3e"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6000037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff05600055",
+            "data": "0x",
+            "gas": "0x0f4240",
+            "gasPrice": "0x01",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0f2ea4",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6000037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff05600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6000037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff05600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/signextendInvalidByteNumber.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/signextendInvalidByteNumber.json
new file mode 100644
index 0000000000000000000000000000000000000000..103134f4e49ab2ddaa87ca450732a8be937f871f
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/signextendInvalidByteNumber.json
@@ -0,0 +1,50 @@
+{
+    "signextendInvalidByteNumber": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/signextendInvalidByteNumberFiller.json",
+            "sourceHash": "ae2ebe3461944c83320578ae60e2d5b58ac8c905a085f8208174c2c4a43582f1"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x989680",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x62126af460500b600055",
+            "data": "0x",
+            "gas": "0x0f4240",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0ef412",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x62126af460500b600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x126af4"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x62126af460500b600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/signextend_00.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/signextend_00.json
new file mode 100644
index 0000000000000000000000000000000000000000..254d87190a88999d0781a4cf612db94f03065bc5
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/signextend_00.json
@@ -0,0 +1,48 @@
+{
+    "signextend_00": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/signextend_00Filler.json",
+            "sourceHash": "14c63e4a6badf000b6f489b33cbeebd1337d18f7118ae64c091cba0f2c71865c"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x989680",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x600060000b600055",
+            "data": "0x",
+            "gas": "0x0f4240",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0f2eaa",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x600060000b600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x600060000b600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/signextend_0_BigByte.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/signextend_0_BigByte.json
new file mode 100644
index 0000000000000000000000000000000000000000..c6f2c0e806bcb346a6de7c969be081cb775d795d
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/signextend_0_BigByte.json
@@ -0,0 +1,50 @@
+{
+    "signextend_0_BigByte": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/signextend_0_BigByteFiller.json",
+            "sourceHash": "51826d588208ff7923d16a2d7237a034e5549d9b576c4f676fe1a70c02cf8fa1"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x989680",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60000b600055",
+            "data": "0x",
+            "gas": "0x0f4240",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0ef412",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60000b600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60000b600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/signextend_AlmostBiggestByte.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/signextend_AlmostBiggestByte.json
new file mode 100644
index 0000000000000000000000000000000000000000..087fde37c37c64faeb9ec7e2dbb136db04ad2f03
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/signextend_AlmostBiggestByte.json
@@ -0,0 +1,50 @@
+{
+    "signextend_AlmostBiggestByte": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/signextend_AlmostBiggestByteFiller.json",
+            "sourceHash": "6b18abf5b443f69a5db8c96342dd485f1a667a69b8dbabf0a562c25dad996b76"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x989680",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0b600055",
+            "data": "0x",
+            "gas": "0x0f4240",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0ef412",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0b600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0b600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/signextend_BigByteBigByte.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/signextend_BigByteBigByte.json
new file mode 100644
index 0000000000000000000000000000000000000000..82d8ccaffafeea0dbc96f04b2827a391349213e3
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/signextend_BigByteBigByte.json
@@ -0,0 +1,50 @@
+{
+    "signextend_BigByteBigByte": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/signextend_BigByteBigByteFiller.json",
+            "sourceHash": "8e48087be94e847f3d64c7ac1b8ac041d85d63bae9aa6144ef668d5749f50d1a"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x989680",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0b600055",
+            "data": "0x",
+            "gas": "0x0f4240",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0ef412",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0b600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0b600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/signextend_BigBytePlus1_2.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/signextend_BigBytePlus1_2.json
new file mode 100644
index 0000000000000000000000000000000000000000..23f251c0737538c342ef22d6077486c752d20900
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/signextend_BigBytePlus1_2.json
@@ -0,0 +1,50 @@
+{
+    "signextend_BigBytePlus1_2": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/signextend_BigBytePlus1_2Filler.json",
+            "sourceHash": "0c4455484bad24f9a15f343c3082f14a6b13c61c67ffc2b79b00ba7edccfbf55"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x989680",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60ff68f000000000000000010b600055",
+            "data": "0x",
+            "gas": "0x0f4240",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0ef412",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60ff68f000000000000000010b600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0xff"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60ff68f000000000000000010b600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/signextend_BigByte_0.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/signextend_BigByte_0.json
new file mode 100644
index 0000000000000000000000000000000000000000..f0a989363c04d74cbf9f2410937853a77f4aa4bb
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/signextend_BigByte_0.json
@@ -0,0 +1,48 @@
+{
+    "signextend_BigByte_0": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/signextend_BigByte_0Filler.json",
+            "sourceHash": "3f541ab10aecc9a1f44cde8811de0aaae5a39b202a82ee3e11488a4320eb4af5"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x989680",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0b600055",
+            "data": "0x",
+            "gas": "0x0f4240",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0f2eaa",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0b600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0b600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/signextend_BitIsNotSet.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/signextend_BitIsNotSet.json
new file mode 100644
index 0000000000000000000000000000000000000000..da8eebaf048ef8d493ce931844847eba2cfd8042
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/signextend_BitIsNotSet.json
@@ -0,0 +1,50 @@
+{
+    "signextend_BitIsNotSet": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/signextend_BitIsNotSetFiller.json",
+            "sourceHash": "c9d69758b60dd1e44dd8eeabf7df4c0cc7a7276decdd717842036afcf5116b97"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x989680",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x62122f6a60000b600055",
+            "data": "0x",
+            "gas": "0x0f4240",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0ef412",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x62122f6a60000b600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x6a"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x62122f6a60000b600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/signextend_BitIsNotSetInHigherByte.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/signextend_BitIsNotSetInHigherByte.json
new file mode 100644
index 0000000000000000000000000000000000000000..5816d2fd377c62d9984ad9c46efa710aeb8038c3
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/signextend_BitIsNotSetInHigherByte.json
@@ -0,0 +1,50 @@
+{
+    "signextend_BitIsNotSetInHigherByte": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/signextend_BitIsNotSetInHigherByteFiller.json",
+            "sourceHash": "82d0345b35ff950ddc99d62e74ec1dd1ad97cfad97fea03ef678758d68af7f9f"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x989680",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x62126af460010b600055",
+            "data": "0x",
+            "gas": "0x0f4240",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0ef412",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x62126af460010b600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x6af4"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x62126af460010b600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/signextend_BitIsSetInHigherByte.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/signextend_BitIsSetInHigherByte.json
new file mode 100644
index 0000000000000000000000000000000000000000..71b41c515554b3cc321781d89dbb6388229bef1c
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/signextend_BitIsSetInHigherByte.json
@@ -0,0 +1,50 @@
+{
+    "signextend_BitIsSetInHigherByte": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/signextend_BitIsSetInHigherByteFiller.json",
+            "sourceHash": "b5dc9bb4906717453c5d4140f135bfe98b0fe8695e970ef24a29ab71df0bda1c"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x989680",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x6212faf460010b600055",
+            "data": "0x",
+            "gas": "0x0f4240",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0ef412",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6212faf460010b600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaf4"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6212faf460010b600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/signextend_Overflow_dj42.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/signextend_Overflow_dj42.json
new file mode 100644
index 0000000000000000000000000000000000000000..838dedcf5c5f6a8852e8a55a3975691d5cb13e02
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/signextend_Overflow_dj42.json
@@ -0,0 +1,48 @@
+{
+    "signextend_Overflow_dj42": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/signextend_Overflow_dj42Filler.json",
+            "sourceHash": "f7bdd84657605dd676ce51acf2d3eefc1fd0ccbec5221713a047cb40d1a65b35"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x989680",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x6005565b005b61800080680100000000000000010b6180011160035763badf000d601155",
+            "data": "0x",
+            "gas": "0x0f4240",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0f4212",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6005565b005b61800080680100000000000000010b6180011160035763badf000d601155",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6005565b005b61800080680100000000000000010b6180011160035763badf000d601155",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/signextend_bigBytePlus1.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/signextend_bigBytePlus1.json
new file mode 100644
index 0000000000000000000000000000000000000000..84f6fea4a730cf957cb4a3407abc4c8eb943246b
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/signextend_bigBytePlus1.json
@@ -0,0 +1,50 @@
+{
+    "signextend_bigBytePlus1": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/signextend_bigBytePlus1Filler.json",
+            "sourceHash": "d0db106dfe0e5b3805ac0dd9944caba9033cc9d42300277db9178888de3da5ab"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x989680",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x66f000000000000161ffff0b600055",
+            "data": "0x",
+            "gas": "0x0f4240",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0ef412",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x66f000000000000161ffff0b600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0xf0000000000001"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x66f000000000000161ffff0b600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/signextend_bitIsSet.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/signextend_bitIsSet.json
new file mode 100644
index 0000000000000000000000000000000000000000..03918bbc2438565cb6ff2beaf7dd71b6fe3a3491
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/signextend_bitIsSet.json
@@ -0,0 +1,50 @@
+{
+    "signextend_bitIsSet": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/signextend_bitIsSetFiller.json",
+            "sourceHash": "14f83c5f56b0fcc7c2b5483ab05230a989cd554a607dd7b84cb099a89cc897af"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x989680",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x62122ff460000b600055",
+            "data": "0x",
+            "gas": "0x0f4240",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0ef412",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x62122ff460000b600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x62122ff460000b600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/smod0.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/smod0.json
new file mode 100644
index 0000000000000000000000000000000000000000..ec1592d950fcc9335a117cda1f5969535b36ef9f
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/smod0.json
@@ -0,0 +1,50 @@
+{
+    "smod0": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/smod0Filler.json",
+            "sourceHash": "5090832871af25c7ceaf944f409eb0e94d1800eebd6b87e0cac8315067184fcb"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x6003600003600560000307600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x013866",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6003600003600560000307600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6003600003600560000307600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/smod1.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/smod1.json
new file mode 100644
index 0000000000000000000000000000000000000000..01b6a779e500e0a09d44fc39be29a0f0d5e5d6d6
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/smod1.json
@@ -0,0 +1,50 @@
+{
+    "smod1": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/smod1Filler.json",
+            "sourceHash": "a57ed4a85de8b2939c039da5fee98f4fc354fa223ae092f3e495105ddce5c56b"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x6003600003600507600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x01386c",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6003600003600507600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x02"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6003600003600507600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/smod2.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/smod2.json
new file mode 100644
index 0000000000000000000000000000000000000000..d103bf51b4bd1fe3bd655b388028628efc4594e2
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/smod2.json
@@ -0,0 +1,50 @@
+{
+    "smod2": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/smod2Filler.json",
+            "sourceHash": "d5a496413d292ae0096943667462f92b52d3010e36ea0c846d723390e83658d3"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x6003600560000307600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x01386c",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6003600560000307600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6003600560000307600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/smod3.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/smod3.json
new file mode 100644
index 0000000000000000000000000000000000000000..df369734991eeabbaf4eaf16366dd5d5b8489b55
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/smod3.json
@@ -0,0 +1,48 @@
+{
+    "smod3": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/smod3Filler.json",
+            "sourceHash": "e4d49fb43415af8b0bf060644c44d62006e9b6ed9b6e8fd0c7b45f037f013796"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260000307600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x017304",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260000307600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260000307600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/smod4.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/smod4.json
new file mode 100644
index 0000000000000000000000000000000000000000..ef2be7fd5a38bc96b97f7af8b17825136f564648
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/smod4.json
@@ -0,0 +1,48 @@
+{
+    "smod4": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/smod4Filler.json",
+            "sourceHash": "7908421af47faaa7b9522476f8d51d570900688619861b975ab02f6cefc0d1e3"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x6000600260000307600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x017304",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6000600260000307600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6000600260000307600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/smod5.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/smod5.json
new file mode 100644
index 0000000000000000000000000000000000000000..b6f620e3a2c666b77d76d7530ccbd1473e941eec
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/smod5.json
@@ -0,0 +1,48 @@
+{
+    "smod5": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/smod5Filler.json",
+            "sourceHash": "07eb8321e49b92d57ae65e0a70e469a242c14ecdcff8e825edf6708a46377cd2"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60000307600055",
+            "data": "0x",
+            "gas": "0x2710",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x1374",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60000307600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60000307600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/smod6.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/smod6.json
new file mode 100644
index 0000000000000000000000000000000000000000..0435b1f55c5665891c17c8c933120ba00c71d140
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/smod6.json
@@ -0,0 +1,50 @@
+{
+    "smod6": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/smod6Filler.json",
+            "sourceHash": "fe56c5ac0debfe243c96c9d5aa90ac5c720a92ac095dbd6223568d209db8df07"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60000307600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x01386c",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60000307600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x01"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60000307600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/smod7.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/smod7.json
new file mode 100644
index 0000000000000000000000000000000000000000..c8d7e166b1b7d2b7e52dc863681913d85834a222
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/smod7.json
@@ -0,0 +1,48 @@
+{
+    "smod7": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/smod7Filler.json",
+            "sourceHash": "06d6c999f902ae33810fa7c57315c91e2224dbf6bccb27fc3ab67da27ab1d259"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60000307600055",
+            "data": "0x",
+            "gas": "0x2710",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x1374",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60000307600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60000307600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/smod8_byZero.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/smod8_byZero.json
new file mode 100644
index 0000000000000000000000000000000000000000..9910e640457ec47960bdf8250a3d7623c1d83be2
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/smod8_byZero.json
@@ -0,0 +1,50 @@
+{
+    "smod8_byZero": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/smod8_byZeroFiller.json",
+            "sourceHash": "b2d99792bf12eee7d74ed10f87a20da79d761bebcdbfd850dac15bfc7af03548"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x600d600060c86000030703600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x013866",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x600d600060c86000030703600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x600d600060c86000030703600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/smod_i256min1.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/smod_i256min1.json
new file mode 100644
index 0000000000000000000000000000000000000000..9d59485cea2fe3bc9ca47e0183e8c740e3a781fc
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/smod_i256min1.json
@@ -0,0 +1,48 @@
+{
+    "smod_i256min1": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/smod_i256min1Filler.json",
+            "sourceHash": "49dc44af825b3bf752ffe7c8794b3bc7bcebc76e23d7a5346f499da42e4f8223"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60016000037f800000000000000000000000000000000000000000000000000000000000000060000307600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0172fe",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60016000037f800000000000000000000000000000000000000000000000000000000000000060000307600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60016000037f800000000000000000000000000000000000000000000000000000000000000060000307600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/smod_i256min2.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/smod_i256min2.json
new file mode 100644
index 0000000000000000000000000000000000000000..79b6a122170f03ac6d5a65a3ce1c25fcbccb7c8a
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/smod_i256min2.json
@@ -0,0 +1,50 @@
+{
+    "smod_i256min2": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/smod_i256min2Filler.json",
+            "sourceHash": "cc7209a5759f3315b98364bcb6ef30bebb16b685ed36afadcbab35a1200acdb2"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x600160016000037f80000000000000000000000000000000000000000000000000000000000000006000030703600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x013860",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x600160016000037f80000000000000000000000000000000000000000000000000000000000000006000030703600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x600160016000037f80000000000000000000000000000000000000000000000000000000000000006000030703600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/stop.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/stop.json
new file mode 100644
index 0000000000000000000000000000000000000000..b3ede4d16604274ed19efb96ba9d151ebd7c506c
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/stop.json
@@ -0,0 +1,48 @@
+{
+    "stop": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/stopFiller.json",
+            "sourceHash": "bc6050bff0814e1c855ff9aef2c44c284d23f536bf88ecbc3186f9aa66c946bb"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x00",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x0186a0",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x00",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x00",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sub0.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sub0.json
new file mode 100644
index 0000000000000000000000000000000000000000..1f43448e6892391aacb1de1c0586b9ea7c54fdbc
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sub0.json
@@ -0,0 +1,50 @@
+{
+    "sub0": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/sub0Filler.json",
+            "sourceHash": "80d4bc7245d1e0ae45c6556aaa6efcd2fc50635477aeb551119ddcc76c895177"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x6001601703600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x013874",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6001601703600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x16"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6001601703600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sub1.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sub1.json
new file mode 100644
index 0000000000000000000000000000000000000000..e369cec9ec842ac3d607837556aafec0a32ec4ce
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sub1.json
@@ -0,0 +1,50 @@
+{
+    "sub1": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/sub1Filler.json",
+            "sourceHash": "63ac31d5c57f74ac93f4586ea3043afcec3ebacbe9cae42f38bc2eadb43a42ad"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x6003600203600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x013874",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6003600203600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6003600203600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sub2.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sub2.json
new file mode 100644
index 0000000000000000000000000000000000000000..872256398b01ea0db8d3335660711c82412f634f
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sub2.json
@@ -0,0 +1,50 @@
+{
+    "sub2": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/sub2Filler.json",
+            "sourceHash": "9b0965f57e67ef44cdb6e1429c539328c9ad65ce3327e3f8734a885c0bfd7b59"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x6017600003600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x013874",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6017600003600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe9"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x6017600003600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sub3.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sub3.json
new file mode 100644
index 0000000000000000000000000000000000000000..a36eff95fe10069c17d7c7aa22b58636627fced9
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sub3.json
@@ -0,0 +1,50 @@
+{
+    "sub3": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/sub3Filler.json",
+            "sourceHash": "8fb91e839aacf910ef69140a7b0580422298414d336741213d858b8fc351c080"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600003600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x013874",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600003600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0x01"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600003600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sub4.json b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sub4.json
new file mode 100644
index 0000000000000000000000000000000000000000..b23f64ebb9d6d821fb0ad3dd90ea19bbc223132f
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sub4.json
@@ -0,0 +1,50 @@
+{
+    "sub4": {
+        "_info": {
+            "comment": "",
+            "filledwith": "testeth 1.4.0.dev0-56+commit.71414ae3",
+            "lllcversion": "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
+            "source": "src/VMTestsFiller/vmArithmeticTest/sub4Filler.json",
+            "sourceHash": "417b791bbf2fa854dee2bc03e91e41257df0dd49affcf219824265c2d100d4c9"
+        },
+        "callcreates": [],
+        "env": {
+            "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty": "0x0100",
+            "currentGasLimit": "0x0f4240",
+            "currentNumber": "0x00",
+            "currentTimestamp": "0x01"
+        },
+        "exec": {
+            "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "code": "0x60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03600055",
+            "data": "0x",
+            "gas": "0x0186a0",
+            "gasPrice": "0x5af3107a4000",
+            "origin": "0xcd1722f2947def4cf144679da39c4c32bdc35681",
+            "value": "0x0de0b6b3a7640000"
+        },
+        "gas": "0x013874",
+        "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out": "0x",
+        "post": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03600055",
+                "nonce": "0x00",
+                "storage": {
+                    "0x00": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
+                }
+            }
+        },
+        "pre": {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
+                "balance": "0x0de0b6b3a7640000",
+                "code": "0x60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03600055",
+                "nonce": "0x00",
+                "storage": {}
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/and0.json b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/and0.json
new file mode 100644
index 0000000000000000000000000000000000000000..f355efec4c193f63a2653ffb82e4d91170f7b228
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/and0.json
@@ -0,0 +1,52 @@
+{
+    "and0" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmBitwiseLogicOperation/and0Filler.json",
+            "sourceHash" : "751e5c75a0cb1826f0a0d355bdf3f27982c52bd4b7b28cfbac953528fe2c6b8a"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6002600216600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013874",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x6002600216600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x02"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x6002600216600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/and1.json b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/and1.json
new file mode 100644
index 0000000000000000000000000000000000000000..06d463a18cbe5931dd5f8402ac27537175f0a895
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/and1.json
@@ -0,0 +1,51 @@
+{
+    "and1" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmBitwiseLogicOperation/and1Filler.json",
+            "sourceHash" : "cc1f598dde43f243ed3b79d6876def08bd96e0f532b29dceb744f696867d9148"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6001600216600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01730c",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x6001600216600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x6001600216600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/and2.json b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/and2.json
new file mode 100644
index 0000000000000000000000000000000000000000..958b198be6a04260ecbb17e87d276c8eee85e19a
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/and2.json
@@ -0,0 +1,52 @@
+{
+    "and2" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmBitwiseLogicOperation/and2Filler.json",
+            "sourceHash" : "c406f9725926f6cc70844468f19b89588e6762067a031cc07b99348ac267e742"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6001600316600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013874",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x6001600316600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x01"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x6001600316600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/and3.json b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/and3.json
new file mode 100644
index 0000000000000000000000000000000000000000..a0636cba86a78c9e90476e8444bb1111deb85098
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/and3.json
@@ -0,0 +1,52 @@
+{
+    "and3" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmBitwiseLogicOperation/and3Filler.json",
+            "sourceHash" : "2e7027e2c4da993dee53d9c1549115c977112ba350b4371946ab2d06ad450e63"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x7f0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013874",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x7f0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x7f0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/and4.json b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/and4.json
new file mode 100644
index 0000000000000000000000000000000000000000..fe79510c5543b7f80148022a3b94ce10b8cb1585
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/and4.json
@@ -0,0 +1,52 @@
+{
+    "and4" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmBitwiseLogicOperation/and4Filler.json",
+            "sourceHash" : "aae5ac146ebfbba6d13ad1b8194d91eb8dea6d4769c45a38576a443ad94ab2cd"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7feeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee16600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013874",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7feeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee16600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7feeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee16600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/and5.json b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/and5.json
new file mode 100644
index 0000000000000000000000000000000000000000..d3f1a79e44f06958e5fac7d8b722e6b4630d7ef3
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/and5.json
@@ -0,0 +1,52 @@
+{
+    "and5" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmBitwiseLogicOperation/and5Filler.json",
+            "sourceHash" : "76a55675eeeb3cbe72d56adb48b158ceb4ce445420788df61486a7c63e09cd6b"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7feeeeeeeeeeeeeeeeeeeeeeeeeeeeefeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee16600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013874",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7feeeeeeeeeeeeeeeeeeeeeeeeeeeeefeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee16600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeefeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7feeeeeeeeeeeeeeeeeeeeeeeeeeeeefeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee16600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/byte0.json b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/byte0.json
new file mode 100644
index 0000000000000000000000000000000000000000..a15e74bc4dabbe646390142844151e6d56354ea9
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/byte0.json
@@ -0,0 +1,52 @@
+{
+    "byte0" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmBitwiseLogicOperation/byte0Filler.json",
+            "sourceHash" : "6764ebba17fa4d9be8f1abfb1d2fd0fe50528a43081a79a1f4fdeb8168fdb465"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6780402010080402016000601f031a600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01386e",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x6780402010080402016000601f031a600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x01"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x6780402010080402016000601f031a600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/byte1.json b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/byte1.json
new file mode 100644
index 0000000000000000000000000000000000000000..f5aa17a3b2f44b045a96aebfae574b029d8d9087
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/byte1.json
@@ -0,0 +1,52 @@
+{
+    "byte1" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmBitwiseLogicOperation/byte1Filler.json",
+            "sourceHash" : "622c7aedaefd48e66eff987415f47ab610b595b1f85c5dfafb09616e0bbdfd75"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6780402010080402016001601f031a600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01386e",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x6780402010080402016001601f031a600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x02"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x6780402010080402016001601f031a600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/byte10.json b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/byte10.json
new file mode 100644
index 0000000000000000000000000000000000000000..22cbb945274da6b702f085d6a7b93be32f85dafa
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/byte10.json
@@ -0,0 +1,51 @@
+{
+    "byte10" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmBitwiseLogicOperation/byte10Filler.json",
+            "sourceHash" : "1c00cff0fd72755c87f59585d40a1edf5d63b1386f3ddbc23fd95b03e8f9c9f7"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6780402010080402017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1a600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01730c",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x6780402010080402017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1a600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x6780402010080402017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1a600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/byte11.json b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/byte11.json
new file mode 100644
index 0000000000000000000000000000000000000000..61f813424b37866de2ce695b465f71deac4e5659
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/byte11.json
@@ -0,0 +1,51 @@
+{
+    "byte11" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmBitwiseLogicOperation/byte11Filler.json",
+            "sourceHash" : "e649fc5b9e0fbbc092ea449680e3055126543b929ba7147b9c967ee35e695a2e"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x67804020100804020160001a600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01730c",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x67804020100804020160001a600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x67804020100804020160001a600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/byte2.json b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/byte2.json
new file mode 100644
index 0000000000000000000000000000000000000000..e7e50804f4b543a64d270d8e6ea539d34bfa7145
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/byte2.json
@@ -0,0 +1,52 @@
+{
+    "byte2" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmBitwiseLogicOperation/byte2Filler.json",
+            "sourceHash" : "0367f73e6a3a5257c7c35f7ebdddb42888be0f0d7534b2687e20c286df02c90e"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6780402010080402016002601f031a600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01386e",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x6780402010080402016002601f031a600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x04"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x6780402010080402016002601f031a600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/byte3.json b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/byte3.json
new file mode 100644
index 0000000000000000000000000000000000000000..587640df2b04548ef6411025f4eb58a5fc989983
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/byte3.json
@@ -0,0 +1,52 @@
+{
+    "byte3" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmBitwiseLogicOperation/byte3Filler.json",
+            "sourceHash" : "5b001879a3cdd7c7e4a1cc6ef0e0101db4931274676fa2083c52b7bbb95403de"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6780402010080402016003601f031a600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01386e",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x6780402010080402016003601f031a600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x08"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x6780402010080402016003601f031a600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/byte4.json b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/byte4.json
new file mode 100644
index 0000000000000000000000000000000000000000..d52c8485f47e81bf209f553444fe4439251fc6fc
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/byte4.json
@@ -0,0 +1,52 @@
+{
+    "byte4" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmBitwiseLogicOperation/byte4Filler.json",
+            "sourceHash" : "d79870f477b475d6f878076b20631d89ce8831da937252cf6657d935f0ad3482"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6780402010080402016004601f031a600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01386e",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x6780402010080402016004601f031a600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x10"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x6780402010080402016004601f031a600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/byte5.json b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/byte5.json
new file mode 100644
index 0000000000000000000000000000000000000000..f738d6ff551687b8902460ef6a9230af67a74480
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/byte5.json
@@ -0,0 +1,52 @@
+{
+    "byte5" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmBitwiseLogicOperation/byte5Filler.json",
+            "sourceHash" : "9242b77cc4a07275c886c83d252350713ac84a914cc7b5069f7fdd21e887b6c0"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6780402010080402016005601f031a600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01386e",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x6780402010080402016005601f031a600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x20"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x6780402010080402016005601f031a600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/byte6.json b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/byte6.json
new file mode 100644
index 0000000000000000000000000000000000000000..719bcc94bf9c9c6ec979b0ef8ccd68c9c8f38672
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/byte6.json
@@ -0,0 +1,52 @@
+{
+    "byte6" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmBitwiseLogicOperation/byte6Filler.json",
+            "sourceHash" : "702f95bfde16820fa666d510e6c48af4b06c824d6464d5ba344fe76696b8e526"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6780402010080402016006601f031a600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01386e",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x6780402010080402016006601f031a600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x40"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x6780402010080402016006601f031a600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/byte7.json b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/byte7.json
new file mode 100644
index 0000000000000000000000000000000000000000..58a92e2deb28b4908fa8edfbef4d3683d5cb9503
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/byte7.json
@@ -0,0 +1,52 @@
+{
+    "byte7" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmBitwiseLogicOperation/byte7Filler.json",
+            "sourceHash" : "5f8261cfc1a852245ad1606af64a6e1cca7ad5d0082eef8d32c68ae6d92eb2ba"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6780402010080402016007601f031a600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01386e",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x6780402010080402016007601f031a600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x80"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x6780402010080402016007601f031a600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/byte8.json b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/byte8.json
new file mode 100644
index 0000000000000000000000000000000000000000..bb996120068416ec6ad452b3d1e82f753b963252
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/byte8.json
@@ -0,0 +1,51 @@
+{
+    "byte8" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmBitwiseLogicOperation/byte8Filler.json",
+            "sourceHash" : "505fcf8b5851e3c9689ab5e1ef238abf45379045f0c21ac44ee6e1a8e51c9f9a"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x678040201008040201601f601f031a600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x017306",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x678040201008040201601f601f031a600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x678040201008040201601f601f031a600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/byte9.json b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/byte9.json
new file mode 100644
index 0000000000000000000000000000000000000000..f4942f487add714f05b0ef9181fa7d1ed51a91a0
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/byte9.json
@@ -0,0 +1,51 @@
+{
+    "byte9" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmBitwiseLogicOperation/byte9Filler.json",
+            "sourceHash" : "b4c4eb8a9dd91e27de3645370f434e4f617deb1f5c425286374537552e3ab7f3"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6780402010080402016020601f051a600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x017304",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x6780402010080402016020601f051a600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x6780402010080402016020601f051a600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/eq0.json b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/eq0.json
new file mode 100644
index 0000000000000000000000000000000000000000..b8990859ae26cf39933bb0005b5012d196a67100
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/eq0.json
@@ -0,0 +1,51 @@
+{
+    "eq0" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmBitwiseLogicOperation/eq0Filler.json",
+            "sourceHash" : "19b881bd7fb221954f30f51297eb529bb212bc9c8cf0d69c7f98f9f51985817e"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6003600003600560000314600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x017300",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x6003600003600560000314600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x6003600003600560000314600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/eq1.json b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/eq1.json
new file mode 100644
index 0000000000000000000000000000000000000000..7606a5d176d0fad80c6776686cd8b21cf773578d
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/eq1.json
@@ -0,0 +1,52 @@
+{
+    "eq1" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmBitwiseLogicOperation/eq1Filler.json",
+            "sourceHash" : "fc840a1a4938e2e95f1554bf8457ce0b0309bab97b81a41b4c8a8c6c92e22814"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6000600014600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013874",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x6000600014600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x01"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x6000600014600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/eq2.json b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/eq2.json
new file mode 100644
index 0000000000000000000000000000000000000000..9207a36163fbdbf830638197e16d3ccf905c1b0c
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/eq2.json
@@ -0,0 +1,52 @@
+{
+    "eq2" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmBitwiseLogicOperation/eq2Filler.json",
+            "sourceHash" : "8240a3a93dc6c7720f3eb4b9d4657c8f13275f68c13ed4150d9725dada431480"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013874",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x01"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/gt0.json b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/gt0.json
new file mode 100644
index 0000000000000000000000000000000000000000..7c1d95c70632b1bcbe8789319c878adcc6683c2f
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/gt0.json
@@ -0,0 +1,52 @@
+{
+    "gt0" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmBitwiseLogicOperation/gt0Filler.json",
+            "sourceHash" : "dd0a3d85d6ff2212eeb3200d247a57bfb1cc778850904069b4473d005f044a80"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6000600260000311600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01386e",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x6000600260000311600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x01"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x6000600260000311600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/gt1.json b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/gt1.json
new file mode 100644
index 0000000000000000000000000000000000000000..a909a2e88be8c1090cb2e3f73c42dd89cd75a9c0
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/gt1.json
@@ -0,0 +1,51 @@
+{
+    "gt1" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmBitwiseLogicOperation/gt1Filler.json",
+            "sourceHash" : "2d0cc48b6bacc0f8676ad35ef31ccec94c6d9e6485715c894bcc09f145c513cc"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6002600003600011600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x017306",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x6002600003600011600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x6002600003600011600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/gt2.json b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/gt2.json
new file mode 100644
index 0000000000000000000000000000000000000000..e79751c87eb4c9226c297c2983c54b8f9f76c777
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/gt2.json
@@ -0,0 +1,52 @@
+{
+    "gt2" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmBitwiseLogicOperation/gt2Filler.json",
+            "sourceHash" : "5353ce8dad79cfc681d5df6bc90931ea174bf2c0692aa6bd4ac3dfc4b15105cf"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff11600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013874",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff11600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x01"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff11600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/gt3.json b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/gt3.json
new file mode 100644
index 0000000000000000000000000000000000000000..c5802f1ad4e732adb21eafbdd65a8f41894bdae1
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/gt3.json
@@ -0,0 +1,51 @@
+{
+    "gt3" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmBitwiseLogicOperation/gt3Filler.json",
+            "sourceHash" : "a2135f3cc275562615d53ef7e0b42284789cf52871f599c9ba581fcf90157914"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600011600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01730c",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600011600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600011600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/iszeo2.json b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/iszeo2.json
new file mode 100644
index 0000000000000000000000000000000000000000..e00c3316b1b47e9e618755dbeeb132b950164548
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/iszeo2.json
@@ -0,0 +1,51 @@
+{
+    "iszeo2" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmBitwiseLogicOperation/iszeo2Filler.json",
+            "sourceHash" : "abf5b709846b428ec72f7011c84753cef326b6a91ff947a5b803bf2908c335e8"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x600260000315600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x017309",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x600260000315600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x600260000315600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/iszero0.json b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/iszero0.json
new file mode 100644
index 0000000000000000000000000000000000000000..bbca9403785f1f7b59f2aa295e4eadd15ca90853
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/iszero0.json
@@ -0,0 +1,51 @@
+{
+    "iszero0" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmBitwiseLogicOperation/iszero0Filler.json",
+            "sourceHash" : "0535ce2a70ccc8c78f99dd11be51043663ad7bf946daa2e24bd5c76ee1df769e"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff15600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01730f",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff15600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff15600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/iszero1.json b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/iszero1.json
new file mode 100644
index 0000000000000000000000000000000000000000..f0b745fabf1b9bcf5f4b66d5e8a410558ee79cab
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/iszero1.json
@@ -0,0 +1,52 @@
+{
+    "iszero1" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmBitwiseLogicOperation/iszero1Filler.json",
+            "sourceHash" : "3c42208e8bba63c702a33e754f3401999219454a52e165d33e56ccb406b0b2dc"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x600015600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013877",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x600015600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x01"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x600015600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/lt0.json b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/lt0.json
new file mode 100644
index 0000000000000000000000000000000000000000..c480c6ecfa8fc2a5de8723b366fc964ed31e5320
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/lt0.json
@@ -0,0 +1,51 @@
+{
+    "lt0" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmBitwiseLogicOperation/lt0Filler.json",
+            "sourceHash" : "8c4640067abed7206324348cb90d1d499c1e6f8f7ec5b3bdd6ea8c62ce7fc8b2"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6000600260000310600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x8ac7230489e80000"
+        },
+        "gas" : "0x017306",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6000600260000310600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6000600260000310600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/lt1.json b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/lt1.json
new file mode 100644
index 0000000000000000000000000000000000000000..e6b32e90812aa977cf67299059c8bce85699aa80
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/lt1.json
@@ -0,0 +1,52 @@
+{
+    "lt1" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmBitwiseLogicOperation/lt1Filler.json",
+            "sourceHash" : "3ddb48b8cc6dc67dc7c7f4f804db8ad2739565020f06fbd3c9636a454049ae86"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6002600003600010600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x8ac7230489e80000"
+        },
+        "gas" : "0x01386e",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x8ac7230489e80000",
+                "code" : "0x6002600003600010600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x01"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x8ac7230489e80000",
+                "code" : "0x6002600003600010600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/lt2.json b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/lt2.json
new file mode 100644
index 0000000000000000000000000000000000000000..aaa5ff46734ec59fe20f6e9ead366cd4b4592b58
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/lt2.json
@@ -0,0 +1,51 @@
+{
+    "lt2" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmBitwiseLogicOperation/lt2Filler.json",
+            "sourceHash" : "1fe431426fd45116ab7fd624909b52c1dd905887d087b5cdcdbef664c1d1bfa2"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff10600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x8ac7230489e80000"
+        },
+        "gas" : "0x01730c",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x8ac7230489e80000",
+                "code" : "0x60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff10600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x8ac7230489e80000",
+                "code" : "0x60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff10600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/lt3.json b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/lt3.json
new file mode 100644
index 0000000000000000000000000000000000000000..44db9d42801226a586af6db4446e66bfcdce73ef
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/lt3.json
@@ -0,0 +1,52 @@
+{
+    "lt3" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmBitwiseLogicOperation/lt3Filler.json",
+            "sourceHash" : "79ab580a8f6e442539c2aeaa1fdfca3d0d12d3e85d8bc124db331f19de4bd9fa"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600010600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013874",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600010600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x01"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600010600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/not0.json b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/not0.json
new file mode 100644
index 0000000000000000000000000000000000000000..493876bb486694b2298fe12d52dea67b31634bb8
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/not0.json
@@ -0,0 +1,52 @@
+{
+    "not0" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmBitwiseLogicOperation/not0Filler.json",
+            "sourceHash" : "80140479a2b011050f7ed80dfba95f9c00440635a371693d6f8a7b1e3e21ef44"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x600019600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013877",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x600019600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x600019600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/not1.json b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/not1.json
new file mode 100644
index 0000000000000000000000000000000000000000..3e0b798f2597ca9d5f02573422b0a06823fd43c6
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/not1.json
@@ -0,0 +1,52 @@
+{
+    "not1" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmBitwiseLogicOperation/not1Filler.json",
+            "sourceHash" : "61f2abd58fadf0341f0d0743279d10fb152cf42b78ed8ce2a6c8a749c9274332"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x600219600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013877",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x600219600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x600219600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/not2.json b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/not2.json
new file mode 100644
index 0000000000000000000000000000000000000000..e142f837ccd53403ec02a0c2864c6c9702da70d2
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/not2.json
@@ -0,0 +1,51 @@
+{
+    "not2" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmBitwiseLogicOperation/not2Filler.json",
+            "sourceHash" : "ef8e55a7bab388cf9472c4d331aeb4ca059675b73fa647dac1ca0b2524cf91b1"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01730f",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/not3.json b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/not3.json
new file mode 100644
index 0000000000000000000000000000000000000000..00aa3f99a0a025cd54e20c42ee9b78578dfae5c4
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/not3.json
@@ -0,0 +1,52 @@
+{
+    "not3" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmBitwiseLogicOperation/not3Filler.json",
+            "sourceHash" : "bd3ee9eaf6195c4cdcd8f9620da701fd0cfff77824ef02e6f65743d7a0433d21"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x600260000319600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013871",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x600260000319600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x01"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x600260000319600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/not4.json b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/not4.json
new file mode 100644
index 0000000000000000000000000000000000000000..f326eb98f8606e0b861299426472543ac5da1263
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/not4.json
@@ -0,0 +1,52 @@
+{
+    "not4" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmBitwiseLogicOperation/not4Filler.json",
+            "sourceHash" : "f4a5202e1416c1b53b6b4150f295f9a008c8904171c04d0eacb419364cb64de6"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60000319600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013871",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60000319600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60000319600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/not5.json b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/not5.json
new file mode 100644
index 0000000000000000000000000000000000000000..cb0f86be6f91288f3d77093451f69fad22503571
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/not5.json
@@ -0,0 +1,52 @@
+{
+    "not5" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmBitwiseLogicOperation/not5Filler.json",
+            "sourceHash" : "e8c79e98f719d804dc6c480f771278ade666e1a97af54043a6f7b9260d0a17d9"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x600060000319600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013871",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x600060000319600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x600060000319600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/or0.json b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/or0.json
new file mode 100644
index 0000000000000000000000000000000000000000..512a6fd21ab54f7bf29545731a68421d593cc205
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/or0.json
@@ -0,0 +1,52 @@
+{
+    "or0" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmBitwiseLogicOperation/or0Filler.json",
+            "sourceHash" : "60d30a058afaca0a4b0433cb750a882fcb964babe2675d590bf875003bbcd663"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6002600217600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013874",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x6002600217600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x02"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x6002600217600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/or1.json b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/or1.json
new file mode 100644
index 0000000000000000000000000000000000000000..ae2ae6b37cfe80a6b982129ed435087aedeb589a
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/or1.json
@@ -0,0 +1,52 @@
+{
+    "or1" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmBitwiseLogicOperation/or1Filler.json",
+            "sourceHash" : "2b15c764efc21f1210ab5ff1ebbc41c279eb184ea5970f83fa814aec8b1b0292"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6001600217600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013874",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x6001600217600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x03"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x6001600217600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/or2.json b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/or2.json
new file mode 100644
index 0000000000000000000000000000000000000000..589f1f45408380e84764d6e45eb2a02906a6d01b
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/or2.json
@@ -0,0 +1,52 @@
+{
+    "or2" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmBitwiseLogicOperation/or2Filler.json",
+            "sourceHash" : "ab771b280d2f0bfc691b93a7767de24ec2f71a43b8247979b22dfa49a521af15"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6001600317600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013874",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x6001600317600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x03"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x6001600317600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/or3.json b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/or3.json
new file mode 100644
index 0000000000000000000000000000000000000000..207cfaecb8ad9ca14cd233c0dad18fb5447ed7bb
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/or3.json
@@ -0,0 +1,52 @@
+{
+    "or3" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmBitwiseLogicOperation/or3Filler.json",
+            "sourceHash" : "4f201fc156a840f69212d6f16e5c3648386df255dd52461555458d04b6413ce1"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x7f0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff17600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013874",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x7f0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff17600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x7f0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff17600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/or4.json b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/or4.json
new file mode 100644
index 0000000000000000000000000000000000000000..621cc6c4d44fe7d00586a384492443cb06482395
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/or4.json
@@ -0,0 +1,52 @@
+{
+    "or4" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmBitwiseLogicOperation/or4Filler.json",
+            "sourceHash" : "0e0592c288d6510637595f966ec63289bf101dd48839b10f6fdce743cf3012ad"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7feeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee17600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013874",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7feeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee17600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7feeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee17600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/or5.json b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/or5.json
new file mode 100644
index 0000000000000000000000000000000000000000..583c917b669cdd70bca671071b04826032232b61
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/or5.json
@@ -0,0 +1,52 @@
+{
+    "or5" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmBitwiseLogicOperation/or5Filler.json",
+            "sourceHash" : "0f852bc89f9f883b43f277652d411439032eb3e1c38c316e2ef0a0c20bf6f7ad"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7feeeeeeeeeeeeeeeeeeeeeeeeeeeeefeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee17600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013874",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7feeeeeeeeeeeeeeeeeeeeeeeeeeeeefeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee17600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7feeeeeeeeeeeeeeeeeeeeeeeeeeeeefeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee17600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/sgt0.json b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/sgt0.json
new file mode 100644
index 0000000000000000000000000000000000000000..3497d203e0463dada7489b64c9b4e7e1967c072e
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/sgt0.json
@@ -0,0 +1,51 @@
+{
+    "sgt0" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmBitwiseLogicOperation/sgt0Filler.json",
+            "sourceHash" : "74429fc4319b59fa4f7df388ca07a947def51d79695c7bac6c38d2c4bbbcbdfa"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6000600260000313600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x017306",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x6000600260000313600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x6000600260000313600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/sgt1.json b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/sgt1.json
new file mode 100644
index 0000000000000000000000000000000000000000..913f70078536bc3766e2fd6201eb666f1614821e
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/sgt1.json
@@ -0,0 +1,52 @@
+{
+    "sgt1" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmBitwiseLogicOperation/sgt1Filler.json",
+            "sourceHash" : "3e4a2036e947ad6771ac9194d6f1f58872d1b2865e23b926d63b1294d031e8bd"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6002600003600013600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01386e",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x6002600003600013600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x01"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x6002600003600013600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/sgt2.json b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/sgt2.json
new file mode 100644
index 0000000000000000000000000000000000000000..a53edb4e0afdfa5550669ce55f3868d1639e10d1
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/sgt2.json
@@ -0,0 +1,51 @@
+{
+    "sgt2" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmBitwiseLogicOperation/sgt2Filler.json",
+            "sourceHash" : "fc4192183cf3a5794822bdab685ac3bc20ac5d9b49cd03b9f98be2260e8e18bb"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff13600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01730c",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff13600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff13600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/sgt3.json b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/sgt3.json
new file mode 100644
index 0000000000000000000000000000000000000000..d6cc5e93755361ba583b94a7e57d82e455738daf
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/sgt3.json
@@ -0,0 +1,52 @@
+{
+    "sgt3" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmBitwiseLogicOperation/sgt3Filler.json",
+            "sourceHash" : "e918a6569299b5e0917ec90d3c2bb2828ff490400e2ffbc29e03147743c2e17f"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600013600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013874",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600013600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x01"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600013600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/sgt4.json b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/sgt4.json
new file mode 100644
index 0000000000000000000000000000000000000000..567293ec924445e4f3a0132db19abe93d97b3e60
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/sgt4.json
@@ -0,0 +1,51 @@
+{
+    "sgt4" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmBitwiseLogicOperation/sgt4Filler.json",
+            "sourceHash" : "623b92335dbc7baa5925ad95d7ff90160ab49dee7c7a76de9e1795c651987514"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6003600003600560000313600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x017300",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x6003600003600560000313600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x6003600003600560000313600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/slt0.json b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/slt0.json
new file mode 100644
index 0000000000000000000000000000000000000000..a012e22eab97f11668f8ff9a9ca5a975c15f7fde
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/slt0.json
@@ -0,0 +1,52 @@
+{
+    "slt0" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmBitwiseLogicOperation/slt0Filler.json",
+            "sourceHash" : "f510a0b92d9f98666b853cb682b86d4016408a4305ec11ee83627a432b9b75cf"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6000600260000312600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01386e",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x6000600260000312600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x01"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x6000600260000312600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/slt1.json b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/slt1.json
new file mode 100644
index 0000000000000000000000000000000000000000..1248ca61229fa3dd414d331707435900cec14539
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/slt1.json
@@ -0,0 +1,51 @@
+{
+    "slt1" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmBitwiseLogicOperation/slt1Filler.json",
+            "sourceHash" : "f428e4e49d4c5f0820c9952b8583209cd93677f6328bd8bff26d55f0f6a1c792"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6002600003600012600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x017306",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x6002600003600012600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x6002600003600012600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/slt2.json b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/slt2.json
new file mode 100644
index 0000000000000000000000000000000000000000..cecc18f93b020df2f05b55f0e6b8f9a6f94aef37
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/slt2.json
@@ -0,0 +1,52 @@
+{
+    "slt2" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmBitwiseLogicOperation/slt2Filler.json",
+            "sourceHash" : "094c13e4222baaa5a888b8246ca586ad40d2bfe12abb3566b92d82f018722a8f"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff12600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013874",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff12600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x01"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff12600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/slt3.json b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/slt3.json
new file mode 100644
index 0000000000000000000000000000000000000000..2cb5ab44bbac69765212475f6e3d0612506c0160
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/slt3.json
@@ -0,0 +1,51 @@
+{
+    "slt3" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmBitwiseLogicOperation/slt3Filler.json",
+            "sourceHash" : "70c376b7f2b96131b36bc2b6cae47b71ed9da0586ff154db88eecccc08528d2e"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600012600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01730c",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600012600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600012600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/slt4.json b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/slt4.json
new file mode 100644
index 0000000000000000000000000000000000000000..a883779532e5d86443d082e506d77a0717c3be36
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/slt4.json
@@ -0,0 +1,52 @@
+{
+    "slt4" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmBitwiseLogicOperation/slt4Filler.json",
+            "sourceHash" : "d3a476ad08a0873b4910f4aee5dd8857b4aa4e708e1a13e66836d6483a109702"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6003600003600560000312600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013868",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x6003600003600560000312600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x01"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x6003600003600560000312600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/xor0.json b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/xor0.json
new file mode 100644
index 0000000000000000000000000000000000000000..57b9558408915849b31d95fa2b732a9fa431109c
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/xor0.json
@@ -0,0 +1,51 @@
+{
+    "xor0" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmBitwiseLogicOperation/xor0Filler.json",
+            "sourceHash" : "50cd2de5dcf00384df0dbaaeec9be0f9029b9134bf7ea41ccc7acc94afef3974"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6002600218600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01730c",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x6002600218600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x6002600218600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/xor1.json b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/xor1.json
new file mode 100644
index 0000000000000000000000000000000000000000..063d9ccb05666d7cd9bed7b902733da49e29d7f2
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/xor1.json
@@ -0,0 +1,52 @@
+{
+    "xor1" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmBitwiseLogicOperation/xor1Filler.json",
+            "sourceHash" : "f046ebf7e2d78d47eb651513e53bfc77b24044f1c5f6d985a0001123901b2243"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6001600218600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013874",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x6001600218600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x03"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x6001600218600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/xor2.json b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/xor2.json
new file mode 100644
index 0000000000000000000000000000000000000000..b4f0997bad16e92f91b80338b0783e3d061bc91f
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/xor2.json
@@ -0,0 +1,52 @@
+{
+    "xor2" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmBitwiseLogicOperation/xor2Filler.json",
+            "sourceHash" : "736386ced72b004a11c09de088a600a13ded13af4403b3142f7b62587f0ff99d"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6001600318600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013874",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x6001600318600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x02"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x6001600318600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/xor3.json b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/xor3.json
new file mode 100644
index 0000000000000000000000000000000000000000..005318166868fcbb75fa8682decb3c09cfcce6c5
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/xor3.json
@@ -0,0 +1,52 @@
+{
+    "xor3" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmBitwiseLogicOperation/xor3Filler.json",
+            "sourceHash" : "ee07af05a441f80e1c4256a31057ba009a4dcc5640f4c920c7ca527554c918de"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x7f0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff18600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013874",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x7f0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff18600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0xfedcba9876543210fedcba9876543210fedcba9876543210fedcba9876543210"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x7f0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff18600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/xor4.json b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/xor4.json
new file mode 100644
index 0000000000000000000000000000000000000000..84add4fc492baf4c3cf90f91a9caf4af44b24864
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/xor4.json
@@ -0,0 +1,52 @@
+{
+    "xor4" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmBitwiseLogicOperation/xor4Filler.json",
+            "sourceHash" : "a1b253998968b3a29e9deb1019e0b1acd7e164c1a1dd9d930f300ecdd4c032a1"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7feeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee18600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013874",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7feeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee18600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x1111111111111111111111111111111111111111111111111111111111111111"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7feeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee18600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/xor5.json b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/xor5.json
new file mode 100644
index 0000000000000000000000000000000000000000..1a9d887314aba269b2c81af37b6d56ca6718bbb8
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/xor5.json
@@ -0,0 +1,52 @@
+{
+    "xor5" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmBitwiseLogicOperation/xor5Filler.json",
+            "sourceHash" : "6305730bcb3953b7c28476aeca3e1e6a95c93e56b0094e4145ea6816b9edea1a"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7feeeeeeeeeeeeeeeeeeeeeeeeeeeeefeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee18600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013874",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7feeeeeeeeeeeeeeeeeeeeeeeeeeeeefeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee18600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x1111111111111111111111111111101111111111111111111111111111111111"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xd3c21bcecceda1000000",
+                "code" : "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7feeeeeeeeeeeeeeeeeeeeeeeeeeeeefeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee18600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/address0.json b/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/address0.json
new file mode 100644
index 0000000000000000000000000000000000000000..055e30f4ecfd71b33c10f262540f3aed3303c04d
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/address0.json
@@ -0,0 +1,52 @@
+{
+    "address0" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmEnvironmentalInfo/address0Filler.json",
+            "sourceHash" : "37a0fc3337fde7233f427195a290be689e01aa752a8394b0ae56306fd97d3624"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x30600055",
+            "data" : "0x",
+            "gas" : "0x174876e800",
+            "gasPrice" : "0x3b9aca00",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x17487699db",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x30600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x30600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/address1.json b/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/address1.json
new file mode 100644
index 0000000000000000000000000000000000000000..5b9257ea6f2334c9cc1a5769d8305b1f61452a89
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/address1.json
@@ -0,0 +1,52 @@
+{
+    "address1" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmEnvironmentalInfo/address1Filler.json",
+            "sourceHash" : "2f317db88316ea284d36c3031d82818be81d6cf63d1bba9437dd22705282fe27"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "caller" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "code" : "0x30600055",
+            "data" : "0x",
+            "gas" : "0x174876e800",
+            "gasPrice" : "0x3b9aca00",
+            "origin" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x17487699db",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0xcd1722f3947def4cf144679da39c4c32bdc35681" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x30600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0xcd1722f3947def4cf144679da39c4c32bdc35681"
+                }
+            }
+        },
+        "pre" : {
+            "0xcd1722f3947def4cf144679da39c4c32bdc35681" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x30600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatacopy0.json b/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatacopy0.json
new file mode 100644
index 0000000000000000000000000000000000000000..849eae3f1e202ddc7564ba17a007c98cc5e28260
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatacopy0.json
@@ -0,0 +1,52 @@
+{
+    "calldatacopy0" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmEnvironmentalInfo/calldatacopy0Filler.json",
+            "sourceHash" : "761871556943693860bdddd26da931c7c3f5a6c8ab95f680aa9d5854135dacd0"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60026001600037600051600055",
+            "data" : "0x1234567890abcdef01234567890abcdef0",
+            "gas" : "0x174876e800",
+            "gasPrice" : "0x3b9aca00",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x17487699c5",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60026001600037600051600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x3456000000000000000000000000000000000000000000000000000000000000"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60026001600037600051600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatacopy0_return.json b/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatacopy0_return.json
new file mode 100644
index 0000000000000000000000000000000000000000..61fb26afd045bf0e89dc6e80804db5282d2cfeaf
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatacopy0_return.json
@@ -0,0 +1,52 @@
+{
+    "calldatacopy0_return" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmEnvironmentalInfo/calldatacopy0_returnFiller.json",
+            "sourceHash" : "4f9c0f3aff470ea35ad2fd5a81a593742f875409dbc51200199dd0f2baab261d"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60026001600037600051600055596000f3",
+            "data" : "0x1234567890abcdef01234567890abcdef0",
+            "gas" : "0x174876e800",
+            "gasPrice" : "0x3b9aca00",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x17487699c0",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x3456000000000000000000000000000000000000000000000000000000000000",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x0de0b6b3a7640000",
+                "code" : "0x60026001600037600051600055596000f3",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x3456000000000000000000000000000000000000000000000000000000000000"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x0de0b6b3a7640000",
+                "code" : "0x60026001600037600051600055596000f3",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatacopy1.json b/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatacopy1.json
new file mode 100644
index 0000000000000000000000000000000000000000..5c3061904588968e893cb33aceb294ebfd429250
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatacopy1.json
@@ -0,0 +1,52 @@
+{
+    "calldatacopy1" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmEnvironmentalInfo/calldatacopy1Filler.json",
+            "sourceHash" : "65659a844a3d4458eb82347f1ef56c3657abdb06f7166b033329db7c2c8cdb78"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60016001600037600051600055",
+            "data" : "0x1234567890abcdef01234567890abcdef0",
+            "gas" : "0x174876e800",
+            "gasPrice" : "0x3b9aca00",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x17487699c5",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60016001600037600051600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x3400000000000000000000000000000000000000000000000000000000000000"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60016001600037600051600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatacopy1_return.json b/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatacopy1_return.json
new file mode 100644
index 0000000000000000000000000000000000000000..375d63e012f097584170541f3b165b649f891794
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatacopy1_return.json
@@ -0,0 +1,52 @@
+{
+    "calldatacopy1_return" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmEnvironmentalInfo/calldatacopy1_returnFiller.json",
+            "sourceHash" : "671deccb615f7d6e58bc195d11ad4fde489a6a07581f9e32e029e6cf42dba991"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60016001600037600051600055596000f3",
+            "data" : "0x1234567890abcdef01234567890abcdef0",
+            "gas" : "0x174876e800",
+            "gasPrice" : "0x3b9aca00",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x17487699c0",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x3400000000000000000000000000000000000000000000000000000000000000",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x0de0b6b3a7640000",
+                "code" : "0x60016001600037600051600055596000f3",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x3400000000000000000000000000000000000000000000000000000000000000"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x0de0b6b3a7640000",
+                "code" : "0x60016001600037600051600055596000f3",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatacopy2.json b/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatacopy2.json
new file mode 100644
index 0000000000000000000000000000000000000000..ee9eea628de6e4b8045864825bcc4b828b22a65e
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatacopy2.json
@@ -0,0 +1,51 @@
+{
+    "calldatacopy2" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmEnvironmentalInfo/calldatacopy2Filler.json",
+            "sourceHash" : "3acb5771658d79d6ff4e17b69cfeea9bcc5e51ab11afb0c511b4d7be801e71d4"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60006001600037600051600055",
+            "data" : "0x1234567890abcdef01234567890abcdef0",
+            "gas" : "0x174876e800",
+            "gasPrice" : "0x3b9aca00",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x174876d460",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60006001600037600051600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60006001600037600051600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatacopy2_return.json b/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatacopy2_return.json
new file mode 100644
index 0000000000000000000000000000000000000000..0b58b51bb91ddd6c346fce61751cf5689c69846a
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatacopy2_return.json
@@ -0,0 +1,51 @@
+{
+    "calldatacopy2_return" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmEnvironmentalInfo/calldatacopy2_returnFiller.json",
+            "sourceHash" : "4268c07197871b5b5c14bcda3f746a2bb787c8dba2d987bf3c1fb0bc1fc4db4c"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60006001600037600051600055596000f3",
+            "data" : "0x1234567890abcdef01234567890abcdef0",
+            "gas" : "0x174876e800",
+            "gasPrice" : "0x3b9aca00",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x174876d45b",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x0000000000000000000000000000000000000000000000000000000000000000",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x0de0b6b3a7640000",
+                "code" : "0x60006001600037600051600055596000f3",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x0de0b6b3a7640000",
+                "code" : "0x60006001600037600051600055596000f3",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatacopyUnderFlowerror.json b/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatacopyUnderFlowerror.json
new file mode 100644
index 0000000000000000000000000000000000000000..8055ecf5081fcb64e35a1f15a5db0acce7caa349
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatacopyUnderFlowerror.json
@@ -0,0 +1,37 @@
+{
+    "calldatacopyUnderFlowerror" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmEnvironmentalInfo/calldatacopyUnderFlowFiller.json",
+            "sourceHash" : "55ea90b15f19bf8f4838c35234d202eab4473284e5895af23b885368f34200a1"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6001600237",
+            "data" : "0x1234567890abcdef01234567890abcdef0",
+            "gas" : "0x174876e800",
+            "gasPrice" : "0x3b9aca00",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6001600237",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatacopyZeroMemExpansion.json b/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatacopyZeroMemExpansion.json
new file mode 100644
index 0000000000000000000000000000000000000000..ae46df058d0e1300c6fe30a5ee29ee99061fa250
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatacopyZeroMemExpansion.json
@@ -0,0 +1,51 @@
+{
+    "calldatacopyZeroMemExpansion" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmEnvironmentalInfo/calldatacopyZeroMemExpansionFiller.json",
+            "sourceHash" : "99d8509de4a25c88abd0647c68310552c67f395a92f4e6a8e67cc3707af076c5"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60006000600037600051600055",
+            "data" : "0x1234567890abcdef01234567890abcdef0",
+            "gas" : "0x174876e800",
+            "gasPrice" : "0x3b9aca00",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x174876d460",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60006000600037600051600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60006000600037600051600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatacopyZeroMemExpansion_return.json b/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatacopyZeroMemExpansion_return.json
new file mode 100644
index 0000000000000000000000000000000000000000..ada5fe54ba96a8284a9a657724ec419fc49ef5f9
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatacopyZeroMemExpansion_return.json
@@ -0,0 +1,51 @@
+{
+    "calldatacopyZeroMemExpansion_return" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmEnvironmentalInfo/calldatacopyZeroMemExpansion_returnFiller.json",
+            "sourceHash" : "b00f6239c55457bfec8870ad2ffaa42b2b53228c4f610eba391b8ce561dc9d4f"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60006000600037600051600055596000f3",
+            "data" : "0x1234567890abcdef01234567890abcdef0",
+            "gas" : "0x174876e800",
+            "gasPrice" : "0x3b9aca00",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x174876d45b",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x0000000000000000000000000000000000000000000000000000000000000000",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x0de0b6b3a7640000",
+                "code" : "0x60006000600037600051600055596000f3",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x0de0b6b3a7640000",
+                "code" : "0x60006000600037600051600055596000f3",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatacopy_DataIndexTooHigh.json b/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatacopy_DataIndexTooHigh.json
new file mode 100644
index 0000000000000000000000000000000000000000..af0145ce49ed5b5e7fc8c1349e639ec46a0cbbff
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatacopy_DataIndexTooHigh.json
@@ -0,0 +1,51 @@
+{
+    "calldatacopy_DataIndexTooHigh" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmEnvironmentalInfo/calldatacopy_DataIndexTooHighFiller.json",
+            "sourceHash" : "72c5c7337895354e6d12b41ef4f144db87f945068a1a20134168f7e63f61a0d7"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60ff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa600037600051600055",
+            "data" : "0x1234567890abcdef01234567890abcdef0",
+            "gas" : "0x174876e800",
+            "gasPrice" : "0x3b9aca00",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x174876d433",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60ff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa600037600051600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60ff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa600037600051600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatacopy_DataIndexTooHigh2.json b/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatacopy_DataIndexTooHigh2.json
new file mode 100644
index 0000000000000000000000000000000000000000..b172a89d673335dcb0b46165c7139d35de5e5d38
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatacopy_DataIndexTooHigh2.json
@@ -0,0 +1,51 @@
+{
+    "calldatacopy_DataIndexTooHigh2" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmEnvironmentalInfo/calldatacopy_DataIndexTooHigh2Filler.json",
+            "sourceHash" : "bf92d18c0d12f1e9d48a5cf116ece7559ad36d67383a8b25792b4b6003180304"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60097ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa600037600051600055",
+            "data" : "0x1234567890abcdef01234567890abcdef0",
+            "gas" : "0x174876e800",
+            "gasPrice" : "0x3b9aca00",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x174876d45d",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60097ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa600037600051600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60097ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa600037600051600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatacopy_DataIndexTooHigh2_return.json b/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatacopy_DataIndexTooHigh2_return.json
new file mode 100644
index 0000000000000000000000000000000000000000..8f2154fcaac4bfdce68b52651c9172ce6a95a3dc
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatacopy_DataIndexTooHigh2_return.json
@@ -0,0 +1,51 @@
+{
+    "calldatacopy_DataIndexTooHigh2_return" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmEnvironmentalInfo/calldatacopy_DataIndexTooHigh2_returnFiller.json",
+            "sourceHash" : "990882750573f3f5938a3f2cd66b0f41c842538f70d70045e179d246b8a076e0"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60097ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa600037600051600055596000f3",
+            "data" : "0x1234567890abcdef01234567890abcdef0",
+            "gas" : "0x174876e800",
+            "gasPrice" : "0x3b9aca00",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x174876d458",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x0000000000000000000000000000000000000000000000000000000000000000",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x0de0b6b3a7640000",
+                "code" : "0x60097ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa600037600051600055596000f3",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x0de0b6b3a7640000",
+                "code" : "0x60097ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa600037600051600055596000f3",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatacopy_DataIndexTooHigh_return.json b/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatacopy_DataIndexTooHigh_return.json
new file mode 100644
index 0000000000000000000000000000000000000000..b3d3f8428537b21a9fd8b8b41d489fe967a5a6ac
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatacopy_DataIndexTooHigh_return.json
@@ -0,0 +1,51 @@
+{
+    "calldatacopy_DataIndexTooHigh_return" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmEnvironmentalInfo/calldatacopy_DataIndexTooHigh_returnFiller.json",
+            "sourceHash" : "640a52c64dfe9f43c6c5bb1aa4fc2a95839f352533e95fabe5493ff142b210c7"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60ff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa600037600051600055596000f3",
+            "data" : "0x1234567890abcdef01234567890abcdef0",
+            "gas" : "0x174876e800",
+            "gasPrice" : "0x3b9aca00",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x174876d42e",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x0de0b6b3a7640000",
+                "code" : "0x60ff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa600037600051600055596000f3",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x0de0b6b3a7640000",
+                "code" : "0x60ff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa600037600051600055596000f3",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatacopy_sec.json b/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatacopy_sec.json
new file mode 100644
index 0000000000000000000000000000000000000000..2dcde3f4d4b44a820369fade9cd520f105be5d8b
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatacopy_sec.json
@@ -0,0 +1,52 @@
+{
+    "calldatacopy_sec" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmEnvironmentalInfo/calldatacopy_secFiller.json",
+            "sourceHash" : "9c7568cda862ed10722f83b99c948af03cb38ae4042d45fa55aae12cca979f88"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6005565b005b6042601f536101036000601f3760005180606014600357640badc0ffee60ff55",
+            "data" : "0x1234567890abcdef01234567890abcdef0",
+            "gas" : "0x174876e800",
+            "gasPrice" : "0x3b9aca00",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x1748769964",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x0de0b6b3a7640000",
+                "code" : "0x6005565b005b6042601f536101036000601f3760005180606014600357640badc0ffee60ff55",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0xff" : "0x0badc0ffee"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x0de0b6b3a7640000",
+                "code" : "0x6005565b005b6042601f536101036000601f3760005180606014600357640badc0ffee60ff55",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldataload0.json b/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldataload0.json
new file mode 100644
index 0000000000000000000000000000000000000000..e3c1944b7e0b90f331c96d53d2dfadad449a6435
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldataload0.json
@@ -0,0 +1,52 @@
+{
+    "calldataload0" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmEnvironmentalInfo/calldataload0Filler.json",
+            "sourceHash" : "3bfae7447ad076b4da51568b72acb70e9bd946fbf68a79705015c4600d9d99de"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x600035600055",
+            "data" : "0x2560",
+            "gas" : "0x174876e800",
+            "gasPrice" : "0x3b9aca00",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x17487699d7",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600035600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x2560000000000000000000000000000000000000000000000000000000000000"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600035600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldataload1.json b/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldataload1.json
new file mode 100644
index 0000000000000000000000000000000000000000..cad9dca13a880d9802c11074e8917b33852855b2
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldataload1.json
@@ -0,0 +1,52 @@
+{
+    "calldataload1" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmEnvironmentalInfo/calldataload1Filler.json",
+            "sourceHash" : "3cda66b7abff563a2178c736c6ff9235784bbc4083083c1880268c1f32281606"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x600135600055",
+            "data" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff23",
+            "gas" : "0x174876e800",
+            "gasPrice" : "0x3b9aca00",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x17487699d7",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600135600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff23"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600135600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldataload2.json b/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldataload2.json
new file mode 100644
index 0000000000000000000000000000000000000000..e4130af6add77d859a6c9d54cfc5eaee5ec36f36
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldataload2.json
@@ -0,0 +1,52 @@
+{
+    "calldataload2" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmEnvironmentalInfo/calldataload2Filler.json",
+            "sourceHash" : "0274681bf0559ab144aa2273cd566d1b32bcc58843ca142e8c6e6fd567196882"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x600535600055",
+            "data" : "0x123456789abcdef00000000000000000000000000000000000000000000000000024",
+            "gas" : "0x174876e800",
+            "gasPrice" : "0x3b9aca00",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x17487699d7",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600535600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0xbcdef00000000000000000000000000000000000000000000000000024000000"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600535600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldataloadSizeTooHigh.json b/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldataloadSizeTooHigh.json
new file mode 100644
index 0000000000000000000000000000000000000000..ed49980939286f50851e2f6b2c885bf696c6452f
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldataloadSizeTooHigh.json
@@ -0,0 +1,51 @@
+{
+    "calldataloadSizeTooHigh" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmEnvironmentalInfo/calldataloadSizeTooHighFiller.json",
+            "sourceHash" : "0a556d7e2b38d3ac82c12938237c81673868011512d36133443339bc000d56c5"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa35600055",
+            "data" : "0x123456789abcdef00000000000000000000000000000000000000000000000000024",
+            "gas" : "0x174876e800",
+            "gasPrice" : "0x3b9aca00",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x174876d46f",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa35600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa35600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldataloadSizeTooHighPartial.json b/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldataloadSizeTooHighPartial.json
new file mode 100644
index 0000000000000000000000000000000000000000..092afa72b99f7c85d154afe4514907c4efb71648
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldataloadSizeTooHighPartial.json
@@ -0,0 +1,52 @@
+{
+    "calldataloadSizeTooHighPartial" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmEnvironmentalInfo/calldataloadSizeTooHighPartialFiller.json",
+            "sourceHash" : "8090196f324f686f77a7d362987f8697cfc7b6b3bd86d702a212d790ec12ef0f"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x600a35600055",
+            "data" : "0x123456789abcdef00000000000000000000000000000000000000000000024",
+            "gas" : "0x174876e800",
+            "gasPrice" : "0x3b9aca00",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x17487699d7",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600a35600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x240000000000000000000000"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600a35600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldataload_BigOffset.json b/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldataload_BigOffset.json
new file mode 100644
index 0000000000000000000000000000000000000000..495c557ddb547c3d4640dcddf261c944443b4820
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldataload_BigOffset.json
@@ -0,0 +1,51 @@
+{
+    "calldataload_BigOffset" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmEnvironmentalInfo/calldataload_BigOffsetFiller.json",
+            "sourceHash" : "e118bc308ccdd052ea601f5cfa51d32fc907952cb1cd16e673bff87f8c9fe203"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x7f420000000000000000000000000000000000000000000000000000000000000035600055",
+            "data" : "0x4200000000000000000000000000000000000000000000000000000000000000",
+            "gas" : "0x174876e800",
+            "gasPrice" : "0x3b9aca00",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x174876d46f",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x7f420000000000000000000000000000000000000000000000000000000000000035600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x7f420000000000000000000000000000000000000000000000000000000000000035600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatasize0.json b/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatasize0.json
new file mode 100644
index 0000000000000000000000000000000000000000..41fd6a0960349d40cf095ad69866a390450dd9c1
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatasize0.json
@@ -0,0 +1,52 @@
+{
+    "calldatasize0" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmEnvironmentalInfo/calldatasize0Filler.json",
+            "sourceHash" : "e638e627686d20765a98fa8cfab03c642bdf33216a5869e742994072c8fd051e"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x36600055",
+            "data" : "0x2560",
+            "gas" : "0x174876e800",
+            "gasPrice" : "0x3b9aca00",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x17487699db",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x36600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x02"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x36600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatasize1.json b/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatasize1.json
new file mode 100644
index 0000000000000000000000000000000000000000..66f3f194f88d038321be401eb2ed97936fea2361
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatasize1.json
@@ -0,0 +1,52 @@
+{
+    "calldatasize1" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmEnvironmentalInfo/calldatasize1Filler.json",
+            "sourceHash" : "7db2dda9d80c7eac5ae82d3e2573e7f9b47ad6cb0c5545824e2500e85ec1cc3c"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x36600055",
+            "data" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff23",
+            "gas" : "0x174876e800",
+            "gasPrice" : "0x3b9aca00",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x17487699db",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x36600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x21"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x36600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatasize2.json b/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatasize2.json
new file mode 100644
index 0000000000000000000000000000000000000000..8935bd5163dfbb341ea22eb238bdac23ca3ed0c3
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatasize2.json
@@ -0,0 +1,52 @@
+{
+    "calldatasize2" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmEnvironmentalInfo/calldatasize2Filler.json",
+            "sourceHash" : "cbd842b7c2ff77d176d3d7b5f200e908c22e47ee9a7d0f5294be85c917119f1e"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x36600055",
+            "data" : "0x230000000000000000000000000000000000000000000000000000000000000023",
+            "gas" : "0x174876e800",
+            "gasPrice" : "0x3b9aca00",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x17487699db",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x36600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x21"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x36600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/caller.json b/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/caller.json
new file mode 100644
index 0000000000000000000000000000000000000000..cf83b0e71f89dea09930a2f7e6e1ebfc24edb888
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/caller.json
@@ -0,0 +1,52 @@
+{
+    "caller" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmEnvironmentalInfo/callerFiller.json",
+            "sourceHash" : "79214a9fde65ef8c878dbf8e03a06a75483536d289ad19e56b95fdef57b1da3d"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x33600055",
+            "data" : "0x",
+            "gas" : "0x174876e800",
+            "gasPrice" : "0x3b9aca00",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x17487699db",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x33600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0xcd1722f3947def4cf144679da39c4c32bdc35681"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x33600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/callvalue.json b/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/callvalue.json
new file mode 100644
index 0000000000000000000000000000000000000000..c5a9299a8e7b37c1e689dfda5a0a7289c4ce2b53
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/callvalue.json
@@ -0,0 +1,52 @@
+{
+    "callvalue" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmEnvironmentalInfo/callvalueFiller.json",
+            "sourceHash" : "4eabc176dc48df11702d9ddf6e8501c62035436adb16aa7cd79769ab273d583a"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x34600055",
+            "data" : "0x",
+            "gas" : "0x174876e800",
+            "gasPrice" : "0x3b9aca00",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x17487699db",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x34600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x0de0b6b3a7640000"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x34600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/codecopy0.json b/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/codecopy0.json
new file mode 100644
index 0000000000000000000000000000000000000000..1836169ddc2aafaf9a76a6447461b03d992dff05
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/codecopy0.json
@@ -0,0 +1,52 @@
+{
+    "codecopy0" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmEnvironmentalInfo/codecopy0Filler.json",
+            "sourceHash" : "9354634ed14a9667c8c883c3a4eceaae263bcd3d4fe47683aa0f38f45fe877e9"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60056000600039600051600055",
+            "data" : "0x1234567890abcdef01234567890abcdef0",
+            "gas" : "0x174876e800",
+            "gasPrice" : "0x3b9aca00",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x17487699c5",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60056000600039600051600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x6005600060000000000000000000000000000000000000000000000000000000"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60056000600039600051600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/codecopyZeroMemExpansion.json b/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/codecopyZeroMemExpansion.json
new file mode 100644
index 0000000000000000000000000000000000000000..8fd12a67263977f84292d9d64b8bf680dec2eac2
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/codecopyZeroMemExpansion.json
@@ -0,0 +1,51 @@
+{
+    "codecopyZeroMemExpansion" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmEnvironmentalInfo/codecopyZeroMemExpansionFiller.json",
+            "sourceHash" : "41a8841a95018c2d228db91d29d0b75992f9a166e4207362e79d17229974ddfd"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60006000600039600051600055",
+            "data" : "0x1234567890abcdef01234567890abcdef0",
+            "gas" : "0x174876e800",
+            "gasPrice" : "0x3b9aca00",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x174876d460",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60006000600039600051600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60006000600039600051600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/codecopy_DataIndexTooHigh.json b/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/codecopy_DataIndexTooHigh.json
new file mode 100644
index 0000000000000000000000000000000000000000..a7e139c8bceb8a532ef154d700083c8e7b3cf5ac
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/codecopy_DataIndexTooHigh.json
@@ -0,0 +1,51 @@
+{
+    "codecopy_DataIndexTooHigh" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmEnvironmentalInfo/codecopy_DataIndexTooHighFiller.json",
+            "sourceHash" : "f6fac567f89aaca85c34c5a88b98870d1f7e2509b26ec566232c5d107741c6f4"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60087ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa600039600051600055",
+            "data" : "0x1234567890abcdef01234567890abcdef0",
+            "gas" : "0x174876e800",
+            "gasPrice" : "0x3b9aca00",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x174876d45d",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60087ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa600039600051600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60087ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa600039600051600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/codesize.json b/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/codesize.json
new file mode 100644
index 0000000000000000000000000000000000000000..0a8e010ffbed895fd9a26bd4c95409d72bc1d332
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/codesize.json
@@ -0,0 +1,52 @@
+{
+    "codesize" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmEnvironmentalInfo/codesizeFiller.json",
+            "sourceHash" : "632259bbd9962abfa58ec3b9e7b80a8f3babcdb47592bbc511fa5e4c0bc3ce3f"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x38600055",
+            "data" : "0x1234567890abcdef01234567890abcdef0",
+            "gas" : "0x174876e800",
+            "gasPrice" : "0x3b9aca00",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x17487699db",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x38600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x04"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x38600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/gasprice.json b/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/gasprice.json
new file mode 100644
index 0000000000000000000000000000000000000000..a8fc707e5c3a2058161d7cbd668dc0146a3f8f7f
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/gasprice.json
@@ -0,0 +1,52 @@
+{
+    "gasprice" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmEnvironmentalInfo/gaspriceFiller.json",
+            "sourceHash" : "b94e3c994e54e24b85ef80fc16f53827cd26ef01fa4a96908a20e646f57d1e48"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x3a600055",
+            "data" : "0x1234567890abcdef01234567890abcdef0",
+            "gas" : "0x174876e800",
+            "gasPrice" : "0x075bcd15",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x17487699db",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x3a600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x075bcd15"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x3a600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/origin.json b/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/origin.json
new file mode 100644
index 0000000000000000000000000000000000000000..4d3528171e1f1285213f12261578cf59423042d2
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/origin.json
@@ -0,0 +1,52 @@
+{
+    "origin" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmEnvironmentalInfo/originFiller.json",
+            "sourceHash" : "4d51cb9ee576e04b08a74a6a4ba3f10284ee1f735dd068abd7a0e551324f45be"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x32600055",
+            "data" : "0x",
+            "gas" : "0x174876e800",
+            "gasPrice" : "0x3b9aca00",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x17487699db",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x32600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0xcd1722f3947def4cf144679da39c4c32bdc35681"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x32600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/BlockNumberDynamicJump0_AfterJumpdest.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/BlockNumberDynamicJump0_AfterJumpdest.json
new file mode 100644
index 0000000000000000000000000000000000000000..2539443ab0b4095aa7488742ad012de592adf707
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/BlockNumberDynamicJump0_AfterJumpdest.json
@@ -0,0 +1,37 @@
+{
+    "BlockNumberDynamicJump0_AfterJumpdest" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/BlockNumberDynamicJump0_AfterJumpdestFiller.json",
+            "sourceHash" : "edd08521b4a9bc311f2ba99d15c867d9a98da1e9665d9b173ff85621e170e896"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x02",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6023600843015660015b600255",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6023600843015660015b600255",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/BlockNumberDynamicJump0_AfterJumpdest3.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/BlockNumberDynamicJump0_AfterJumpdest3.json
new file mode 100644
index 0000000000000000000000000000000000000000..13ff0fe4a8a09a2ac6dc7ee00c0e5f8639e7affd
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/BlockNumberDynamicJump0_AfterJumpdest3.json
@@ -0,0 +1,37 @@
+{
+    "BlockNumberDynamicJump0_AfterJumpdest3" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/BlockNumberDynamicJump0_AfterJumpdest3Filler.json",
+            "sourceHash" : "1e86dccd54bd74436a1bbfe11302b675761fc6138ebd1461231acd29ee97b0f0"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x02",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6023600b60085043015660015b600255",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6023600b60085043015660015b600255",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/BlockNumberDynamicJump0_foreverOutOfGas.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/BlockNumberDynamicJump0_foreverOutOfGas.json
new file mode 100644
index 0000000000000000000000000000000000000000..a209cb69c502a6fe96f5e1260a02bb8de13dd86d
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/BlockNumberDynamicJump0_foreverOutOfGas.json
@@ -0,0 +1,37 @@
+{
+    "BlockNumberDynamicJump0_foreverOutOfGas" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/BlockNumberDynamicJump0_foreverOutOfGasFiller.json",
+            "sourceHash" : "0900beba73811b8aafaefadcff3a7cd9954ccb5e4986b9cf03ca44881efd4e9c"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x02",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x5b600060000156",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x5b600060000156",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/BlockNumberDynamicJump0_jumpdest0.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/BlockNumberDynamicJump0_jumpdest0.json
new file mode 100644
index 0000000000000000000000000000000000000000..161e0f33150eaf4073c249a8edea47b5e7880e3e
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/BlockNumberDynamicJump0_jumpdest0.json
@@ -0,0 +1,52 @@
+{
+    "BlockNumberDynamicJump0_jumpdest0" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/BlockNumberDynamicJump0_jumpdest0Filler.json",
+            "sourceHash" : "80bfa0a5db107e6f083dccdd3091e35add39a4eaac4a8757de8a3e4008c5d646"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x02",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6023600743015660015b600255",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013869",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6023600743015660015b600255",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x02" : "0x23"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6023600743015660015b600255",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/BlockNumberDynamicJump0_jumpdest2.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/BlockNumberDynamicJump0_jumpdest2.json
new file mode 100644
index 0000000000000000000000000000000000000000..56700e28acb87c90a9ef5f6d4f4355bf5577faae
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/BlockNumberDynamicJump0_jumpdest2.json
@@ -0,0 +1,52 @@
+{
+    "BlockNumberDynamicJump0_jumpdest2" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/BlockNumberDynamicJump0_jumpdest2Filler.json",
+            "sourceHash" : "e86a87e0b5cde7d47f1e5dc295600ecc60b7344b3fb4ad64609d6b87fae642f8"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x02",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6023600a60085043015660015b600255",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013864",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6023600a60085043015660015b600255",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x02" : "0x23"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6023600a60085043015660015b600255",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/BlockNumberDynamicJump0_withoutJumpdest.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/BlockNumberDynamicJump0_withoutJumpdest.json
new file mode 100644
index 0000000000000000000000000000000000000000..3f9f828e341114ddaf8e941f0f9a0e2085499dcc
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/BlockNumberDynamicJump0_withoutJumpdest.json
@@ -0,0 +1,37 @@
+{
+    "BlockNumberDynamicJump0_withoutJumpdest" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/BlockNumberDynamicJump0_withoutJumpdestFiller.json",
+            "sourceHash" : "6f1fc4a9e5dff3e5d3071c576aba5b2ee1f30d7dcace92e6c6d230cfd415efd7"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x02",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x602360074301566001600255",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x602360074301566001600255",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/BlockNumberDynamicJump1.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/BlockNumberDynamicJump1.json
new file mode 100644
index 0000000000000000000000000000000000000000..4109f5307f0cf07fc7a5c98b85e6bae6a01c47d1
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/BlockNumberDynamicJump1.json
@@ -0,0 +1,37 @@
+{
+    "BlockNumberDynamicJump1" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/BlockNumberDynamicJump1Filler.json",
+            "sourceHash" : "88e43b5985cc4dfbcbc8476c570157e6e7bc0ee0cb3609e9e9f3dd9aa2a3a528"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x02",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x620fffff620fffff01430156",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x620fffff620fffff01430156",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/BlockNumberDynamicJumpInsidePushWithJumpDest.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/BlockNumberDynamicJumpInsidePushWithJumpDest.json
new file mode 100644
index 0000000000000000000000000000000000000000..13c6b0c7444ecbb23657006de72a860f570d32fc
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/BlockNumberDynamicJumpInsidePushWithJumpDest.json
@@ -0,0 +1,37 @@
+{
+    "BlockNumberDynamicJumpInsidePushWithJumpDest" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/BlockNumberDynamicJumpInsidePushWithJumpDestFiller.json",
+            "sourceHash" : "ca0f21a5f52a8d4f2d6e1eed650f68d5f8f40e567cf17984aacc228adfa578ab"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x02",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6004430156655b6001600155",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6004430156655b6001600155",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/BlockNumberDynamicJumpInsidePushWithoutJumpDest.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/BlockNumberDynamicJumpInsidePushWithoutJumpDest.json
new file mode 100644
index 0000000000000000000000000000000000000000..fc904df5ad8ca51ffe16c1c652541e09be506b87
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/BlockNumberDynamicJumpInsidePushWithoutJumpDest.json
@@ -0,0 +1,37 @@
+{
+    "BlockNumberDynamicJumpInsidePushWithoutJumpDest" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/BlockNumberDynamicJumpInsidePushWithoutJumpDestFiller.json",
+            "sourceHash" : "183a4ce2d0f208630db92539aaf4e38fc3025b44a2842e19e39e956465449fe5"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x02",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x600543015661eeff",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600543015661eeff",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/BlockNumberDynamicJumpi0.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/BlockNumberDynamicJumpi0.json
new file mode 100644
index 0000000000000000000000000000000000000000..d0b67dd93a8ad912b2ab4964b18bd9610f2aa58f
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/BlockNumberDynamicJumpi0.json
@@ -0,0 +1,37 @@
+{
+    "BlockNumberDynamicJumpi0" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/BlockNumberDynamicJumpi0Filler.json",
+            "sourceHash" : "620bba922f5a1732f512d726a26e71b09d3837018a66a9aacb581b212a4f4b13"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x02",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6023600160094301576001600255",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6023600160094301576001600255",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/BlockNumberDynamicJumpi1.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/BlockNumberDynamicJumpi1.json
new file mode 100644
index 0000000000000000000000000000000000000000..5c404de0201c5f73d8d6c1490c7c9f6a7880bb04
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/BlockNumberDynamicJumpi1.json
@@ -0,0 +1,52 @@
+{
+    "BlockNumberDynamicJumpi1" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/BlockNumberDynamicJumpi1Filler.json",
+            "sourceHash" : "91d6fe3848fbdafff10b7bd503d560f2c614d6b53ed16b51821d3026f4a3a544"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x02",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6023600060094301576001600255",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013862",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6023600060094301576001600255",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x02" : "0x01"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6023600060094301576001600255",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/BlockNumberDynamicJumpi1_jumpdest.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/BlockNumberDynamicJumpi1_jumpdest.json
new file mode 100644
index 0000000000000000000000000000000000000000..f6eca58143841396634bcdb4b7479093eb358f98
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/BlockNumberDynamicJumpi1_jumpdest.json
@@ -0,0 +1,37 @@
+{
+    "BlockNumberDynamicJumpi1_jumpdest" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/BlockNumberDynamicJumpi1_jumpdestFiller.json",
+            "sourceHash" : "420810639c740487f7b8d18b29f28dcfb7d762b1aa4aa9b9f8b91928da66a539"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x02",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60236001600a43015760015b600255",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60236001600a43015760015b600255",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/BlockNumberDynamicJumpiAfterStop.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/BlockNumberDynamicJumpiAfterStop.json
new file mode 100644
index 0000000000000000000000000000000000000000..8c080a3ad427cbf7b8aa94e894b0e7b65e9f01e7
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/BlockNumberDynamicJumpiAfterStop.json
@@ -0,0 +1,52 @@
+{
+    "BlockNumberDynamicJumpiAfterStop" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/BlockNumberDynamicJumpiAfterStopFiller.json",
+            "sourceHash" : "7331cec587701bf695329ad94c7e62963827209faffac3b24eb59341ccb1a925"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x02",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x600160084301570060015b6002600355",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013864",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600160084301570060015b6002600355",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x03" : "0x02"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600160084301570060015b6002600355",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/BlockNumberDynamicJumpiOutsideBoundary.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/BlockNumberDynamicJumpiOutsideBoundary.json
new file mode 100644
index 0000000000000000000000000000000000000000..102f95d08b8a3c2420a7db99531660ceff9d1080
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/BlockNumberDynamicJumpiOutsideBoundary.json
@@ -0,0 +1,37 @@
+{
+    "BlockNumberDynamicJumpiOutsideBoundary" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/BlockNumberDynamicJumpiOutsideBoundaryFiller.json",
+            "sourceHash" : "db80ec0400be086e2a316a91ee7a5f87db06ff6a5b0ad27a50ba692049a54b1c"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x02",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60017ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04301576002600355",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60017ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04301576002600355",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/BlockNumberDynamicJumpifInsidePushWithJumpDest.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/BlockNumberDynamicJumpifInsidePushWithJumpDest.json
new file mode 100644
index 0000000000000000000000000000000000000000..aa28e7f20634762504bc8267947fa1744181e1d6
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/BlockNumberDynamicJumpifInsidePushWithJumpDest.json
@@ -0,0 +1,37 @@
+{
+    "BlockNumberDynamicJumpifInsidePushWithJumpDest" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/BlockNumberDynamicJumpifInsidePushWithJumpDestFiller.json",
+            "sourceHash" : "4b52bc3a45a966d0032eb01b3fdb8a225af48fa4f5a017b5dff3d4d88d710337"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x02",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60016006430157655b6001600155",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60016006430157655b6001600155",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/BlockNumberDynamicJumpifInsidePushWithoutJumpDest.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/BlockNumberDynamicJumpifInsidePushWithoutJumpDest.json
new file mode 100644
index 0000000000000000000000000000000000000000..f41afd949efcdf2807ad25d929ed5b30aa577eb7
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/BlockNumberDynamicJumpifInsidePushWithoutJumpDest.json
@@ -0,0 +1,37 @@
+{
+    "BlockNumberDynamicJumpifInsidePushWithoutJumpDest" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/BlockNumberDynamicJumpifInsidePushWithoutJumpDestFiller.json",
+            "sourceHash" : "3fccd0c56ebfd40dea69fec03d009967a80ddf93e9a68af81efd2d1645e27fcb"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x02",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6001600743015761eeff",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6001600743015761eeff",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DyanmicJump0_outOfBoundary.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DyanmicJump0_outOfBoundary.json
new file mode 100644
index 0000000000000000000000000000000000000000..023fa033fdd33e98753396c543168af0c4b29303
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DyanmicJump0_outOfBoundary.json
@@ -0,0 +1,38 @@
+{
+    "DyanmicJump0_outOfBoundary" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/DyanmicJump0_outOfBoundaryFiller.json",
+            "sourceHash" : "a2ae635e97f7381a5af1ea432d210faf19f4f84e8e0e6874bd48005674bfea92"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x02",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6023600760005401566001600255",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6023600760005401566001600255",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x04"
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJump0_AfterJumpdest.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJump0_AfterJumpdest.json
new file mode 100644
index 0000000000000000000000000000000000000000..df8609cfae20705c19895d71c4fb46f5cf38211e
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJump0_AfterJumpdest.json
@@ -0,0 +1,37 @@
+{
+    "DynamicJump0_AfterJumpdest" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/DynamicJump0_AfterJumpdestFiller.json",
+            "sourceHash" : "605f607251cd4a7c73bd7c814edcada6a9008fcd2896af2caf371beb31db196b"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x602360086003015660015b600255",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x602360086003015660015b600255",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJump0_AfterJumpdest3.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJump0_AfterJumpdest3.json
new file mode 100644
index 0000000000000000000000000000000000000000..71f34d968c907ca945d1a527dc60c4ddc2c670c2
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJump0_AfterJumpdest3.json
@@ -0,0 +1,37 @@
+{
+    "DynamicJump0_AfterJumpdest3" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/DynamicJump0_AfterJumpdest3Filler.json",
+            "sourceHash" : "b7367314ce66b1a937c05550ac901971b5850d2a0ef03acf1feb4d6c9f38925d"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6023600b6008506003015660015b600255",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6023600b6008506003015660015b600255",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJump0_foreverOutOfGas.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJump0_foreverOutOfGas.json
new file mode 100644
index 0000000000000000000000000000000000000000..dea2379c05005751c681fba5205f823dd4a374b6
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJump0_foreverOutOfGas.json
@@ -0,0 +1,37 @@
+{
+    "DynamicJump0_foreverOutOfGas" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/DynamicJump0_foreverOutOfGasFiller.json",
+            "sourceHash" : "68b687a344b0f44d7459e095f05f6b302ee3f5d15b3c3e7765d5642fb1f46689"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x5b600060000156",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x5b600060000156",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJump0_jumpdest0.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJump0_jumpdest0.json
new file mode 100644
index 0000000000000000000000000000000000000000..3a11d95c418f784b25e9819633b36c5996406f66
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJump0_jumpdest0.json
@@ -0,0 +1,52 @@
+{
+    "DynamicJump0_jumpdest0" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/DynamicJump0_jumpdest0Filler.json",
+            "sourceHash" : "3ab9d036e3e345909b19022f4c3b80d081d214eb5c79b8e94e0f2c660ab01ec7"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x602360076003015660015b600255",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013868",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x602360076003015660015b600255",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x02" : "0x23"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x602360076003015660015b600255",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJump0_jumpdest2.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJump0_jumpdest2.json
new file mode 100644
index 0000000000000000000000000000000000000000..48d81262558c1f6bd30143fcae203643f1ed26bb
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJump0_jumpdest2.json
@@ -0,0 +1,52 @@
+{
+    "DynamicJump0_jumpdest2" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/DynamicJump0_jumpdest2Filler.json",
+            "sourceHash" : "a7e9d9f046151930ef4b51b8dacce5304ce74c3f5ead80f1e52f783b1a704378"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6023600a6008506003015660015b600255",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013863",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6023600a6008506003015660015b600255",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x02" : "0x23"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6023600a6008506003015660015b600255",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJump0_withoutJumpdest.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJump0_withoutJumpdest.json
new file mode 100644
index 0000000000000000000000000000000000000000..2a7272965ffff8a7b6bd7ff01d3bb80b0eb17cad
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJump0_withoutJumpdest.json
@@ -0,0 +1,37 @@
+{
+    "DynamicJump0_withoutJumpdest" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/DynamicJump0_withoutJumpdestFiller.json",
+            "sourceHash" : "84c524e0cafc2ddcebdef720e46a23d10061f4a35bb06bfe7bdfe444990593a6"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60236007600301566001600255",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60236007600301566001600255",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJump1.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJump1.json
new file mode 100644
index 0000000000000000000000000000000000000000..905b3d7770cc6e0fa49fe4764395e6582b2d5d77
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJump1.json
@@ -0,0 +1,37 @@
+{
+    "DynamicJump1" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/DynamicJump1Filler.json",
+            "sourceHash" : "2369bac56afc1e0946f608c52027fbc88faf3844cdc2fa46954a0916221b8432"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x620fffff620fffff0160030156",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x620fffff620fffff0160030156",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpAfterStop.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpAfterStop.json
new file mode 100644
index 0000000000000000000000000000000000000000..127a2b9c0a958193035053f876965dc8a839bc6d
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpAfterStop.json
@@ -0,0 +1,52 @@
+{
+    "DynamicJumpAfterStop" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/DynamicJumpAfterStopFiller.json",
+            "sourceHash" : "5ba8a9cb65319cdc8e574e0eb59695b55158e6d723945bac3b96573a576a86a8"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6008600101560060015b6002600355",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013868",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6008600101560060015b6002600355",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x03" : "0x02"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6008600101560060015b6002600355",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpInsidePushWithJumpDest.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpInsidePushWithJumpDest.json
new file mode 100644
index 0000000000000000000000000000000000000000..0975ad3d6cff11c9ed0b3f62e93f22389af9365b
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpInsidePushWithJumpDest.json
@@ -0,0 +1,37 @@
+{
+    "DynamicJumpInsidePushWithJumpDest" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/DynamicJumpInsidePushWithJumpDestFiller.json",
+            "sourceHash" : "3f3586292e12e696029f38f833fe8c7cea86a0e7cda83c0cbe783aa2c3b22b0c"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x600460030156655b6001600155",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600460030156655b6001600155",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpInsidePushWithoutJumpDest.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpInsidePushWithoutJumpDest.json
new file mode 100644
index 0000000000000000000000000000000000000000..cfe0d21c1c1f814c44a474fd8cf1aa1f983f3d1f
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpInsidePushWithoutJumpDest.json
@@ -0,0 +1,37 @@
+{
+    "DynamicJumpInsidePushWithoutJumpDest" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/DynamicJumpInsidePushWithoutJumpDestFiller.json",
+            "sourceHash" : "4e320bace2f65884d59f95dbbba6e4f9aea39e243bffd309be9bb6c5a3c1bedb"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60056003015661eeff",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60056003015661eeff",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpJD_DependsOnJumps0.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpJD_DependsOnJumps0.json
new file mode 100644
index 0000000000000000000000000000000000000000..ebe71f5aa0d088df176c79bd2fa6e13ccc0bba2b
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpJD_DependsOnJumps0.json
@@ -0,0 +1,37 @@
+{
+    "DynamicJumpJD_DependsOnJumps0" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/DynamicJumpJD_DependsOnJumps0Filler.json",
+            "sourceHash" : "e96143bec9697fb0d565026f5fcc5ed70833bf89eb8c63aa87e0155b4e61d8f4"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x01",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6009436006575b566001",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6009436006575b566001",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpJD_DependsOnJumps1.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpJD_DependsOnJumps1.json
new file mode 100644
index 0000000000000000000000000000000000000000..7768209d447168b57b58179ac1555f5004fb57d3
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpJD_DependsOnJumps1.json
@@ -0,0 +1,52 @@
+{
+    "DynamicJumpJD_DependsOnJumps1" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/DynamicJumpJD_DependsOnJumps1Filler.json",
+            "sourceHash" : "853f3f35881b9db63508e68d34cf87a1a3697fdc969821c0659462242d859c2b"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x01",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x600a436006575b5660015b6001600155",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01385e",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600a436006575b5660015b6001600155",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x01" : "0x01"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600a436006575b5660015b6001600155",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpPathologicalTest0.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpPathologicalTest0.json
new file mode 100644
index 0000000000000000000000000000000000000000..975b16197813798f38f5ef14ac058beedf64d0d0
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpPathologicalTest0.json
@@ -0,0 +1,52 @@
+{
+    "DynamicJumpPathologicalTest0" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/DynamicJumpPathologicalTest0Filler.json",
+            "sourceHash" : "6862ac2a8fad0b3c043493fcd9c9a7e8a549c9f3ef34019ac0d7bcfd096a8040"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x04",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x435660615b4343025660615b60615b5b5b6001600155",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01385d",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x435660615b4343025660615b60615b5b5b6001600155",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x01" : "0x01"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x435660615b4343025660615b60615b5b5b6001600155",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpPathologicalTest1.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpPathologicalTest1.json
new file mode 100644
index 0000000000000000000000000000000000000000..9c60176ae7984ecf13bc7615f6c9ded04d16fef1
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpPathologicalTest1.json
@@ -0,0 +1,37 @@
+{
+    "DynamicJumpPathologicalTest1" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/DynamicJumpPathologicalTest1Filler.json",
+            "sourceHash" : "dfbad553b0e28f37f6a5d72740e2ae6bf17ce1b19c62caf2cc2a99c0d1d84e05"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x04",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x435660615b4343025660615b60615b605b6001600155",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x435660615b4343025660615b60615b605b6001600155",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpPathologicalTest2.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpPathologicalTest2.json
new file mode 100644
index 0000000000000000000000000000000000000000..967835917c9ddafb57e815b28cc16e6a2ff392eb
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpPathologicalTest2.json
@@ -0,0 +1,37 @@
+{
+    "DynamicJumpPathologicalTest2" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/DynamicJumpPathologicalTest2Filler.json",
+            "sourceHash" : "957bc609a0322452da86a59c96e7eea17c5463dcd7bad6ed97b57c6460a90b80"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x04",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x435631615b60615b60615b606001600155",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x435631615b60615b60615b606001600155",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpPathologicalTest3.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpPathologicalTest3.json
new file mode 100644
index 0000000000000000000000000000000000000000..3e3317ef7cee4cd96cbab3c07f6c8dcef8da84a2
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpPathologicalTest3.json
@@ -0,0 +1,37 @@
+{
+    "DynamicJumpPathologicalTest3" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/DynamicJumpPathologicalTest3Filler.json",
+            "sourceHash" : "a906b3dcb41da1cdacb67bdf49111ecd2bdaab0e3584dbd3993ef0f0555766f6"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x07",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x435631615b60615b60615b606001600155",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x435631615b60615b60615b606001600155",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpStartWithJumpDest.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpStartWithJumpDest.json
new file mode 100644
index 0000000000000000000000000000000000000000..72b3d6be1c9e5c83dcb10104d14a47985725688a
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpStartWithJumpDest.json
@@ -0,0 +1,52 @@
+{
+    "DynamicJumpStartWithJumpDest" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/DynamicJumpStartWithJumpDestFiller.json",
+            "sourceHash" : "4fb19acd65703dce630cb655f52e98d2de72d8a790d53b895d0e7bce603d4166"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x5b586000555960115758600052596000575b58600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x011126",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x5b586000555960115758600052596000575b58600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x12"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x5b586000555960115758600052596000575b58600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJump_value1.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJump_value1.json
new file mode 100644
index 0000000000000000000000000000000000000000..003998fbe13440e17c3a1cded77e947093d0d733
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJump_value1.json
@@ -0,0 +1,51 @@
+{
+    "DynamicJump_value1" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/DynamicJump_value1Filler.json",
+            "sourceHash" : "20503c4d21019e3d9d87b95365a0d0417fb7e163265f938d6e3f685377a2c5da"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60016002600334565b5050600052596000f35b50600052596000f35b600052596000f3",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x08"
+        },
+        "gas" : "0x01867a",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x0000000000000000000000000000000000000000000000000000000000000001",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60016002600334565b5050600052596000f35b50600052596000f35b600052596000f3",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60016002600334565b5050600052596000f35b50600052596000f35b600052596000f3",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJump_value2.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJump_value2.json
new file mode 100644
index 0000000000000000000000000000000000000000..fafb704fbef6530d020fc51390fbb5acd985550d
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJump_value2.json
@@ -0,0 +1,51 @@
+{
+    "DynamicJump_value2" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/DynamicJump_value2Filler.json",
+            "sourceHash" : "00631169ba52dbbd3d7ac8529dd960c6b297226c0f177ee3e0ef8bd202b4b1ff"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60016002600334565b5050600052596000f35b50600052596000f35b600052596000f3",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x12"
+        },
+        "gas" : "0x01867c",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x0000000000000000000000000000000000000000000000000000000000000002",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60016002600334565b5050600052596000f35b50600052596000f35b600052596000f3",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60016002600334565b5050600052596000f35b50600052596000f35b600052596000f3",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJump_value3.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJump_value3.json
new file mode 100644
index 0000000000000000000000000000000000000000..cbdcc414d6898aed9a6431476ecd4d470dd0853e
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJump_value3.json
@@ -0,0 +1,51 @@
+{
+    "DynamicJump_value3" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/DynamicJump_value3Filler.json",
+            "sourceHash" : "a1477eeb656e1f4d09c07f020a088cc099f6661fce88f137754b1d45550d7218"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60016002600334565b5050600052596000f35b50600052596000f35b600052596000f3",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x1b"
+        },
+        "gas" : "0x01867e",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x0000000000000000000000000000000000000000000000000000000000000003",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60016002600334565b5050600052596000f35b50600052596000f35b600052596000f3",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60016002600334565b5050600052596000f35b50600052596000f35b600052596000f3",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJump_valueUnderflow.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJump_valueUnderflow.json
new file mode 100644
index 0000000000000000000000000000000000000000..99ea9ce461e979a03be82ed2cd048374084204b8
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJump_valueUnderflow.json
@@ -0,0 +1,37 @@
+{
+    "DynamicJump_valueUnderflow" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/DynamicJump_valueUnderflowFiller.json",
+            "sourceHash" : "37f012edfeaa13e4819617af0e8dc2fd71d738a2463b1f61bfd86de0ef980f1b"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60016002600334565b5050600052596000f35b50600052596000f35b505050600052596000f3",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x1b"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60016002600334565b5050600052596000f35b50600052596000f35b505050600052596000f3",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpi0.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpi0.json
new file mode 100644
index 0000000000000000000000000000000000000000..123d0e6a49a83e672048f3b196be710ebc16f3c8
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpi0.json
@@ -0,0 +1,37 @@
+{
+    "DynamicJumpi0" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/DynamicJumpi0Filler.json",
+            "sourceHash" : "394cae3e06d120cc1a5df5e14cfae3598d62e1fefa06dce4055c6ff59c367b63"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x602360016009600301576001600255",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x602360016009600301576001600255",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpi1.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpi1.json
new file mode 100644
index 0000000000000000000000000000000000000000..70e8c31b0f0bd09773af40245f249aa65b5c695f
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpi1.json
@@ -0,0 +1,52 @@
+{
+    "DynamicJumpi1" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/DynamicJumpi1Filler.json",
+            "sourceHash" : "31d323d1c24dd2c2ea5a4e18fd0765bfa1be189add7e395b2679bf5a98e492ab"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x602360006009600301576001600255",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013861",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x602360006009600301576001600255",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x02" : "0x01"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x602360006009600301576001600255",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpi1_jumpdest.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpi1_jumpdest.json
new file mode 100644
index 0000000000000000000000000000000000000000..82c56f061ac47358b82f6d7a20eded54588fa971
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpi1_jumpdest.json
@@ -0,0 +1,37 @@
+{
+    "DynamicJumpi1_jumpdest" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/DynamicJumpi1_jumpdestFiller.json",
+            "sourceHash" : "fb4060a7f68c0f3ad9643dcfc93fa90ea0fe6123e65499ae65f400e22db20bcc"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60236001600a6003015760015b600255",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60236001600a6003015760015b600255",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpiAfterStop.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpiAfterStop.json
new file mode 100644
index 0000000000000000000000000000000000000000..1e9d80bf5536f46d5aa467b089d56c334c401c77
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpiAfterStop.json
@@ -0,0 +1,52 @@
+{
+    "DynamicJumpiAfterStop" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/DynamicJumpiAfterStopFiller.json",
+            "sourceHash" : "d61d45e9d5ea3e13d2a8a33965c9c620207156e0b4baf2dfed9a0288c7e8053b"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60016008600301570060015b6002600355",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013863",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60016008600301570060015b6002600355",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x03" : "0x02"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60016008600301570060015b6002600355",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpiOutsideBoundary.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpiOutsideBoundary.json
new file mode 100644
index 0000000000000000000000000000000000000000..40a1e452f28021243153f5bc53990ea1982840a8
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpiOutsideBoundary.json
@@ -0,0 +1,37 @@
+{
+    "DynamicJumpiOutsideBoundary" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/DynamicJumpiOutsideBoundaryFiller.json",
+            "sourceHash" : "d550aa41047204857f27b7a80a1309520f3e59b41a87ef3e40492032706e5a88"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60017ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0600301576002600355",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60017ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0600301576002600355",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpifInsidePushWithJumpDest.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpifInsidePushWithJumpDest.json
new file mode 100644
index 0000000000000000000000000000000000000000..810ea2737f90e130355d3f4e4d2a4cf89784c6ca
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpifInsidePushWithJumpDest.json
@@ -0,0 +1,37 @@
+{
+    "DynamicJumpifInsidePushWithJumpDest" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/DynamicJumpifInsidePushWithJumpDestFiller.json",
+            "sourceHash" : "05f764377385769e93afe47dbc0293921c211b4e68afce30f18cba4bb5955420"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6001600660030157655b6001600155",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6001600660030157655b6001600155",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpifInsidePushWithoutJumpDest.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpifInsidePushWithoutJumpDest.json
new file mode 100644
index 0000000000000000000000000000000000000000..5882ad02e51ed84216976dddff04697e7349083e
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpifInsidePushWithoutJumpDest.json
@@ -0,0 +1,37 @@
+{
+    "DynamicJumpifInsidePushWithoutJumpDest" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/DynamicJumpifInsidePushWithoutJumpDestFiller.json",
+            "sourceHash" : "cadedb13e141e3b7bf1f0763cc831dace3ff150fc623e81fb00e798168d01188"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x600160076003015761eeff",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600160076003015761eeff",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/JDfromStorageDynamicJump0_AfterJumpdest.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/JDfromStorageDynamicJump0_AfterJumpdest.json
new file mode 100644
index 0000000000000000000000000000000000000000..1d587dbeb286b5fb99e5d37fb542f0ab423d2192
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/JDfromStorageDynamicJump0_AfterJumpdest.json
@@ -0,0 +1,38 @@
+{
+    "JDfromStorageDynamicJump0_AfterJumpdest" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/JDfromStorageDynamicJump0_AfterJumpdestFiller.json",
+            "sourceHash" : "06126bb58e44948750e412ea81a3140fcc72b63acec0090939706f3ceb403ae8"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x02",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60236008600054015660015b600255",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60236008600054015660015b600255",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x04"
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/JDfromStorageDynamicJump0_AfterJumpdest3.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/JDfromStorageDynamicJump0_AfterJumpdest3.json
new file mode 100644
index 0000000000000000000000000000000000000000..045cdac5c8d512b796488f5a02e7c3956b858c1e
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/JDfromStorageDynamicJump0_AfterJumpdest3.json
@@ -0,0 +1,38 @@
+{
+    "JDfromStorageDynamicJump0_AfterJumpdest3" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/JDfromStorageDynamicJump0_AfterJumpdest3Filler.json",
+            "sourceHash" : "52880726a50d86ffdaea78e4a5d3293643688543eea049172fbf51e564f28f5b"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x02",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6023600b600850600054015660015b600255",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6023600b600850600054015660015b600255",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x04"
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/JDfromStorageDynamicJump0_foreverOutOfGas.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/JDfromStorageDynamicJump0_foreverOutOfGas.json
new file mode 100644
index 0000000000000000000000000000000000000000..a487881c12770a642ab7deaab874f34ed249536a
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/JDfromStorageDynamicJump0_foreverOutOfGas.json
@@ -0,0 +1,38 @@
+{
+    "JDfromStorageDynamicJump0_foreverOutOfGas" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/JDfromStorageDynamicJump0_foreverOutOfGasFiller.json",
+            "sourceHash" : "a3046ce1b7f78c109aa36c29db004850ad5b3b4129d9085849b7af04b719826c"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x02",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x5b600060000156",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x5b600060000156",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x04"
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/JDfromStorageDynamicJump0_jumpdest0.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/JDfromStorageDynamicJump0_jumpdest0.json
new file mode 100644
index 0000000000000000000000000000000000000000..bb410e5f6432cbfa90f57b814fe507c07471e54c
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/JDfromStorageDynamicJump0_jumpdest0.json
@@ -0,0 +1,54 @@
+{
+    "JDfromStorageDynamicJump0_jumpdest0" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/JDfromStorageDynamicJump0_jumpdest0Filler.json",
+            "sourceHash" : "2f836ba88951147677580e5de7d8d40b0ca72938894aa351096945d7962c8f62"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x02",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60236007600054015660015b600255",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013836",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60236007600054015660015b600255",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x04",
+                    "0x02" : "0x23"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60236007600054015660015b600255",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x04"
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/JDfromStorageDynamicJump0_jumpdest2.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/JDfromStorageDynamicJump0_jumpdest2.json
new file mode 100644
index 0000000000000000000000000000000000000000..5f8a9dea01aff221131b47aa6335320ac32916df
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/JDfromStorageDynamicJump0_jumpdest2.json
@@ -0,0 +1,54 @@
+{
+    "JDfromStorageDynamicJump0_jumpdest2" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/JDfromStorageDynamicJump0_jumpdest2Filler.json",
+            "sourceHash" : "efe088c5366793bcb3339225486608b15750524274baf8d5f9f592c0d5e327f2"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x02",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6023600a600850600054015660015b600255",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013831",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6023600a600850600054015660015b600255",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x04",
+                    "0x02" : "0x23"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6023600a600850600054015660015b600255",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x04"
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/JDfromStorageDynamicJump0_withoutJumpdest.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/JDfromStorageDynamicJump0_withoutJumpdest.json
new file mode 100644
index 0000000000000000000000000000000000000000..7fcf7de8c50a8a15e21bfff1d9a60c813cd8c11d
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/JDfromStorageDynamicJump0_withoutJumpdest.json
@@ -0,0 +1,38 @@
+{
+    "JDfromStorageDynamicJump0_withoutJumpdest" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/JDfromStorageDynamicJump0_withoutJumpdestFiller.json",
+            "sourceHash" : "696ced07844f15bee009a7c294048b5bf531923787279c19bf1c3150a46bf0ff"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x02",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6023600760005401566001600255",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6023600760005401566001600255",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x04"
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/JDfromStorageDynamicJump1.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/JDfromStorageDynamicJump1.json
new file mode 100644
index 0000000000000000000000000000000000000000..1d1f0313f5ca6ac2fcc8b7cf160575b9b5764f7c
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/JDfromStorageDynamicJump1.json
@@ -0,0 +1,38 @@
+{
+    "JDfromStorageDynamicJump1" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/JDfromStorageDynamicJump1Filler.json",
+            "sourceHash" : "bf061c0eb83d11c310f7ec309e56c3629f715727b41cc0e0772991060404cfc9"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x02",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x620fffff620fffff016000540156",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x620fffff620fffff016000540156",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x04"
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/JDfromStorageDynamicJumpInsidePushWithJumpDest.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/JDfromStorageDynamicJumpInsidePushWithJumpDest.json
new file mode 100644
index 0000000000000000000000000000000000000000..7c86c9d6a69573bc9cf222971f80b897d704cc27
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/JDfromStorageDynamicJumpInsidePushWithJumpDest.json
@@ -0,0 +1,38 @@
+{
+    "JDfromStorageDynamicJumpInsidePushWithJumpDest" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/JDfromStorageDynamicJumpInsidePushWithJumpDestFiller.json",
+            "sourceHash" : "561a67bc9db1011fb26151b03adcc53b2f4f55e03292c1e98e3361250c87d38a"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x02",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60046000540156655b6001600155",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60046000540156655b6001600155",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x04"
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/JDfromStorageDynamicJumpInsidePushWithoutJumpDest.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/JDfromStorageDynamicJumpInsidePushWithoutJumpDest.json
new file mode 100644
index 0000000000000000000000000000000000000000..a9dbbc36eee6007ebb076af220d9e8779eceec32
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/JDfromStorageDynamicJumpInsidePushWithoutJumpDest.json
@@ -0,0 +1,38 @@
+{
+    "JDfromStorageDynamicJumpInsidePushWithoutJumpDest" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/JDfromStorageDynamicJumpInsidePushWithoutJumpDestFiller.json",
+            "sourceHash" : "53a491adcc7da05748ad36809954552784007b884cd960e05ebb07a2ddd0452b"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x02",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6005600054015661eeff",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6005600054015661eeff",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x04"
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/JDfromStorageDynamicJumpi0.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/JDfromStorageDynamicJumpi0.json
new file mode 100644
index 0000000000000000000000000000000000000000..6f32f33923c30e366ef6612261933f74b6330597
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/JDfromStorageDynamicJumpi0.json
@@ -0,0 +1,38 @@
+{
+    "JDfromStorageDynamicJumpi0" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/JDfromStorageDynamicJumpi0Filler.json",
+            "sourceHash" : "14e786db1b2df2c2a40be1a80c61baec311572eb481a3afd1b31fb95a3ad937d"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x02",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60236001600960005401576001600255",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60236001600960005401576001600255",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x04"
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/JDfromStorageDynamicJumpi1.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/JDfromStorageDynamicJumpi1.json
new file mode 100644
index 0000000000000000000000000000000000000000..e20bedfdca0007b66fba70e12f5f7927c9e21187
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/JDfromStorageDynamicJumpi1.json
@@ -0,0 +1,54 @@
+{
+    "JDfromStorageDynamicJumpi1" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/JDfromStorageDynamicJumpi1Filler.json",
+            "sourceHash" : "f90389bdfe2c1600f16db3b5ff8289b55a9f3d2c56dd18403c4e636440a98a9d"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x02",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60236000600960005401576001600255",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01382f",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60236000600960005401576001600255",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x04",
+                    "0x02" : "0x01"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60236000600960005401576001600255",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x04"
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/JDfromStorageDynamicJumpi1_jumpdest.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/JDfromStorageDynamicJumpi1_jumpdest.json
new file mode 100644
index 0000000000000000000000000000000000000000..e7eec6f7469f3c8f9da8adace0ee79f4fa321937
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/JDfromStorageDynamicJumpi1_jumpdest.json
@@ -0,0 +1,38 @@
+{
+    "JDfromStorageDynamicJumpi1_jumpdest" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/JDfromStorageDynamicJumpi1_jumpdestFiller.json",
+            "sourceHash" : "cc7eadaee4927a2753204e40d7028ae1ed3e1ef4c9a2e8a79460a3e07f5bcafe"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x02",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60236001600a600054015760015b600255",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60236001600a600054015760015b600255",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x04"
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/JDfromStorageDynamicJumpiAfterStop.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/JDfromStorageDynamicJumpiAfterStop.json
new file mode 100644
index 0000000000000000000000000000000000000000..7c7b889a66c40f0c24644eb2a1a59313decb468a
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/JDfromStorageDynamicJumpiAfterStop.json
@@ -0,0 +1,54 @@
+{
+    "JDfromStorageDynamicJumpiAfterStop" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/JDfromStorageDynamicJumpiAfterStopFiller.json",
+            "sourceHash" : "80d903064c1050cf1a2e527b8938e610e77822d55c83cf4a07e18586baa0bec1"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x02",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6001600860005401570060015b6002600355",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013831",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6001600860005401570060015b6002600355",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x04",
+                    "0x03" : "0x02"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6001600860005401570060015b6002600355",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x04"
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/JDfromStorageDynamicJumpiOutsideBoundary.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/JDfromStorageDynamicJumpiOutsideBoundary.json
new file mode 100644
index 0000000000000000000000000000000000000000..0b13b7909ee62d578fc40f622860df64c9b37ea0
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/JDfromStorageDynamicJumpiOutsideBoundary.json
@@ -0,0 +1,38 @@
+{
+    "JDfromStorageDynamicJumpiOutsideBoundary" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/JDfromStorageDynamicJumpiOutsideBoundaryFiller.json",
+            "sourceHash" : "3c7f35eb2fe3c2ed05679b25f89e81e50fa959c8a665cf4545552f75a3b7140b"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x02",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60017ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff060005401576002600355",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60017ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff060005401576002600355",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x04"
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/JDfromStorageDynamicJumpifInsidePushWithJumpDest.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/JDfromStorageDynamicJumpifInsidePushWithJumpDest.json
new file mode 100644
index 0000000000000000000000000000000000000000..1571718b582fa834e2d18e9cfe446b6ee8cb0254
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/JDfromStorageDynamicJumpifInsidePushWithJumpDest.json
@@ -0,0 +1,38 @@
+{
+    "JDfromStorageDynamicJumpifInsidePushWithJumpDest" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/JDfromStorageDynamicJumpifInsidePushWithJumpDestFiller.json",
+            "sourceHash" : "f15ca2a706c969bb0f9f4b7101efd666eebae5520f893a586a7a529b0dc7d4d8"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x02",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x600160066000540157655b6001600155",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600160066000540157655b6001600155",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x04"
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/JDfromStorageDynamicJumpifInsidePushWithoutJumpDest.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/JDfromStorageDynamicJumpifInsidePushWithoutJumpDest.json
new file mode 100644
index 0000000000000000000000000000000000000000..63875783b58581f2fb744a9c4ded816471e2be5a
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/JDfromStorageDynamicJumpifInsidePushWithoutJumpDest.json
@@ -0,0 +1,38 @@
+{
+    "JDfromStorageDynamicJumpifInsidePushWithoutJumpDest" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/JDfromStorageDynamicJumpifInsidePushWithoutJumpDestFiller.json",
+            "sourceHash" : "561fed985eda1bbc4448ad363f6fa69a1d1b503d9d7e0017bcd49aaaf916f333"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x02",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60016007600054015761eeff",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60016007600054015761eeff",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x04"
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/bad_indirect_jump1.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/bad_indirect_jump1.json
new file mode 100644
index 0000000000000000000000000000000000000000..85da085e1febd08b26b82a7d9d58497992968fed
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/bad_indirect_jump1.json
@@ -0,0 +1,37 @@
+{
+    "bad_indirect_jump1" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/bad_indirect_jump1Filler.json",
+            "sourceHash" : "15744a7158d6982822dc8a0c272c329f8dfdf93810e8f2f3f468a56db9bd2d90"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x601b602502565b",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x601b602502565b",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/bad_indirect_jump2.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/bad_indirect_jump2.json
new file mode 100644
index 0000000000000000000000000000000000000000..2618fdbb633c1be44c693f1606a4c20605f2a54d
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/bad_indirect_jump2.json
@@ -0,0 +1,37 @@
+{
+    "bad_indirect_jump2" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/bad_indirect_jump2Filler.json",
+            "sourceHash" : "6dd2730ab6f27b43eead1633f104f5d60d6a98fa7c81d5a8ba0d2f6434706813"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60016003600302576000600056",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60016003600302576000600056",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/byte1.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/byte1.json
new file mode 100644
index 0000000000000000000000000000000000000000..cfa52995ff48513ef01d37a38753eb09d30e31d6
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/byte1.json
@@ -0,0 +1,51 @@
+{
+    "byte1" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/byte1Filler.json",
+            "sourceHash" : "4bbf3058007fbacf83926bd908a1f886cb4403aa10a95030f2da18e1ad68707b"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x7f112233445566778899001122334455667788990011223344556677889900aabb60001a7f112233445566778899001122334455667788990011223344556677889900aabb60011a7f112233445566778899001122334455667788990011223344556677889900aabb60021a7f112233445566778899001122334455667788990011223344556677889900aabb60031a7f112233445566778899001122334455667788990011223344556677889900aabb60041a7f112233445566778899001122334455667788990011223344556677889900aabb60051a7f112233445566778899001122334455667788990011223344556677889900aabb60061a7f112233445566778899001122334455667788990011223344556677889900aabb60071a7f112233445566778899001122334455667788990011223344556677889900aabb60081a7f112233445566778899001122334455667788990011223344556677889900aabb60091a7f112233445566778899001122334455667788990011223344556677889900aabb600a1a7f112233445566778899001122334455667788990011223344556677889900aabb600b1a7f112233445566778899001122334455667788990011223344556677889900aabb600c1a7f112233445566778899001122334455667788990011223344556677889900aabb600d1a7f112233445566778899001122334455667788990011223344556677889900aabb600e1a7f112233445566778899001122334455667788990011223344556677889900aabb600f1a7f112233445566778899001122334455667788990011223344556677889900aabb60101a7f112233445566778899001122334455667788990011223344556677889900aabb60111a7f112233445566778899001122334455667788990011223344556677889900aabb60121a7f112233445566778899001122334455667788990011223344556677889900aabb60131a7f112233445566778899001122334455667788990011223344556677889900aabb60141a7f112233445566778899001122334455667788990011223344556677889900aabb60151a7f112233445566778899001122334455667788990011223344556677889900aabb60161a7f112233445566778899001122334455667788990011223344556677889900aabb60171a7f112233445566778899001122334455667788990011223344556677889900aabb60181a7f112233445566778899001122334455667788990011223344556677889900aabb60191a7f112233445566778899001122334455667788990011223344556677889900aabb601a1a7f112233445566778899001122334455667788990011223344556677889900aabb601b1a7f112233445566778899001122334455667788990011223344556677889900aabb601c1a7f112233445566778899001122334455667788990011223344556677889900aabb601d1a7f112233445566778899001122334455667788990011223344556677889900aabb601e1a7f112233445566778899001122334455667788990011223344556677889900aabb601f1a7f112233445566778899001122334455667788990011223344556677889900aabb60201a7f112233445566778899001122334455667788990011223344556677889900aabb6107de1a6000600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x0171e0",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x7f112233445566778899001122334455667788990011223344556677889900aabb60001a7f112233445566778899001122334455667788990011223344556677889900aabb60011a7f112233445566778899001122334455667788990011223344556677889900aabb60021a7f112233445566778899001122334455667788990011223344556677889900aabb60031a7f112233445566778899001122334455667788990011223344556677889900aabb60041a7f112233445566778899001122334455667788990011223344556677889900aabb60051a7f112233445566778899001122334455667788990011223344556677889900aabb60061a7f112233445566778899001122334455667788990011223344556677889900aabb60071a7f112233445566778899001122334455667788990011223344556677889900aabb60081a7f112233445566778899001122334455667788990011223344556677889900aabb60091a7f112233445566778899001122334455667788990011223344556677889900aabb600a1a7f112233445566778899001122334455667788990011223344556677889900aabb600b1a7f112233445566778899001122334455667788990011223344556677889900aabb600c1a7f112233445566778899001122334455667788990011223344556677889900aabb600d1a7f112233445566778899001122334455667788990011223344556677889900aabb600e1a7f112233445566778899001122334455667788990011223344556677889900aabb600f1a7f112233445566778899001122334455667788990011223344556677889900aabb60101a7f112233445566778899001122334455667788990011223344556677889900aabb60111a7f112233445566778899001122334455667788990011223344556677889900aabb60121a7f112233445566778899001122334455667788990011223344556677889900aabb60131a7f112233445566778899001122334455667788990011223344556677889900aabb60141a7f112233445566778899001122334455667788990011223344556677889900aabb60151a7f112233445566778899001122334455667788990011223344556677889900aabb60161a7f112233445566778899001122334455667788990011223344556677889900aabb60171a7f112233445566778899001122334455667788990011223344556677889900aabb60181a7f112233445566778899001122334455667788990011223344556677889900aabb60191a7f112233445566778899001122334455667788990011223344556677889900aabb601a1a7f112233445566778899001122334455667788990011223344556677889900aabb601b1a7f112233445566778899001122334455667788990011223344556677889900aabb601c1a7f112233445566778899001122334455667788990011223344556677889900aabb601d1a7f112233445566778899001122334455667788990011223344556677889900aabb601e1a7f112233445566778899001122334455667788990011223344556677889900aabb601f1a7f112233445566778899001122334455667788990011223344556677889900aabb60201a7f112233445566778899001122334455667788990011223344556677889900aabb6107de1a6000600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x7f112233445566778899001122334455667788990011223344556677889900aabb60001a7f112233445566778899001122334455667788990011223344556677889900aabb60011a7f112233445566778899001122334455667788990011223344556677889900aabb60021a7f112233445566778899001122334455667788990011223344556677889900aabb60031a7f112233445566778899001122334455667788990011223344556677889900aabb60041a7f112233445566778899001122334455667788990011223344556677889900aabb60051a7f112233445566778899001122334455667788990011223344556677889900aabb60061a7f112233445566778899001122334455667788990011223344556677889900aabb60071a7f112233445566778899001122334455667788990011223344556677889900aabb60081a7f112233445566778899001122334455667788990011223344556677889900aabb60091a7f112233445566778899001122334455667788990011223344556677889900aabb600a1a7f112233445566778899001122334455667788990011223344556677889900aabb600b1a7f112233445566778899001122334455667788990011223344556677889900aabb600c1a7f112233445566778899001122334455667788990011223344556677889900aabb600d1a7f112233445566778899001122334455667788990011223344556677889900aabb600e1a7f112233445566778899001122334455667788990011223344556677889900aabb600f1a7f112233445566778899001122334455667788990011223344556677889900aabb60101a7f112233445566778899001122334455667788990011223344556677889900aabb60111a7f112233445566778899001122334455667788990011223344556677889900aabb60121a7f112233445566778899001122334455667788990011223344556677889900aabb60131a7f112233445566778899001122334455667788990011223344556677889900aabb60141a7f112233445566778899001122334455667788990011223344556677889900aabb60151a7f112233445566778899001122334455667788990011223344556677889900aabb60161a7f112233445566778899001122334455667788990011223344556677889900aabb60171a7f112233445566778899001122334455667788990011223344556677889900aabb60181a7f112233445566778899001122334455667788990011223344556677889900aabb60191a7f112233445566778899001122334455667788990011223344556677889900aabb601a1a7f112233445566778899001122334455667788990011223344556677889900aabb601b1a7f112233445566778899001122334455667788990011223344556677889900aabb601c1a7f112233445566778899001122334455667788990011223344556677889900aabb601d1a7f112233445566778899001122334455667788990011223344556677889900aabb601e1a7f112233445566778899001122334455667788990011223344556677889900aabb601f1a7f112233445566778899001122334455667788990011223344556677889900aabb60201a7f112233445566778899001122334455667788990011223344556677889900aabb6107de1a6000600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/calldatacopyMemExp.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/calldatacopyMemExp.json
new file mode 100644
index 0000000000000000000000000000000000000000..b93a6f4d94d229b0c48fe9c2862b0d6009a2f827
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/calldatacopyMemExp.json
@@ -0,0 +1,37 @@
+{
+    "calldatacopyMemExp" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/calldatacopyMemExpFiller.json",
+            "sourceHash" : "fcf33988ecf7e66eae80382111d1128eb302e201be169ca20b306eac49231142"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x01f4153d80",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60ff60ff630fffffff630fffffff37",
+            "data" : "0x",
+            "gas" : "0x01f4153d80",
+            "gasPrice" : "0x01",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60ff60ff630fffffff630fffffff37",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/codecopyMemExp.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/codecopyMemExp.json
new file mode 100644
index 0000000000000000000000000000000000000000..67f31147e9342d053a5454e90a833deed68119a1
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/codecopyMemExp.json
@@ -0,0 +1,37 @@
+{
+    "codecopyMemExp" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/codecopyMemExpFiller.json",
+            "sourceHash" : "baf738ce30cb457d16aa2f71f866ce00ddb998371757f2c6a30a5d1ca3a9e135"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x01f4153d80",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60ff60ff630fffffff630fffffff39",
+            "data" : "0x",
+            "gas" : "0x01f4153d80",
+            "gasPrice" : "0x01",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60ff60ff630fffffff630fffffff39",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/deadCode_1.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/deadCode_1.json
new file mode 100644
index 0000000000000000000000000000000000000000..808ff7a870e50ee74e04d5dea557ace9ea671ce8
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/deadCode_1.json
@@ -0,0 +1,51 @@
+{
+    "deadCode_1" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/deadCode_1Filler.json",
+            "sourceHash" : "110e1eaddae6dda0225d4f4b430da33494473d9ec10d765e7a5324d3e1ab26c8"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6001600053596000f300000000000000005b00",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01868f",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x0100000000000000000000000000000000000000000000000000000000000000",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6001600053596000f300000000000000005b00",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6001600053596000f300000000000000005b00",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/dupAt51becameMload.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/dupAt51becameMload.json
new file mode 100644
index 0000000000000000000000000000000000000000..8d32a56d83ea174d75b049961ad3de2c6545bfd2
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/dupAt51becameMload.json
@@ -0,0 +1,52 @@
+{
+    "dupAt51becameMload" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/dupAt51becameMloadFiller.json",
+            "sourceHash" : "28d2da26fb721ff16c42b1d398e7410f85560c3373bcc0a424ee1d025bf25ba6"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x600260035155",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013871",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600260035155",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x02"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600260035155",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/for_loop1.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/for_loop1.json
new file mode 100644
index 0000000000000000000000000000000000000000..f6601559d4e6fabd81afce91c08a28c729d47191
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/for_loop1.json
@@ -0,0 +1,51 @@
+{
+    "for_loop1" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/for_loop1Filler.json",
+            "sourceHash" : "5e12e078316618a30275a5c133a960d17d242cc3726855a805c112193d39a59e"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x600a6080525b6000608051111560265760a0516080510160a0526001608051036080526005565b",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x018351",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600a6080525b6000608051111560265760a0516080510160a0526001608051036080526005565b",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600a6080525b6000608051111560265760a0516080510160a0526001608051036080526005565b",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/for_loop2.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/for_loop2.json
new file mode 100644
index 0000000000000000000000000000000000000000..dbd6907ad0123c9a4b4d6727702843461dd0592e
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/for_loop2.json
@@ -0,0 +1,51 @@
+{
+    "for_loop2" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/for_loop2Filler.json",
+            "sourceHash" : "2764d5106d8f416d7f03ab65334b580f66eff1a74fa4c3fc4b2488dbb621d3c1"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60006080525b600a608051101560265760a0516080510160a0526001608051016080526005565b",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x018351",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60006080525b600a608051101560265760a0516080510160a0526001608051016080526005565b",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60006080525b600a608051101560265760a0516080510160a0526001608051016080526005565b",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/gas0.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/gas0.json
new file mode 100644
index 0000000000000000000000000000000000000000..f8f914a8524a920a5402b3e0f86599105f566ded
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/gas0.json
@@ -0,0 +1,52 @@
+{
+    "gas0" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/gas0Filler.json",
+            "sourceHash" : "344499133ac967decfa379dd507e6df8c81e13b014db2676d943cdd2ed3c09c6"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x64ffffffffff60005261eeee605a525a600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01385d",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x64ffffffffff60005261eeee605a525a600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x018680"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x64ffffffffff60005261eeee605a525a600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/gas1.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/gas1.json
new file mode 100644
index 0000000000000000000000000000000000000000..cb828c9ee172811db26d04f109b0a49312fe0c61
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/gas1.json
@@ -0,0 +1,52 @@
+{
+    "gas1" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/gas1Filler.json",
+            "sourceHash" : "158673d626e8f5b04cbad00e6bcf8bce2a081b61bf98ca0ad11b78e52921444a"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x5a600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01387b",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x5a600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x01869e"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x5a600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/gasOverFlow.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/gasOverFlow.json
new file mode 100644
index 0000000000000000000000000000000000000000..bcfb11d3c74baa32d9ee00a4ac2e32edcb1f3e3e
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/gasOverFlow.json
@@ -0,0 +1,37 @@
+{
+    "gasOverFlow" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/gasOverFlowFiller.json",
+            "sourceHash" : "01dd61c063b45f54e62e912f6711a3c04bcaba16f40890da37774adedcf5d201"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60035b600190038060025768010000000000000016565b63badf000d60115500",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60035b600190038060025768010000000000000016565b63badf000d60115500",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/indirect_jump1.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/indirect_jump1.json
new file mode 100644
index 0000000000000000000000000000000000000000..31c1aebfdf32c148bbba41f7cbd53d48ee2998da
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/indirect_jump1.json
@@ -0,0 +1,51 @@
+{
+    "indirect_jump1" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/indirect_jump1Filler.json",
+            "sourceHash" : "33d6b4fa4d999fa02f0b584e925eef1e0b1f55bfe6bd8ba3bd0339ab20739a34"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x600460030156005b6001600052596000f3",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01867d",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x0000000000000000000000000000000000000000000000000000000000000001",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600460030156005b6001600052596000f3",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600460030156005b6001600052596000f3",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/indirect_jump2.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/indirect_jump2.json
new file mode 100644
index 0000000000000000000000000000000000000000..2b6046163f361c64f7e7f86a9849a0d3418f59cc
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/indirect_jump2.json
@@ -0,0 +1,51 @@
+{
+    "indirect_jump2" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/indirect_jump2Filler.json",
+            "sourceHash" : "74d76db6a1761e44af7dea37c2ed941aac2add09cff11950033033cbe6f83248"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x600860060156005b6001600052005b6002600052596000f3",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01867d",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x0000000000000000000000000000000000000000000000000000000000000002",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600860060156005b6001600052005b6002600052596000f3",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600860060156005b6001600052005b6002600052596000f3",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/indirect_jump3.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/indirect_jump3.json
new file mode 100644
index 0000000000000000000000000000000000000000..a8bba4d1cb992f6ae7c26621f8a4a50aaf1919d4
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/indirect_jump3.json
@@ -0,0 +1,51 @@
+{
+    "indirect_jump3" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/indirect_jump3Filler.json",
+            "sourceHash" : "1ca405a29132ed02b16a4e4f1d869eb73904f23759d971c3a7e287260fa13f7b"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6001600460050157005b6001600052596000f3",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x018678",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x0000000000000000000000000000000000000000000000000000000000000001",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6001600460050157005b6001600052596000f3",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6001600460050157005b6001600052596000f3",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/indirect_jump4.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/indirect_jump4.json
new file mode 100644
index 0000000000000000000000000000000000000000..88012cb23d927ff01bb81cb231d0aec205b92675
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/indirect_jump4.json
@@ -0,0 +1,51 @@
+{
+    "indirect_jump4" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/indirect_jump4Filler.json",
+            "sourceHash" : "bec771ce98d114d7dacd0f1f33426b85e6092d65bfd73945ea07831737a0d310"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60006007600501576001600052005b",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01867e",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60006007600501576001600052005b",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60006007600501576001600052005b",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jump0_AfterJumpdest.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jump0_AfterJumpdest.json
new file mode 100644
index 0000000000000000000000000000000000000000..9cf74c89f5cf0237c3583ef60a1f4e4a61c90cd1
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jump0_AfterJumpdest.json
@@ -0,0 +1,37 @@
+{
+    "jump0_AfterJumpdest" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/jump0_AfterJumpdestFiller.json",
+            "sourceHash" : "8e933f0185d188f6eeb002d4ac8dace70a34a196e4c59932957eaac4cef27849"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x602360085660015b600255",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x602360085660015b600255",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jump0_AfterJumpdest3.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jump0_AfterJumpdest3.json
new file mode 100644
index 0000000000000000000000000000000000000000..b7e9376a4069d2ef28d1fb7d920f8f3e6908ba2c
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jump0_AfterJumpdest3.json
@@ -0,0 +1,37 @@
+{
+    "jump0_AfterJumpdest3" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/jump0_AfterJumpdest3Filler.json",
+            "sourceHash" : "dc15eff9141416358f3f9960ef23b930d70b7cb8d3e13d7d5b6832954605d062"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6023600b6008505660015b600255",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6023600b6008505660015b600255",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jump0_foreverOutOfGas.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jump0_foreverOutOfGas.json
new file mode 100644
index 0000000000000000000000000000000000000000..54402a263e1c477d4070fe27ba69a5fc7d420d30
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jump0_foreverOutOfGas.json
@@ -0,0 +1,37 @@
+{
+    "jump0_foreverOutOfGas" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/jump0_foreverOutOfGasFiller.json",
+            "sourceHash" : "06656a40346ccda59a2d1852d9bb59447d34fb9eb80706e378c5a067e337a080"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x5b600056",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x5b600056",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jump0_jumpdest0.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jump0_jumpdest0.json
new file mode 100644
index 0000000000000000000000000000000000000000..b17ec7319aaa3d3f3b11a97cf5313032efd40ab9
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jump0_jumpdest0.json
@@ -0,0 +1,52 @@
+{
+    "jump0_jumpdest0" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/jump0_jumpdest0Filler.json",
+            "sourceHash" : "4bf0cfbeda98acdd577972c6a7abcd20f60ab1b48328ce3f804e3cefa7c77bdb"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x602360075660015b600255",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01386e",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x602360075660015b600255",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x02" : "0x23"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x602360075660015b600255",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jump0_jumpdest2.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jump0_jumpdest2.json
new file mode 100644
index 0000000000000000000000000000000000000000..3c482fd5c841d547d112a47c3458662307a3d516
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jump0_jumpdest2.json
@@ -0,0 +1,52 @@
+{
+    "jump0_jumpdest2" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/jump0_jumpdest2Filler.json",
+            "sourceHash" : "3aba479e0b0de29b2fac29ac62deb3e37d9fff0a79ed3a1953a7afa7e19b17da"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6023600a6008505660015b600255",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013869",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6023600a6008505660015b600255",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x02" : "0x23"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6023600a6008505660015b600255",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jump0_outOfBoundary.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jump0_outOfBoundary.json
new file mode 100644
index 0000000000000000000000000000000000000000..aa19f171a863287fab3aa4aeb40b824f6e04f47d
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jump0_outOfBoundary.json
@@ -0,0 +1,37 @@
+{
+    "jump0_outOfBoundary" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/jump0_outOfBoundaryFiller.json",
+            "sourceHash" : "9442ba4b2e4625b3ba5d7a3c43a5c1bcbb0f71fb8977d9cb291a58f956e5d014"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60236007566001600255",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60236007566001600255",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jump0_withoutJumpdest.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jump0_withoutJumpdest.json
new file mode 100644
index 0000000000000000000000000000000000000000..29b82335c1a7e50fb14706fe92b435d8613eaf00
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jump0_withoutJumpdest.json
@@ -0,0 +1,37 @@
+{
+    "jump0_withoutJumpdest" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/jump0_withoutJumpdestFiller.json",
+            "sourceHash" : "4023b9b32fabb7baeb154e319422cc24e852c858eb124713508a241df86f3969"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60236007566001600255",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60236007566001600255",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jump1.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jump1.json
new file mode 100644
index 0000000000000000000000000000000000000000..1d5fd1c2998f6cd8697f79b2b28c01f19ccdb0e9
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jump1.json
@@ -0,0 +1,37 @@
+{
+    "jump1" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/jump1Filler.json",
+            "sourceHash" : "c86900065dc3ca2743c247f2c7f305795833184ab64acf0c6911a899533ab628"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x620fffff620fffff0156",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x620fffff620fffff0156",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpAfterStop.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpAfterStop.json
new file mode 100644
index 0000000000000000000000000000000000000000..ce4cc7e45965820c7bb89b6f58fe2c207ca0fa98
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpAfterStop.json
@@ -0,0 +1,52 @@
+{
+    "jumpAfterStop" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/jumpAfterStopFiller.json",
+            "sourceHash" : "1527b83fd9a930436902b171302c40812a33a035bf148e5c40f362e811b1ad54"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6006560060015b6002600355",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01386e",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6006560060015b6002600355",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x03" : "0x02"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6006560060015b6002600355",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpDynamicJumpSameDest.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpDynamicJumpSameDest.json
new file mode 100644
index 0000000000000000000000000000000000000000..b7352e40637c3484908c5397dc09f2fab6670621
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpDynamicJumpSameDest.json
@@ -0,0 +1,51 @@
+{
+    "jumpDynamicJumpSameDest" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/jumpDynamicJumpSameDestFiller.json",
+            "sourceHash" : "c1d46387eefa48a995ad56844ced0803c7e2441369d569c7669933b1ebecc2c8"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6002600401565b600360005260206000f3600656",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01867c",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x0000000000000000000000000000000000000000000000000000000000000003",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6002600401565b600360005260206000f3600656",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6002600401565b600360005260206000f3600656",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpHigh.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpHigh.json
new file mode 100644
index 0000000000000000000000000000000000000000..d8c7e94235a558baec37e6909953fe03b00c5439
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpHigh.json
@@ -0,0 +1,37 @@
+{
+    "jumpHigh" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/jumpHighFiller.json",
+            "sourceHash" : "a7725bef6c1ff691ae5ad3b73c3b44a6d16f9c9b1c0e57671d7ff59fe9ac9800"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x630fffffff565b5b6001600155",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x630fffffff565b5b6001600155",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpInsidePushWithJumpDest.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpInsidePushWithJumpDest.json
new file mode 100644
index 0000000000000000000000000000000000000000..f873da6821890d58c3c7603a6741913f67709d6b
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpInsidePushWithJumpDest.json
@@ -0,0 +1,37 @@
+{
+    "jumpInsidePushWithJumpDest" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/jumpInsidePushWithJumpDestFiller.json",
+            "sourceHash" : "d200f4e72a16a6960609912d97797b467afb3a98c1eef6f9eed2006c4111a7f3"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x600456655b6001600155",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600456655b6001600155",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpInsidePushWithoutJumpDest.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpInsidePushWithoutJumpDest.json
new file mode 100644
index 0000000000000000000000000000000000000000..e262064e7667f91c72b25fccaa466e3ab197273e
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpInsidePushWithoutJumpDest.json
@@ -0,0 +1,37 @@
+{
+    "jumpInsidePushWithoutJumpDest" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/jumpInsidePushWithoutJumpDestFiller.json",
+            "sourceHash" : "451d199b9c77c3a3297bb20ba2a01c238e984283e3690b22c9614121c878d8ec"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60055661eeff",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60055661eeff",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpOntoJump.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpOntoJump.json
new file mode 100644
index 0000000000000000000000000000000000000000..fa8350417a7d3fd37cc4987b4b5976c05909e764
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpOntoJump.json
@@ -0,0 +1,37 @@
+{
+    "jumpOntoJump" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/jumpOntoJumpFiller.json",
+            "sourceHash" : "b7af74ccb70e4242810a2f47181f0c95ee1b9558385cff3a33896f29c7775d7e"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x565b600056",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x565b600056",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpTo1InstructionafterJump.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpTo1InstructionafterJump.json
new file mode 100644
index 0000000000000000000000000000000000000000..91933e1c94732dc1b9e0c598caf1503a24100998
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpTo1InstructionafterJump.json
@@ -0,0 +1,37 @@
+{
+    "jumpTo1InstructionafterJump" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/jumpTo1InstructionafterJumpFiller.json",
+            "sourceHash" : "88eb8cc46a28df3e813fc9d859aaa7c10bd7246272ed7af7c7e119e18e7c6592"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6003565b6001600055",
+            "data" : "0x",
+            "gas" : "0x2710",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x0de0b6b3a7640000",
+                "code" : "0x6003565b6001600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpTo1InstructionafterJump_jumpdestFirstInstruction.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpTo1InstructionafterJump_jumpdestFirstInstruction.json
new file mode 100644
index 0000000000000000000000000000000000000000..99aec17245d0fd829f75ddf66a046628854a8191
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpTo1InstructionafterJump_jumpdestFirstInstruction.json
@@ -0,0 +1,37 @@
+{
+    "jumpTo1InstructionafterJump_jumpdestFirstInstruction" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/jumpTo1InstructionafterJump_jumpdestFirstInstructionFiller.json",
+            "sourceHash" : "1e05b7560aba357248c8fdddd62e9b8dfb943cc2c3bb9569c5d44c2322899ff4"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x5b6003565b6001600055",
+            "data" : "0x",
+            "gas" : "0x2710",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x0de0b6b3a7640000",
+                "code" : "0x5b6003565b6001600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpTo1InstructionafterJump_noJumpDest.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpTo1InstructionafterJump_noJumpDest.json
new file mode 100644
index 0000000000000000000000000000000000000000..125f422cac45f8ee0e9b03b901558fc3a6969ebb
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpTo1InstructionafterJump_noJumpDest.json
@@ -0,0 +1,37 @@
+{
+    "jumpTo1InstructionafterJump_noJumpDest" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/jumpTo1InstructionafterJump_noJumpDestFiller.json",
+            "sourceHash" : "91502d2804896fda92630c93005fc5c0e26591bac75b7fff576409271f81cdb6"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6003566001600055",
+            "data" : "0x",
+            "gas" : "0x2710",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x0de0b6b3a7640000",
+                "code" : "0x6003566001600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpToUint64maxPlus1.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpToUint64maxPlus1.json
new file mode 100644
index 0000000000000000000000000000000000000000..3e736a8fafe767eb2ea92f68842ef2aa4e476b42
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpToUint64maxPlus1.json
@@ -0,0 +1,37 @@
+{
+    "jumpToUint64maxPlus1" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/jumpToUint64maxPlus1Filler.json",
+            "sourceHash" : "17b7f86769171233d32af7b23fc33ba8e71f03a64f0625aadfe65a696dff36a6"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6801000000000000000b565b5b6001600155",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6801000000000000000b565b5b6001600155",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpToUintmaxPlus1.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpToUintmaxPlus1.json
new file mode 100644
index 0000000000000000000000000000000000000000..1d8b054e0d9e9de07d5ed8c2a8e437e8bbf15847
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpToUintmaxPlus1.json
@@ -0,0 +1,37 @@
+{
+    "jumpToUintmaxPlus1" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/jumpToUintmaxPlus1Filler.json",
+            "sourceHash" : "6897e3a469257a7905bf719e9ae36ac49f830eab122209a9c2e89c879cdaa2d7"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x640100000007565b5b6001600155",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x640100000007565b5b6001600155",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpdestBigList.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpdestBigList.json
new file mode 100644
index 0000000000000000000000000000000000000000..763426901d497f26056cb7b21c67c1dc30735f22
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpdestBigList.json
@@ -0,0 +1,51 @@
+{
+    "jumpdestBigList" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/jumpdestBigListFiller.json",
+            "sourceHash" : "6e4f2dfe68bb0ae1bdce8e6385b098b9984176b12f76273d1a1f7e34f46d85db"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6009565b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b",
+            "data" : "0x",
+            "gas" : "0x05f5e100",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x05f5e0a1",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6009565b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6009565b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpi0.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpi0.json
new file mode 100644
index 0000000000000000000000000000000000000000..60ebc100daf7638a2c061d3387fc114be93ed906
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpi0.json
@@ -0,0 +1,37 @@
+{
+    "jumpi0" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/jumpi0Filler.json",
+            "sourceHash" : "86fb0cc0becb3234b287df55e90da9a860eff30714976e3395b25ee2e2b47c48"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x602360016009576001600255",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x602360016009576001600255",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpi1.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpi1.json
new file mode 100644
index 0000000000000000000000000000000000000000..05d82562bddea05a83ab87067b3cdf463036a8bf
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpi1.json
@@ -0,0 +1,52 @@
+{
+    "jumpi1" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/jumpi1Filler.json",
+            "sourceHash" : "27f04b183d459deb05bc15b1281b0e300307950da1968f669bd8cbec2b200044"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x602360006009576001600255",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013867",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x602360006009576001600255",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x02" : "0x01"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x602360006009576001600255",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpi1_jumpdest.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpi1_jumpdest.json
new file mode 100644
index 0000000000000000000000000000000000000000..b3d7e40dc7f9bd20a9cf66bc9987705af12116ac
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpi1_jumpdest.json
@@ -0,0 +1,37 @@
+{
+    "jumpi1_jumpdest" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/jumpi1_jumpdestFiller.json",
+            "sourceHash" : "ad83573b03f45ffbef8bfcea78a8cb61b1c793b36475000cf9222dea41696717"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60236001600a5760015b600255",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60236001600a5760015b600255",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpiAfterStop.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpiAfterStop.json
new file mode 100644
index 0000000000000000000000000000000000000000..2527229fdd7bf846a24a990b50eb665bfc688467
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpiAfterStop.json
@@ -0,0 +1,52 @@
+{
+    "jumpiAfterStop" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/jumpiAfterStopFiller.json",
+            "sourceHash" : "ec2d355d1d27a71fadd654c9a7b8a7b90bc68dce10416448f803d452ef1d474d"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60016008570060015b6002600355",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013869",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60016008570060015b6002600355",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x03" : "0x02"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60016008570060015b6002600355",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpiOutsideBoundary.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpiOutsideBoundary.json
new file mode 100644
index 0000000000000000000000000000000000000000..2cc9c069c2260e06904dc2aa7f772cf80c137c7d
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpiOutsideBoundary.json
@@ -0,0 +1,37 @@
+{
+    "jumpiOutsideBoundary" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/jumpiOutsideBoundaryFiller.json",
+            "sourceHash" : "7d536d76f1c00c063b374bdcd155229427e5fe4867ae5ac41d42516c88ebff0d"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff576002600355",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff576002600355",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpiToUint64maxPlus1.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpiToUint64maxPlus1.json
new file mode 100644
index 0000000000000000000000000000000000000000..2362c3adac1ea4b70b5f6fa41d9453a58c547e15
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpiToUint64maxPlus1.json
@@ -0,0 +1,37 @@
+{
+    "jumpiToUint64maxPlus1" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/jumpiToUint64maxPlus1Filler.json",
+            "sourceHash" : "43b7965f24cac2b1b88fb4781bccd2cbcdcc1569812c2c9e28ebded71ebd172e"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60016801000000000000000d575b5b6001600155",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60016801000000000000000d575b5b6001600155",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpiToUintmaxPlus1.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpiToUintmaxPlus1.json
new file mode 100644
index 0000000000000000000000000000000000000000..08e3343efcfc280f771f16522857b334994da64f
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpiToUintmaxPlus1.json
@@ -0,0 +1,37 @@
+{
+    "jumpiToUintmaxPlus1" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/jumpiToUintmaxPlus1Filler.json",
+            "sourceHash" : "58d51b8cb46082033f726f1bca929fb1713048436d52029e31f5bfcaaaded691"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6001640100000009575b5b6001600155",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6001640100000009575b5b6001600155",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpi_at_the_end.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpi_at_the_end.json
new file mode 100644
index 0000000000000000000000000000000000000000..a39d7d0a0707992bf43a39a1267cb976fc11da21
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpi_at_the_end.json
@@ -0,0 +1,51 @@
+{
+    "jumpi_at_the_end" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/jumpi_at_the_endFiller.json",
+            "sourceHash" : "db58f5762f6dccaf9a4daa5053fe18bc36fc597c379acbbb8dc7d41897e0fd1b"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x989680",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x600a6000525b6000516001900380600052600557",
+            "data" : "0x",
+            "gas" : "0x03e8",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x0260",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600a6000525b6000516001900380600052600557",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600a6000525b6000516001900380600052600557",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpifInsidePushWithJumpDest.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpifInsidePushWithJumpDest.json
new file mode 100644
index 0000000000000000000000000000000000000000..6c7497d995b53608f1c7d88a2bde0f390c77a2eb
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpifInsidePushWithJumpDest.json
@@ -0,0 +1,37 @@
+{
+    "jumpifInsidePushWithJumpDest" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/jumpifInsidePushWithJumpDestFiller.json",
+            "sourceHash" : "790a546e29160af651f091890cd367d79d28b345f43847fa5d19b6a0dab087e9"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6001600657655b6001600155",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6001600657655b6001600155",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpifInsidePushWithoutJumpDest.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpifInsidePushWithoutJumpDest.json
new file mode 100644
index 0000000000000000000000000000000000000000..b689b4b2672c07406ef5e121f2b6dd5c7721b935
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpifInsidePushWithoutJumpDest.json
@@ -0,0 +1,37 @@
+{
+    "jumpifInsidePushWithoutJumpDest" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/jumpifInsidePushWithoutJumpDestFiller.json",
+            "sourceHash" : "c69048c65f19388408ec0027e2c9372b393d057d91c9e0eff2ea96f8bb59f66b"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x600160075761eeff",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600160075761eeff",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/kv1.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/kv1.json
new file mode 100644
index 0000000000000000000000000000000000000000..27d04eee0271668cf1616291f9d034d9ec43198c
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/kv1.json
@@ -0,0 +1,52 @@
+{
+    "kv1" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/kv1Filler.json",
+            "sourceHash" : "e9c18f1395a9a5e541d26c02b68f69e413953c380102c17d783cc18b5092bbf2"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x33604555602d80600f6000396000f3604554331415602c575b366080511015602b576020608051013560805135556040608051016080526009565b5b",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01385d",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x604554331415602c575b366080511015602b576020608051013560805135556040608051016080526009565b5b",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x33604555602d80600f6000396000f3604554331415602c575b366080511015602b576020608051013560805135556040608051016080526009565b5b",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x45" : "0xcd1722f3947def4cf144679da39c4c32bdc35681"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x33604555602d80600f6000396000f3604554331415602c575b366080511015602b576020608051013560805135556040608051016080526009565b5b",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/log1MemExp.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/log1MemExp.json
new file mode 100644
index 0000000000000000000000000000000000000000..ce82cb55a7ce3dd2094d4f34020d5da7ffe7f325
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/log1MemExp.json
@@ -0,0 +1,37 @@
+{
+    "log1MemExp" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/log1MemExpFiller.json",
+            "sourceHash" : "241dbcb0d33d25f1db0b51b65c38c4e3ef2f5b52c799264979423508e3fcf934"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x01f4153d80",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60ff60ff630fffffffa1",
+            "data" : "0x",
+            "gas" : "0x01f4153d80",
+            "gasPrice" : "0x01",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60ff60ff630fffffffa1",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/loop_stacklimit_1020.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/loop_stacklimit_1020.json
new file mode 100644
index 0000000000000000000000000000000000000000..225c6d0ed08c430c274b82d58667e4568fbd0b6f
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/loop_stacklimit_1020.json
@@ -0,0 +1,51 @@
+{
+    "loop_stacklimit_1020" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/loop_stacklimit_1020Filler.json",
+            "sourceHash" : "e3a67d3fc9f35b9e0db39be074d9160030b23790e568d0387f9d8f7e4190e40a"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6000345b60019003906001018180600357600052600152600059f3",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x03fc"
+        },
+        "gas" : "0xef1c",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6000345b60019003906001018180600357600052600152600059f3",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6000345b60019003906001018180600357600052600152600059f3",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/loop_stacklimit_1021.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/loop_stacklimit_1021.json
new file mode 100644
index 0000000000000000000000000000000000000000..2eaa7501626d1182af5b7e94ffec4148435d5408
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/loop_stacklimit_1021.json
@@ -0,0 +1,37 @@
+{
+    "loop_stacklimit_1021" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/loop_stacklimit_1021Filler.json",
+            "sourceHash" : "c1bb4f6ff68cafca82606ffe4fbed88358dc3b19be5e69714e96478d8571c0fc"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6000345b60019003906001018180600357600052600152600059f3",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x03fd"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6000345b60019003906001018180600357600052600152600059f3",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/memory1.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/memory1.json
new file mode 100644
index 0000000000000000000000000000000000000000..67bd976a1d7a53fe160a18ff0c18fc1d23282a6d
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/memory1.json
@@ -0,0 +1,51 @@
+{
+    "memory1" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/memory1Filler.json",
+            "sourceHash" : "4962a1d10a8792cd1ad8a08ac500002adec8cc965fd1fb4d1c45cb3e558a9de6"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x600260005360036001536000516001510160025260406000f3",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01866d",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x02030503000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600260005360036001536000516001510160025260406000f3",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600260005360036001536000516001510160025260406000f3",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/mloadError0.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/mloadError0.json
new file mode 100644
index 0000000000000000000000000000000000000000..59aa727a5a6da9c7635d2f0080b610f0d8c1bf7c
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/mloadError0.json
@@ -0,0 +1,51 @@
+{
+    "mloadError0" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/mloadError0Filler.json",
+            "sourceHash" : "27a14368a9e5b964986445d0436e67f685ab0171ea0359b9a112fdc07d98bf53"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x600051600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01730c",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600051600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600051600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/mloadError1.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/mloadError1.json
new file mode 100644
index 0000000000000000000000000000000000000000..8d9def1aba26c47680aebd69c36ab9ed863a9bde
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/mloadError1.json
@@ -0,0 +1,51 @@
+{
+    "mloadError1" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/mloadError1Filler.json",
+            "sourceHash" : "f5841cfbab0e35ad5727493bc7b6e0cd075735640637e817001de707085c2608"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6017600152600051600155",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x017300",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6017600152600051600155",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6017600152600051600155",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/mloadMemExp.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/mloadMemExp.json
new file mode 100644
index 0000000000000000000000000000000000000000..d3ed190f163cb09ebb4c813a6e9780244ef06d7e
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/mloadMemExp.json
@@ -0,0 +1,37 @@
+{
+    "mloadMemExp" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/mloadMemExpFiller.json",
+            "sourceHash" : "b12ca5b81a2d597d774f63fd3e6301a3808c7090e1b5ee00ea980c846ddadf32"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x01f4153d80",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x630fffffff51",
+            "data" : "0x",
+            "gas" : "0x800570",
+            "gasPrice" : "0x01",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x630fffffff51",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/mloadOutOfGasError2.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/mloadOutOfGasError2.json
new file mode 100644
index 0000000000000000000000000000000000000000..a1be9f40285c223401dfa804c853f76583840419
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/mloadOutOfGasError2.json
@@ -0,0 +1,37 @@
+{
+    "mloadOutOfGasError2" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/mloadOutOfGasError2Filler.json",
+            "sourceHash" : "8df8c3070849692634e4e7af44885da9c5d41df0717fd6d337aa7d5bfed56d52"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6272482551600155",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6272482551600155",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/msize0.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/msize0.json
new file mode 100644
index 0000000000000000000000000000000000000000..c36b925e41f47b18c7f11268bb2b7fa5f1db4879
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/msize0.json
@@ -0,0 +1,52 @@
+{
+    "msize0" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/msize0Filler.json",
+            "sourceHash" : "41daa7a08f4c4f0380b60446927c8a3d3f077fdd63de63ab8736353cf7c92d86"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60ff60005259600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01386f",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60ff60005259600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x20"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60ff60005259600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/msize1.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/msize1.json
new file mode 100644
index 0000000000000000000000000000000000000000..6fbbfbb877e0592ad4c40f9ee0fa69288a32dbd6
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/msize1.json
@@ -0,0 +1,52 @@
+{
+    "msize1" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/msize1Filler.json",
+            "sourceHash" : "1bc7a7187b3aa498df95faec7fa0258d950df3afb6205db0f9e2997ffb7ec512"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x64ffffffffff60005259600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01386f",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x64ffffffffff60005259600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x20"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x64ffffffffff60005259600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/msize2.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/msize2.json
new file mode 100644
index 0000000000000000000000000000000000000000..b390c6d3e0ab83312c8306edb60c92f2acd0e4ea
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/msize2.json
@@ -0,0 +1,52 @@
+{
+    "msize2" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/msize2Filler.json",
+            "sourceHash" : "7a68500c2697ce7d4e5140214c087b3f152770295239abebdae1f81695167994"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x64ffffffffff60005261eeee60205259600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013863",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x64ffffffffff60005261eeee60205259600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x40"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x64ffffffffff60005261eeee60205259600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/msize3.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/msize3.json
new file mode 100644
index 0000000000000000000000000000000000000000..010ef69eb3c132644f08cdabb88e73e44261e73b
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/msize3.json
@@ -0,0 +1,52 @@
+{
+    "msize3" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/msize3Filler.json",
+            "sourceHash" : "e5a676b6ba865c05ea6cf933a2805cb286a664d1bee6544604cc96fdd79f1be4"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x64ffffffffff60005261eeee605a5259600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01385d",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x64ffffffffff60005261eeee605a5259600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x80"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x64ffffffffff60005261eeee605a5259600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/mstore0.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/mstore0.json
new file mode 100644
index 0000000000000000000000000000000000000000..913d3d44b4ef592ff5759fc315801f202defbbe0
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/mstore0.json
@@ -0,0 +1,52 @@
+{
+    "mstore0" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/mstore0Filler.json",
+            "sourceHash" : "78e3311be5943f4a7995e11b3fe7e41fa432fae150d687201c617c70ae40f6d7"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600152600151600155",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013868",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600152600151600155",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x01" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600152600151600155",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/mstore1.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/mstore1.json
new file mode 100644
index 0000000000000000000000000000000000000000..b322f2ab0c29ddbd6d744aba049bf8078245883a
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/mstore1.json
@@ -0,0 +1,52 @@
+{
+    "mstore1" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/mstore1Filler.json",
+            "sourceHash" : "424433d76d1f8d1622fa9796c232dbd9f31ddc1231efae876f6494ee7d1ccab2"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600201600152600151600155",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013862",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600201600152600151600155",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x01" : "0x01"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600201600152600151600155",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/mstore8MemExp.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/mstore8MemExp.json
new file mode 100644
index 0000000000000000000000000000000000000000..785e247cee80c0d04d389af2006b4e2c33a38c3f
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/mstore8MemExp.json
@@ -0,0 +1,37 @@
+{
+    "mstore8MemExp" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/mstore8MemExpFiller.json",
+            "sourceHash" : "df32f3b06a7e748f5fdd93a878f7687f4f28864f8a5956d8e3a4fff7463b47f0"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x01f4153d80",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60f1630fffffff53",
+            "data" : "0x",
+            "gas" : "0x800570",
+            "gasPrice" : "0x01",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60f1630fffffff53",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/mstore8WordToBigError.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/mstore8WordToBigError.json
new file mode 100644
index 0000000000000000000000000000000000000000..69c83039fe3b6af500c7436f6f7bf951b5d7ef58
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/mstore8WordToBigError.json
@@ -0,0 +1,52 @@
+{
+    "mstore8WordToBigError" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/mstore8WordToBigErrorFiller.json",
+            "sourceHash" : "e7f6dfe7bcd73d4ee7ec71238711bd20d21eafc11b4b5e6c54ed69b2daf3c8bd"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600153600151600155",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013868",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600153600151600155",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x01" : "0xff00000000000000000000000000000000000000000000000000000000000000"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600153600151600155",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/mstore8_0.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/mstore8_0.json
new file mode 100644
index 0000000000000000000000000000000000000000..722b4b38dbdbd3b4898d26db4f182150f5226b36
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/mstore8_0.json
@@ -0,0 +1,52 @@
+{
+    "mstore8_0" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/mstore8_0Filler.json",
+            "sourceHash" : "0a5e67d6603b41a69f94c4d3dcc06da69c17c841ba0cdc8e15a5203e89d217a7"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600153600151600155",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013868",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600153600151600155",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x01" : "0xff00000000000000000000000000000000000000000000000000000000000000"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600153600151600155",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/mstore8_1.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/mstore8_1.json
new file mode 100644
index 0000000000000000000000000000000000000000..a4505525c2e68ef3ebff6748e3249e8e95cc93d8
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/mstore8_1.json
@@ -0,0 +1,52 @@
+{
+    "mstore8_1" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/mstore8_1Filler.json",
+            "sourceHash" : "85ba59a62f13c9f29b37207e79bf61c2bfb361b6b703ac5ec0f82801edd6cdec"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60ff60015360ee600253600051600155",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013862",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60ff60015360ee600253600051600155",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x01" : "0xffee0000000000000000000000000000000000000000000000000000000000"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60ff60015360ee600253600051600155",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/mstoreMemExp.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/mstoreMemExp.json
new file mode 100644
index 0000000000000000000000000000000000000000..f79ee08d5a417ad6d514b712742b5f41dbcb3e68
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/mstoreMemExp.json
@@ -0,0 +1,37 @@
+{
+    "mstoreMemExp" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/mstoreMemExpFiller.json",
+            "sourceHash" : "eb43769a562c8a34bcb776fd312cc723bf2e8f4e64c75d7d3e36451760d9fd44"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x01f4153d80",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60f1630fffffff52",
+            "data" : "0x",
+            "gas" : "0x01f4153d80",
+            "gasPrice" : "0x01",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60f1630fffffff52",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/mstoreWordToBigError.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/mstoreWordToBigError.json
new file mode 100644
index 0000000000000000000000000000000000000000..8409845b1283284e99c88f2e7065d6715d6e10ac
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/mstoreWordToBigError.json
@@ -0,0 +1,52 @@
+{
+    "mstoreWordToBigError" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/mstoreWordToBigErrorFiller.json",
+            "sourceHash" : "25c31b75a7912e1384ff3347dc511c5d1b384e6f40cfb0dffaa65176abcc1613"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x01f4153d80",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600152600151600155",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013868",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600152600151600155",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x01" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600152600151600155",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/mstore_mload0.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/mstore_mload0.json
new file mode 100644
index 0000000000000000000000000000000000000000..d3f3871dc49ce6133847ba670c5d646343c54d3c
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/mstore_mload0.json
@@ -0,0 +1,52 @@
+{
+    "mstore_mload0" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/mstore_mload0Filler.json",
+            "sourceHash" : "f3bd75c796896dcdbf77a7b2af45f3299ebe20db7e30d22031edc990bffb0416"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6017600052600051600155",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01386b",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6017600052600051600155",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x01" : "0x17"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6017600052600051600155",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/pc0.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/pc0.json
new file mode 100644
index 0000000000000000000000000000000000000000..20b578cae7690db6dba598f537ddd6b7e90e7e90
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/pc0.json
@@ -0,0 +1,51 @@
+{
+    "pc0" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/pc0Filler.json",
+            "sourceHash" : "824c240179768ed6999ca7357c185b25d2368e5526cde066fa103caa26fe8dea"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x58600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x017313",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x58600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x58600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/pc1.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/pc1.json
new file mode 100644
index 0000000000000000000000000000000000000000..21c3580d15a08effc48845ca1dc0981f0fd402d1
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/pc1.json
@@ -0,0 +1,52 @@
+{
+    "pc1" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/pc1Filler.json",
+            "sourceHash" : "5e897dc9ac93e7c8c0502f846914c81cacb26796ab75d517dd862fc1f193256c"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60ff60005558600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x0124ed",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60ff60005558600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x05"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60ff60005558600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/pop0.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/pop0.json
new file mode 100644
index 0000000000000000000000000000000000000000..9fc77914a5415a27b2ff5d0ef5a670f507e6989c
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/pop0.json
@@ -0,0 +1,52 @@
+{
+    "pop0" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/pop0Filler.json",
+            "sourceHash" : "46af5c256e1cdc6525f63332c78c39e0583ad9afe06e29a1a2cad8efcc801fd4"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6002600360045055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013875",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6002600360045055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x03" : "0x02"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6002600360045055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/pop1.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/pop1.json
new file mode 100644
index 0000000000000000000000000000000000000000..40f9bb437b70e7acb68e537d8caed721da5fc0c6
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/pop1.json
@@ -0,0 +1,37 @@
+{
+    "pop1" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/pop1Filler.json",
+            "sourceHash" : "f87d71b88a272f122f6ea9dbd4680f8b4bf659a1b2bae4634398e6ecdcc9f487"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x5060026003600455",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x5060026003600455",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/return1.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/return1.json
new file mode 100644
index 0000000000000000000000000000000000000000..99038e110edeb88d198421b77953ab8fb2ae739b
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/return1.json
@@ -0,0 +1,37 @@
+{
+    "return1" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/return1Filler.json",
+            "sourceHash" : "fe0798e0775da11e784482b44b51322ad70f4deaa8ce8643841257d3abee2e1f"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6001620f4240f3",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6001620f4240f3",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/return2.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/return2.json
new file mode 100644
index 0000000000000000000000000000000000000000..627a87466d8689aaf6535cf03f66ff13a86be4b4
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/return2.json
@@ -0,0 +1,51 @@
+{
+    "return2" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/return2Filler.json",
+            "sourceHash" : "dbf688e0c2f5f4907b91cf9d71f3dc94ccbdcd3153ece4d2017e0367c0f0ef66"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6001608052600060805111601b57600160005260206000f3602b565b602760005260206000f360026080525b",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01865f",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x0000000000000000000000000000000000000000000000000000000000000027",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6001608052600060805111601b57600160005260206000f3602b565b602760005260206000f360026080525b",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6001608052600060805111601b57600160005260206000f3602b565b602760005260206000f360026080525b",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/sha3MemExp.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/sha3MemExp.json
new file mode 100644
index 0000000000000000000000000000000000000000..b69618698766d780f75a2cc2ee3d49ae7ea5be5b
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/sha3MemExp.json
@@ -0,0 +1,37 @@
+{
+    "sha3MemExp" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/sha3MemExpFiller.json",
+            "sourceHash" : "6672d6b321654fc8397f1a89903d0fb859013f50a4483c33e7b14b08ba490886"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x01f4153d80",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60ff630fffffff20",
+            "data" : "0x",
+            "gas" : "0x01f4153d80",
+            "gasPrice" : "0x01",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60ff630fffffff20",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/sstore_load_0.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/sstore_load_0.json
new file mode 100644
index 0000000000000000000000000000000000000000..c44a6a821752663a5c95f982bb28a7113c7dba14
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/sstore_load_0.json
@@ -0,0 +1,54 @@
+{
+    "sstore_load_0" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/sstore_load_0Filler.json",
+            "sourceHash" : "371f51e169fa8f7740cef83f469ff5f02034d301d027b0267cd999c9ea5ca633"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60ff60005560ee600a55600054601455",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x9bfc",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60ff60005560ee600a55600054601455",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0xff",
+                    "0x0a" : "0xee",
+                    "0x14" : "0xff"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60ff60005560ee600a55600054601455",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/sstore_load_1.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/sstore_load_1.json
new file mode 100644
index 0000000000000000000000000000000000000000..8e0d2d304bbcf31f5b0c4252839e34d2a6c9eb4a
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/sstore_load_1.json
@@ -0,0 +1,53 @@
+{
+    "sstore_load_1" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/sstore_load_1Filler.json",
+            "sourceHash" : "28c5c7cfbcf28dd967743a82487d71c5d17eca75a90f019d227970c0ff927155"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60ff60005560ee600a55606454601455",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0xd694",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60ff60005560ee600a55606454601455",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0xff",
+                    "0x0a" : "0xee"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60ff60005560ee600a55606454601455",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/sstore_load_2.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/sstore_load_2.json
new file mode 100644
index 0000000000000000000000000000000000000000..a64cd12ff607a8e6bcb6fb2825980eb64dbacc8a
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/sstore_load_2.json
@@ -0,0 +1,37 @@
+{
+    "sstore_load_2" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/sstore_load_2Filler.json",
+            "sourceHash" : "6eeaf23d94ef3fc20edf8997eea5636ef20031039916c445404cfbe6ed8fbd42"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60ff60005560ee60015560dd600255600154600a55600254601455",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60ff60005560ee60015560dd600255600154600a55600254601455",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/sstore_underflow.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/sstore_underflow.json
new file mode 100644
index 0000000000000000000000000000000000000000..ba3e6e28206694458370da4cfb1325794c696fa3
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/sstore_underflow.json
@@ -0,0 +1,37 @@
+{
+    "sstore_underflow" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/sstore_underflowFiller.json",
+            "sourceHash" : "805b307827e4870e9e3bf9655a71a4ca5c327223280c4c3125522d053732de4b"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x600155",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600155",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/stack_loop.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/stack_loop.json
new file mode 100644
index 0000000000000000000000000000000000000000..48ca5d11b64727275c7c9dca5d7fbb3a199cbd82
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/stack_loop.json
@@ -0,0 +1,37 @@
+{
+    "stack_loop" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/stack_loopFiller.json",
+            "sourceHash" : "10cdba5fde4ef3d4d21af05732cf685986623a9055ef0d62dfb00f2a415e9264"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60015b6001810380600257600053600153600253600353600453600553600653600753600853600953596000f3",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60015b6001810380600257600053600153600253600353600453600553600653600753600853600953596000f3",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/stackjump1.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/stackjump1.json
new file mode 100644
index 0000000000000000000000000000000000000000..1d36c705ce08603e5dc06c1f77f79aeebe80aebf
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/stackjump1.json
@@ -0,0 +1,51 @@
+{
+    "stackjump1" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/stackjump1Filler.json",
+            "sourceHash" : "21d7234c731f6e2e771b45ce8ba46f258fcfee3c1c1f9060d5246302ef5f151e"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6004600660096014565b600a03600052596000f35b60005201600956",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x018662",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x0000000000000000000000000000000000000000000000000000000000000000",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6004600660096014565b600a03600052596000f35b60005201600956",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6004600660096014565b600a03600052596000f35b60005201600956",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/swapAt52becameMstore.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/swapAt52becameMstore.json
new file mode 100644
index 0000000000000000000000000000000000000000..74f61efbdae4856f64a8dfcc273c56b90f10e082
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/swapAt52becameMstore.json
@@ -0,0 +1,37 @@
+{
+    "swapAt52becameMstore" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/swapAt52becameMstoreFiller.json",
+            "sourceHash" : "b014aac7021775f56b763921bf12a663ca35c4aa230888cd7908edfa705b1413"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x600260035255",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600260035255",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/when.json b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/when.json
new file mode 100644
index 0000000000000000000000000000000000000000..608053437756dc17af28d2198261ca66fe2a1ae4
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/when.json
@@ -0,0 +1,51 @@
+{
+    "when" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmIOandFlowOperations/whenFiller.json",
+            "sourceHash" : "18527242394f1a6921ffb94f5938e5c13a8dc892cb123edf424d17c32be5140d"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x600060011115600e57600d6080525b",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01866e",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600060011115600e57600d6080525b",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600060011115600e57600d6080525b",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup1.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup1.json
new file mode 100644
index 0000000000000000000000000000000000000000..cfb82a2d41f2dc487bd15e47d4e6ca8d8170a156
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup1.json
@@ -0,0 +1,52 @@
+{
+    "dup1" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/dup1Filler.json",
+            "sourceHash" : "889d5de15fe358e75ea0112d96f91b7f0611e50107afd44e49591dfdf4d1404a"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x7f10112233445566778899aabbccddeeff00112233445566778899aabbccddeeff80600355",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013877",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x7f10112233445566778899aabbccddeeff00112233445566778899aabbccddeeff80600355",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x03" : "0x10112233445566778899aabbccddeeff00112233445566778899aabbccddeeff"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x7f10112233445566778899aabbccddeeff00112233445566778899aabbccddeeff80600355",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup10.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup10.json
new file mode 100644
index 0000000000000000000000000000000000000000..9594e9713502c1745904c7aa30e4f6431c418186
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup10.json
@@ -0,0 +1,52 @@
+{
+    "dup10" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/dup10Filler.json",
+            "sourceHash" : "23bdbc11963ca2b25f37833790df2c18f7e8eafb140aeae46da7aa559b155c08"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x600a60096008600760066005600460036002600189600355",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01385c",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600a60096008600760066005600460036002600189600355",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x03" : "0x0a"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600a60096008600760066005600460036002600189600355",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup11.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup11.json
new file mode 100644
index 0000000000000000000000000000000000000000..37b621c625a41fc323df9e2aefdfea952b9e7d2f
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup11.json
@@ -0,0 +1,52 @@
+{
+    "dup11" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/dup11Filler.json",
+            "sourceHash" : "19bd1559d38698b81939d34f57fd6d0cc67f859abd68cef0aa92d5bfab4988a9"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x600b600a6009600860076006600560046003600260018a600355",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013859",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600b600a6009600860076006600560046003600260018a600355",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x03" : "0x0b"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600b600a6009600860076006600560046003600260018a600355",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup12.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup12.json
new file mode 100644
index 0000000000000000000000000000000000000000..986bf737acd16c51a8042a14f351ad89282a560c
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup12.json
@@ -0,0 +1,52 @@
+{
+    "dup12" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/dup12Filler.json",
+            "sourceHash" : "da44468576186e257a5702a707b1473294a2462f0f658a766844ecb54a3695aa"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x600c600b600a6009600860076006600560046003600260018b600355",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013856",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600c600b600a6009600860076006600560046003600260018b600355",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x03" : "0x0c"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600c600b600a6009600860076006600560046003600260018b600355",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup13.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup13.json
new file mode 100644
index 0000000000000000000000000000000000000000..730aea52d8ca4baafecd5122c733c06e467ab010
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup13.json
@@ -0,0 +1,52 @@
+{
+    "dup13" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/dup13Filler.json",
+            "sourceHash" : "f3c75ee821b71e2914b48355154b77941be4b3b5a181dea5233d79b3bf40fcc1"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x600d600c600b600a6009600860076006600560046003600260018c600355",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013853",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600d600c600b600a6009600860076006600560046003600260018c600355",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x03" : "0x0d"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600d600c600b600a6009600860076006600560046003600260018c600355",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup14.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup14.json
new file mode 100644
index 0000000000000000000000000000000000000000..1183091eca220063336345bad0e0764c551a664a
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup14.json
@@ -0,0 +1,52 @@
+{
+    "dup14" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/dup14Filler.json",
+            "sourceHash" : "a37f4ccb2c77bb918267d494a88dcb88531ea34447b2d16aff8f4ae3860182f3"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x600e600d600c600b600a6009600860076006600560046003600260018d600355",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013850",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600e600d600c600b600a6009600860076006600560046003600260018d600355",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x03" : "0x0e"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600e600d600c600b600a6009600860076006600560046003600260018d600355",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup15.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup15.json
new file mode 100644
index 0000000000000000000000000000000000000000..3d869b8b1da562a4a99fb8575ddbe390b9d6c1b3
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup15.json
@@ -0,0 +1,52 @@
+{
+    "dup15" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/dup15Filler.json",
+            "sourceHash" : "0ac65194062a3e7bc2459472d9c4864695ec91177b5344a134c2da8ed44b0369"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x600f600e600d600c600b600a6009600860076006600560046003600260018e600355",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01384d",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600f600e600d600c600b600a6009600860076006600560046003600260018e600355",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x03" : "0x0f"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600f600e600d600c600b600a6009600860076006600560046003600260018e600355",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup16.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup16.json
new file mode 100644
index 0000000000000000000000000000000000000000..f79ab71de7840b35731ae1fe7898c205c0eba5bd
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup16.json
@@ -0,0 +1,52 @@
+{
+    "dup16" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/dup16Filler.json",
+            "sourceHash" : "2b4c0d14cb78c59f0ab214cc935fe94741426dbd20418c1c06dd063ea0caa2d5"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6010600f600e600d600c600b600a6009600860076006600560046003600260018f600355",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01384a",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6010600f600e600d600c600b600a6009600860076006600560046003600260018f600355",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x03" : "0x10"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6010600f600e600d600c600b600a6009600860076006600560046003600260018f600355",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup2.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup2.json
new file mode 100644
index 0000000000000000000000000000000000000000..3c6792af4b0c64456946e0f98505d8401b26536b
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup2.json
@@ -0,0 +1,52 @@
+{
+    "dup2" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/dup2Filler.json",
+            "sourceHash" : "12b1431dcf55f1141d0e407117f92914fa9a25ae5485ad89e06bef6b688b1a94"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6002600181600355",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013874",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6002600181600355",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x03" : "0x02"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6002600181600355",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup2error.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup2error.json
new file mode 100644
index 0000000000000000000000000000000000000000..5b172e0466003d4bde9f071b600014bb3bdc314a
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup2error.json
@@ -0,0 +1,37 @@
+{
+    "dup2error" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/dup2errorFiller.json",
+            "sourceHash" : "39d43572d1117048ea0ef48812b09faca67b3978451dd4da80d2df3d758fb102"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x7f10112233445566778899aabbccddeeff00112233445566778899aabbccddeeff81600355",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x7f10112233445566778899aabbccddeeff00112233445566778899aabbccddeeff81600355",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup3.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup3.json
new file mode 100644
index 0000000000000000000000000000000000000000..481999645cf64c4c8d8598c09d0277cdd56aa358
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup3.json
@@ -0,0 +1,52 @@
+{
+    "dup3" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/dup3Filler.json",
+            "sourceHash" : "09c9fbeef4cef9883c23f3444738ad2b4751e00b5753aa9c1b9f224ae365a53f"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60036002600182600355",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013871",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60036002600182600355",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x03" : "0x03"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60036002600182600355",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup4.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup4.json
new file mode 100644
index 0000000000000000000000000000000000000000..6fcdd5aac4ab8fba583d9585e7139f958b5420e9
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup4.json
@@ -0,0 +1,52 @@
+{
+    "dup4" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/dup4Filler.json",
+            "sourceHash" : "acb8190d34fe9b884acd7d69397e6434d2fd07227d7e6736eb6ae7f5bb172401"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x600460036002600183600355",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01386e",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600460036002600183600355",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x03" : "0x04"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600460036002600183600355",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup5.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup5.json
new file mode 100644
index 0000000000000000000000000000000000000000..7f5324b30d2aec8740a2241b5c55a000b2c0c402
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup5.json
@@ -0,0 +1,52 @@
+{
+    "dup5" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/dup5Filler.json",
+            "sourceHash" : "4fcfefb995a2ebbd90e18181ff5939c6db3e630bda508f94cc1a55fb7b8b43bc"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6005600460036002600184600355",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01386b",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6005600460036002600184600355",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x03" : "0x05"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6005600460036002600184600355",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup6.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup6.json
new file mode 100644
index 0000000000000000000000000000000000000000..1b00b3f2313e139fdd128365135f0b522a62526f
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup6.json
@@ -0,0 +1,52 @@
+{
+    "dup6" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/dup6Filler.json",
+            "sourceHash" : "9cc5d01fd36294ca6f658eb77a10d597d30ef8b6ed1b9cee39719fcaf639b757"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60066005600460036002600185600355",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013868",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60066005600460036002600185600355",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x03" : "0x06"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60066005600460036002600185600355",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup7.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup7.json
new file mode 100644
index 0000000000000000000000000000000000000000..10bce65dd728cd5871a3946e4c8bfcce906bdb45
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup7.json
@@ -0,0 +1,52 @@
+{
+    "dup7" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/dup7Filler.json",
+            "sourceHash" : "28fe0e04a338072067f4bd7ea8c75f1dd010613fb5255ca54411fa8c3e215476"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x600760066005600460036002600186600355",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013865",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600760066005600460036002600186600355",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x03" : "0x07"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600760066005600460036002600186600355",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup8.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup8.json
new file mode 100644
index 0000000000000000000000000000000000000000..6e420db694b02728077e78d1b66a3c843fedb4b8
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup8.json
@@ -0,0 +1,52 @@
+{
+    "dup8" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/dup8Filler.json",
+            "sourceHash" : "0fcca677e0e2f103dd67ab566f8d0382403fb41f1cec87c741d57199163bc819"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6008600760066005600460036002600187600355",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013862",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6008600760066005600460036002600187600355",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x03" : "0x08"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6008600760066005600460036002600187600355",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup9.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup9.json
new file mode 100644
index 0000000000000000000000000000000000000000..3d0da8adbec8a4a92145cfd3899bfe4df888bbf7
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup9.json
@@ -0,0 +1,52 @@
+{
+    "dup9" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/dup9Filler.json",
+            "sourceHash" : "f5af3ef5323e2e3792ba1f470a26ed99975e436cf47ef414f28cb8fc510ca1a7"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60096008600760066005600460036002600188600355",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01385f",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60096008600760066005600460036002600188600355",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x03" : "0x09"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60096008600760066005600460036002600188600355",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push1.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push1.json
new file mode 100644
index 0000000000000000000000000000000000000000..21cfc0e80d0e9845089f9287096902fcf2fffd9f
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push1.json
@@ -0,0 +1,52 @@
+{
+    "push1" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/push1Filler.json",
+            "sourceHash" : "8171c34388587f0c7ae7a41b825eef42d10738f6fb953c11c1d6ef9c2a6f5129"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60ff600355",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01387a",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60ff600355",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x03" : "0xff"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60ff600355",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push10.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push10.json
new file mode 100644
index 0000000000000000000000000000000000000000..5fb977b910d312afc7ce9272736b2e6f05fe8da1
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push10.json
@@ -0,0 +1,52 @@
+{
+    "push10" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/push10Filler.json",
+            "sourceHash" : "0d3011bde292b2ca6a6266ba693e55e0edbe5682bc20216e970fcb3d2fe881c3"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6966778899aabbccddeeff600355",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01387a",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6966778899aabbccddeeff600355",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x03" : "0x66778899aabbccddeeff"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6966778899aabbccddeeff600355",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push11.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push11.json
new file mode 100644
index 0000000000000000000000000000000000000000..d88d4abd7fb9711a27bb482d1404a481175ce3b2
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push11.json
@@ -0,0 +1,52 @@
+{
+    "push11" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/push11Filler.json",
+            "sourceHash" : "c18904bda959ad278ce35ec57ba4b78a539f35bc14f843ac9774c9f0004f59ce"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6a5566778899aabbccddeeff600355",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01387a",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6a5566778899aabbccddeeff600355",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x03" : "0x5566778899aabbccddeeff"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6a5566778899aabbccddeeff600355",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push12.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push12.json
new file mode 100644
index 0000000000000000000000000000000000000000..640e22b659755a5ce91c8029b4f0ea8341196eeb
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push12.json
@@ -0,0 +1,52 @@
+{
+    "push12" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/push12Filler.json",
+            "sourceHash" : "60fa6626a3b28b48318b49eb9fdf256c6a25d9dac4959b9bea89a98050c4469a"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6b445566778899aabbccddeeff600355",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01387a",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6b445566778899aabbccddeeff600355",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x03" : "0x445566778899aabbccddeeff"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6b445566778899aabbccddeeff600355",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push13.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push13.json
new file mode 100644
index 0000000000000000000000000000000000000000..9ec9c40d74933826eeee6bde3b2b3d79ccabaf4b
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push13.json
@@ -0,0 +1,52 @@
+{
+    "push13" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/push13Filler.json",
+            "sourceHash" : "343d540d55a46e9f3857c7a0919a69108c7924b9c690db204c2868d5ae50a460"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6c33445566778899aabbccddeeff600355",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01387a",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6c33445566778899aabbccddeeff600355",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x03" : "0x33445566778899aabbccddeeff"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6c33445566778899aabbccddeeff600355",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push14.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push14.json
new file mode 100644
index 0000000000000000000000000000000000000000..3ffe125851624049377db1a26661c3902573b8f7
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push14.json
@@ -0,0 +1,52 @@
+{
+    "push14" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/push14Filler.json",
+            "sourceHash" : "0ba241772c95e7ce39b9cc1dc5ea2d2f7ee75a96ce82bd17bfea425ca32a4d4a"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6d2233445566778899aabbccddeeff600355",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01387a",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6d2233445566778899aabbccddeeff600355",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x03" : "0x2233445566778899aabbccddeeff"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6d2233445566778899aabbccddeeff600355",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push15.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push15.json
new file mode 100644
index 0000000000000000000000000000000000000000..c11ddcc5a31e8bf1f21eb642e9b1bb7931dba56a
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push15.json
@@ -0,0 +1,52 @@
+{
+    "push15" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/push15Filler.json",
+            "sourceHash" : "29617368ed760520f7807ed629abe751dada5a3e9fc72602b50ed1f48278ce52"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6e112233445566778899aabbccddeeff600355",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01387a",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6e112233445566778899aabbccddeeff600355",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x03" : "0x112233445566778899aabbccddeeff"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6e112233445566778899aabbccddeeff600355",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push16.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push16.json
new file mode 100644
index 0000000000000000000000000000000000000000..86ffce8130f129ecee0a19adee5f3cbfd7964492
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push16.json
@@ -0,0 +1,52 @@
+{
+    "push16" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/push16Filler.json",
+            "sourceHash" : "5c54e00d05640819402aa7120a2b9d12ff42edd5a049b32adaf44e768fe9efc2"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6f10112233445566778899aabbccddeeff600355",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01387a",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6f10112233445566778899aabbccddeeff600355",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x03" : "0x10112233445566778899aabbccddeeff"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6f10112233445566778899aabbccddeeff600355",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push17.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push17.json
new file mode 100644
index 0000000000000000000000000000000000000000..94bf1c6040932660557ed106504bf6a7db011198
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push17.json
@@ -0,0 +1,52 @@
+{
+    "push17" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/push17Filler.json",
+            "sourceHash" : "0b82cf50a2dd3f921f0316cd2be4749ad1c7b7804a7057743103317674fc1c80"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x70ff00112233445566778899aabbccddeeff600355",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01387a",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x70ff00112233445566778899aabbccddeeff600355",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x03" : "0xff00112233445566778899aabbccddeeff"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x70ff00112233445566778899aabbccddeeff600355",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push18.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push18.json
new file mode 100644
index 0000000000000000000000000000000000000000..5df5273212bf33688940ce60d0fcda10ab590bd1
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push18.json
@@ -0,0 +1,52 @@
+{
+    "push18" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/push18Filler.json",
+            "sourceHash" : "80e81d41694d284faac2ade3e819de6103aa03a169166fa8d8c5e43944b7ad50"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x71eeff00112233445566778899aabbccddeeff600355",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01387a",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x71eeff00112233445566778899aabbccddeeff600355",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x03" : "0xeeff00112233445566778899aabbccddeeff"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x71eeff00112233445566778899aabbccddeeff600355",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push19.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push19.json
new file mode 100644
index 0000000000000000000000000000000000000000..0a379af506b9cc299c403c9be91cff8b165fb5de
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push19.json
@@ -0,0 +1,52 @@
+{
+    "push19" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/push19Filler.json",
+            "sourceHash" : "395bb54c39e164688f3a8706e288302b4aa1ce898faf9af85298651b815c78d5"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x72ddeeff00112233445566778899aabbccddeeff600355",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01387a",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x72ddeeff00112233445566778899aabbccddeeff600355",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x03" : "0xddeeff00112233445566778899aabbccddeeff"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x72ddeeff00112233445566778899aabbccddeeff600355",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push1_missingStack.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push1_missingStack.json
new file mode 100644
index 0000000000000000000000000000000000000000..b3d5744f0df844592f0aee0ae729a08f4fbd4ccb
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push1_missingStack.json
@@ -0,0 +1,51 @@
+{
+    "push1_missingStack" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/push1_missingStackFiller.json",
+            "sourceHash" : "8648b58b98abaa9416a15974256a81f45ab7d3692b5798c30dae0bd377ffd5c0"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01869d",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push2.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push2.json
new file mode 100644
index 0000000000000000000000000000000000000000..65cf856eba86b072936b7a711025b0f702bdfaf0
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push2.json
@@ -0,0 +1,52 @@
+{
+    "push2" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/push2Filler.json",
+            "sourceHash" : "da86ae7ca1372a231b1c1fd8f060e3e993e00448951af08348ca65fa11aab298"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x61eeff600355",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01387a",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x61eeff600355",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x03" : "0xeeff"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x61eeff600355",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push20.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push20.json
new file mode 100644
index 0000000000000000000000000000000000000000..9c9698fd66417be9058b234c1fc69d53b61f29b4
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push20.json
@@ -0,0 +1,52 @@
+{
+    "push20" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/push20Filler.json",
+            "sourceHash" : "c3f370223d38ff6230aad16a24a32a2c02622d8f6f32a6cef36f37ff3efd5f3e"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x73ccddeeff00112233445566778899aabbccddeeff600355",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01387a",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x73ccddeeff00112233445566778899aabbccddeeff600355",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x03" : "0xccddeeff00112233445566778899aabbccddeeff"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x73ccddeeff00112233445566778899aabbccddeeff600355",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push21.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push21.json
new file mode 100644
index 0000000000000000000000000000000000000000..bc1b7012c1b5bc68e8295ffecd5d4da1f31a5d3b
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push21.json
@@ -0,0 +1,52 @@
+{
+    "push21" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/push21Filler.json",
+            "sourceHash" : "0abf08a8156e9009d9000e3cd4ff34a0a59f752cf83398435e375b8cac971ece"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x74bbccddeeff00112233445566778899aabbccddeeff600355",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01387a",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x74bbccddeeff00112233445566778899aabbccddeeff600355",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x03" : "0xbbccddeeff00112233445566778899aabbccddeeff"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x74bbccddeeff00112233445566778899aabbccddeeff600355",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push22.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push22.json
new file mode 100644
index 0000000000000000000000000000000000000000..e76e553f48668819c65108354756eebbe070734f
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push22.json
@@ -0,0 +1,52 @@
+{
+    "push22" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/push22Filler.json",
+            "sourceHash" : "e4086c43a883aba2edaa929e238d346bdfbb26807ec8cbc846584b2b9efe3015"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x75aabbccddeeff00112233445566778899aabbccddeeff600355",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01387a",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x75aabbccddeeff00112233445566778899aabbccddeeff600355",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x03" : "0xaabbccddeeff00112233445566778899aabbccddeeff"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x75aabbccddeeff00112233445566778899aabbccddeeff600355",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push23.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push23.json
new file mode 100644
index 0000000000000000000000000000000000000000..090e062252d7e0049c557b78305b061e050a3df5
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push23.json
@@ -0,0 +1,52 @@
+{
+    "push23" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/push23Filler.json",
+            "sourceHash" : "c9c1a082ed275dceb0b1d5e66dc9e02bf983c8066aa2f703409131550ce818f3"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x7699aabbccddeeff00112233445566778899aabbccddeeff600355",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01387a",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x7699aabbccddeeff00112233445566778899aabbccddeeff600355",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x03" : "0x99aabbccddeeff00112233445566778899aabbccddeeff"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x7699aabbccddeeff00112233445566778899aabbccddeeff600355",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push24.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push24.json
new file mode 100644
index 0000000000000000000000000000000000000000..571f554811eb6e58aad06f2fab316fe42d5c5f11
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push24.json
@@ -0,0 +1,52 @@
+{
+    "push24" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/push24Filler.json",
+            "sourceHash" : "5b4d98c3f4c67c360b2aae0d300c947470dafa9ce2545891725387310fe0c2b6"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x778899aabbccddeeff00112233445566778899aabbccddeeff600355",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01387a",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x778899aabbccddeeff00112233445566778899aabbccddeeff600355",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x03" : "0x8899aabbccddeeff00112233445566778899aabbccddeeff"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x778899aabbccddeeff00112233445566778899aabbccddeeff600355",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push25.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push25.json
new file mode 100644
index 0000000000000000000000000000000000000000..c66149c89199a4bc69a7e5bdffc133109d85ce5e
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push25.json
@@ -0,0 +1,52 @@
+{
+    "push25" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/push25Filler.json",
+            "sourceHash" : "78b2fb30a16bb58147d99ef1f6fdba16fe5f403cb52aea760eb6d5a813f478cb"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x78778899aabbccddeeff00112233445566778899aabbccddeeff600355",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01387a",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x78778899aabbccddeeff00112233445566778899aabbccddeeff600355",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x03" : "0x778899aabbccddeeff00112233445566778899aabbccddeeff"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x78778899aabbccddeeff00112233445566778899aabbccddeeff600355",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push26.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push26.json
new file mode 100644
index 0000000000000000000000000000000000000000..c7d88eab3743939fd3f638651b7557014c7fd146
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push26.json
@@ -0,0 +1,52 @@
+{
+    "push26" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/push26Filler.json",
+            "sourceHash" : "b29629f6a45374bd27c145ad45c4e9dd63aee283f706bf35ccb98cb57d8f4615"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x7966778899aabbccddeeff00112233445566778899aabbccddeeff600355",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01387a",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x7966778899aabbccddeeff00112233445566778899aabbccddeeff600355",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x03" : "0x66778899aabbccddeeff00112233445566778899aabbccddeeff"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x7966778899aabbccddeeff00112233445566778899aabbccddeeff600355",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push27.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push27.json
new file mode 100644
index 0000000000000000000000000000000000000000..8dfc2ac93ecc9454eaeb2b368002088807263b4e
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push27.json
@@ -0,0 +1,52 @@
+{
+    "push27" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/push27Filler.json",
+            "sourceHash" : "33e85a89072e1d3b1b84e66fbe5b42a77509d046a6edb8a75e66caf16d7b8c8a"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x7a5566778899aabbccddeeff00112233445566778899aabbccddeeff600355",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01387a",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x7a5566778899aabbccddeeff00112233445566778899aabbccddeeff600355",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x03" : "0x5566778899aabbccddeeff00112233445566778899aabbccddeeff"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x7a5566778899aabbccddeeff00112233445566778899aabbccddeeff600355",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push28.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push28.json
new file mode 100644
index 0000000000000000000000000000000000000000..2a5fe134acdb21f71a7ffb2c06a6352d3e74a7b3
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push28.json
@@ -0,0 +1,52 @@
+{
+    "push28" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/push28Filler.json",
+            "sourceHash" : "e5ce3ec9a80d778187ca40662e6c4b406a70bb9dcf472f807f270b163c31be50"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x7b445566778899aabbccddeeff00112233445566778899aabbccddeeff600355",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01387a",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x7b445566778899aabbccddeeff00112233445566778899aabbccddeeff600355",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x03" : "0x445566778899aabbccddeeff00112233445566778899aabbccddeeff"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x7b445566778899aabbccddeeff00112233445566778899aabbccddeeff600355",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push29.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push29.json
new file mode 100644
index 0000000000000000000000000000000000000000..0fa95a695aa161c52dd7b128d5965298b27f5b66
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push29.json
@@ -0,0 +1,52 @@
+{
+    "push29" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/push29Filler.json",
+            "sourceHash" : "1ef57214acc4761163e6aebfecd7934a10f2c37e7ad0f0ffcec4896c11986861"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x7c33445566778899aabbccddeeff00112233445566778899aabbccddeeff600355",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01387a",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x7c33445566778899aabbccddeeff00112233445566778899aabbccddeeff600355",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x03" : "0x33445566778899aabbccddeeff00112233445566778899aabbccddeeff"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x7c33445566778899aabbccddeeff00112233445566778899aabbccddeeff600355",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push3.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push3.json
new file mode 100644
index 0000000000000000000000000000000000000000..dbf5b6c11a97f52ffa1110cf3f053eec01431413
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push3.json
@@ -0,0 +1,52 @@
+{
+    "push3" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/push3Filler.json",
+            "sourceHash" : "20a168ac86bdd2d3db0921329d4f82421261f0b9d91342d49f079cdc4f07b519"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x62ddeeff600355",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01387a",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x62ddeeff600355",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x03" : "0xddeeff"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x62ddeeff600355",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push30.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push30.json
new file mode 100644
index 0000000000000000000000000000000000000000..6129778f941339b8efd5bfff6ea0a2e64807308d
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push30.json
@@ -0,0 +1,52 @@
+{
+    "push30" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/push30Filler.json",
+            "sourceHash" : "a50547b1b97d5b147e6ff053f126c0741759f6f8f2f8e242d4b97068923f0b1e"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x7d2233445566778899aabbccddeeff00112233445566778899aabbccddeeff600355",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01387a",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x7d2233445566778899aabbccddeeff00112233445566778899aabbccddeeff600355",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x03" : "0x2233445566778899aabbccddeeff00112233445566778899aabbccddeeff"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x7d2233445566778899aabbccddeeff00112233445566778899aabbccddeeff600355",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push31.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push31.json
new file mode 100644
index 0000000000000000000000000000000000000000..c12d384eec3091dbc1f0d89b2dc781587f295ba3
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push31.json
@@ -0,0 +1,52 @@
+{
+    "push31" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/push31Filler.json",
+            "sourceHash" : "2200ea0b0c9cd7781b9647a0082848bc70691fadb5bbc0e6286c39b83191e4fe"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x7e112233445566778899aabbccddeeff00112233445566778899aabbccddeeff600355",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01387a",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x7e112233445566778899aabbccddeeff00112233445566778899aabbccddeeff600355",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x03" : "0x112233445566778899aabbccddeeff00112233445566778899aabbccddeeff"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x7e112233445566778899aabbccddeeff00112233445566778899aabbccddeeff600355",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push32.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push32.json
new file mode 100644
index 0000000000000000000000000000000000000000..87dac156f8a83ef7b39b6bfa2005e41266873c95
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push32.json
@@ -0,0 +1,52 @@
+{
+    "push32" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/push32Filler.json",
+            "sourceHash" : "c43c12c1b4e0a444bf3811410b4d0f830096d44fda3c08a4d62337a585505b81"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x7f10112233445566778899aabbccddeeff00112233445566778899aabbccddeeff600355",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01387a",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x7f10112233445566778899aabbccddeeff00112233445566778899aabbccddeeff600355",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x03" : "0x10112233445566778899aabbccddeeff00112233445566778899aabbccddeeff"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x7f10112233445566778899aabbccddeeff00112233445566778899aabbccddeeff600355",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push32AndSuicide.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push32AndSuicide.json
new file mode 100644
index 0000000000000000000000000000000000000000..ed5b0c4152ddf7e12e7f4f3fcc97b912dd6428a6
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push32AndSuicide.json
@@ -0,0 +1,51 @@
+{
+    "push32AndSuicide" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/push32AndSuicideFiller.json",
+            "sourceHash" : "af183885a76f539a582fdea8b5e208af8bb8a7eeee650fc577c7bbe08e7dd573"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x7fff10112233445566778899aabbccddeeff00112233445566778899aabbccddeeff600355",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01869d",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0xbbccddeeff00112233445566778899aabbccddee" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x7fff10112233445566778899aabbccddeeff00112233445566778899aabbccddeeff600355",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push32FillUpInputWithZerosAtTheEnd.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push32FillUpInputWithZerosAtTheEnd.json
new file mode 100644
index 0000000000000000000000000000000000000000..f5c81532c2d86210124b944c378096fc0c58ee1b
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push32FillUpInputWithZerosAtTheEnd.json
@@ -0,0 +1,51 @@
+{
+    "push32FillUpInputWithZerosAtTheEnd" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/push32FillUpInputWithZerosAtTheEndFiller.json",
+            "sourceHash" : "d9030acc29449af0afca2ae316049618bd5341cbb9199229cf7d32d1e8a69cae"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x7fff10112233445566778899aabbccddeeff00112233445566778899aabbccdd",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01869d",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x7fff10112233445566778899aabbccddeeff00112233445566778899aabbccdd",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x7fff10112233445566778899aabbccddeeff00112233445566778899aabbccdd",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push32Undefined.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push32Undefined.json
new file mode 100644
index 0000000000000000000000000000000000000000..0de4b2b1c2868e286148af5732a8766d27a3460a
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push32Undefined.json
@@ -0,0 +1,51 @@
+{
+    "push32Undefined" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/push32UndefinedFiller.json",
+            "sourceHash" : "4785045efbe6fd8cda777fbefd472c6a59f5ff2e9ec58857da3630eba0301880"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x7f010203600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01869d",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x7f010203600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x7f010203600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push32Undefined2.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push32Undefined2.json
new file mode 100644
index 0000000000000000000000000000000000000000..fad69a53643ac19ba28667b58264a407fb313dab
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push32Undefined2.json
@@ -0,0 +1,52 @@
+{
+    "push32Undefined2" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/push32Undefined2Filler.json",
+            "sourceHash" : "82f94221f2d543097751ecc6b8a89b5b52041ebd868d2059bf7e684eed45e4f2"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x7f0102030000000000000000000000000000000000000000000000000000000000600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01387a",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x7f0102030000000000000000000000000000000000000000000000000000000000600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x0102030000000000000000000000000000000000000000000000000000000000"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x7f0102030000000000000000000000000000000000000000000000000000000000600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push32Undefined3.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push32Undefined3.json
new file mode 100644
index 0000000000000000000000000000000000000000..f25a2169684725dae41848eea821a1623cc42f05
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push32Undefined3.json
@@ -0,0 +1,51 @@
+{
+    "push32Undefined3" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/push32Undefined3Filler.json",
+            "sourceHash" : "530f8de32e0ad870380534ff33c3ca7b86401391b64d1c33affa28021a531233"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x7f",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01869d",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x7f",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x7f",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push33.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push33.json
new file mode 100644
index 0000000000000000000000000000000000000000..15ed3eaec0c0e38182019e1ba13854b531597f7f
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push33.json
@@ -0,0 +1,37 @@
+{
+    "push33" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/push33Filler.json",
+            "sourceHash" : "ea8cc586ff9dfaac550e6e2709d2ab87f36589938fb684462db713390b9e57eb"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60656107d26204a0c763026921f4640bc5588eb165372d0f1dca6e661ba1d901961c71670c55f7bc23038e3868056bc75e2d630fffff69021e19e0c9bab24000016a085d1c6e8050f0ea1c71bd6b0688be36543f3c36e638e37a6c03d41f73d55d0d482ae55555376dc76810d0fe03c91964d31c71c6f46e615dd0360c07d931663b14e38e38b16f2da3f99955a3adcf27ebb1caaaaaaa6e7014ccba6a8bb1ed35bd86bf065c71c71c2b7109491c5d4781b79c9009de6bfb8e38e38de8720414a0f6fdec81304d4c563e740bffffffffa573118427b3b4a05bc8a8a4de8459868000000000017406eb15e7331e727940d4ac54b7cdca1c71c71c71bd750567a91c9fefc96ebaa626a22f98c5e638e38e38e37a76032abd16c5b68006e15d5aa307e383f4e55555555555377701a6427bdc4f0d58eab5f48a3ec67f64e21c71c71c71c6f478080dd0a0c9b9ff2c2a0c740b06853a0a980ee38e38e38e38b17903c679cb5e8f2f9cb3b5d6652b0e7334f746faaaaaaaaaaaaa6e7a01b873815917ebb2bf3b890a1af495d6235bae3c71c71c71c71c2b7b07ae4cca96e1a55dfa49c85ad3c3e60e426b92fb8e38e38e38e38de87c036018bf074e292bcc7d6c8bea0f9699443046178bffffffffffffffa57d0e7d34c64a9c85d4460dbbca87196b61618a4bd2168000000000000000017e05b901f48a5b994d6572502bc4ea43140486666416aa1c71c71c71c71c71bd7f047889870c178fc477414ea231d70467a388fffe31b4e638e38e38e38e38e37a",
+            "data" : "0x",
+            "gas" : "0x20",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60656107d26204a0c763026921f4640bc5588eb165372d0f1dca6e661ba1d901961c71670c55f7bc23038e3868056bc75e2d630fffff69021e19e0c9bab24000016a085d1c6e8050f0ea1c71bd6b0688be36543f3c36e638e37a6c03d41f73d55d0d482ae55555376dc76810d0fe03c91964d31c71c6f46e615dd0360c07d931663b14e38e38b16f2da3f99955a3adcf27ebb1caaaaaaa6e7014ccba6a8bb1ed35bd86bf065c71c71c2b7109491c5d4781b79c9009de6bfb8e38e38de8720414a0f6fdec81304d4c563e740bffffffffa573118427b3b4a05bc8a8a4de8459868000000000017406eb15e7331e727940d4ac54b7cdca1c71c71c71bd750567a91c9fefc96ebaa626a22f98c5e638e38e38e37a76032abd16c5b68006e15d5aa307e383f4e55555555555377701a6427bdc4f0d58eab5f48a3ec67f64e21c71c71c71c6f478080dd0a0c9b9ff2c2a0c740b06853a0a980ee38e38e38e38b17903c679cb5e8f2f9cb3b5d6652b0e7334f746faaaaaaaaaaaaa6e7a01b873815917ebb2bf3b890a1af495d6235bae3c71c71c71c71c2b7b07ae4cca96e1a55dfa49c85ad3c3e60e426b92fb8e38e38e38e38de87c036018bf074e292bcc7d6c8bea0f9699443046178bffffffffffffffa57d0e7d34c64a9c85d4460dbbca87196b61618a4bd2168000000000000000017e05b901f48a5b994d6572502bc4ea43140486666416aa1c71c71c71c71c71bd7f047889870c178fc477414ea231d70467a388fffe31b4e638e38e38e38e38e37a",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push4.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push4.json
new file mode 100644
index 0000000000000000000000000000000000000000..2897db957a17e51a0076c46ff5b7ce8fa06a155e
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push4.json
@@ -0,0 +1,52 @@
+{
+    "push4" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/push4Filler.json",
+            "sourceHash" : "5a3832a8b7f6e3a6c995c246489601cebfde0a3b04378909ded6427608cf6f75"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x63ccddeeff600355",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01387a",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x63ccddeeff600355",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x03" : "0xccddeeff"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x63ccddeeff600355",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push5.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push5.json
new file mode 100644
index 0000000000000000000000000000000000000000..6abedee68fd4cdbb7785c9a189f9ff89d1110257
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push5.json
@@ -0,0 +1,52 @@
+{
+    "push5" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/push5Filler.json",
+            "sourceHash" : "f2293a566cf50f05c0e44a6026d1cdb43b252f6a2ebbab995fcf5370e7950419"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x64bbccddeeff600355",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01387a",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x64bbccddeeff600355",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x03" : "0xbbccddeeff"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x64bbccddeeff600355",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push6.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push6.json
new file mode 100644
index 0000000000000000000000000000000000000000..91fce0cc5f73f5cac452c8787a4e827d320111f2
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push6.json
@@ -0,0 +1,52 @@
+{
+    "push6" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/push6Filler.json",
+            "sourceHash" : "ce3dba7bfdc96d65e81e5861ce747a9ea16ca2ea702f770ef4e1ca8be634dc46"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x65aabbccddeeff600355",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01387a",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x65aabbccddeeff600355",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x03" : "0xaabbccddeeff"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x65aabbccddeeff600355",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push7.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push7.json
new file mode 100644
index 0000000000000000000000000000000000000000..a9039df903d9cd6e945ecea7cae3017a22d197b8
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push7.json
@@ -0,0 +1,52 @@
+{
+    "push7" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/push7Filler.json",
+            "sourceHash" : "c89c898f0e46b4eeb7856bfc2e7825a94d2d30c6a564047fc46506607bf9f0b2"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6699aabbccddeeff600355",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01387a",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6699aabbccddeeff600355",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x03" : "0x99aabbccddeeff"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6699aabbccddeeff600355",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push8.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push8.json
new file mode 100644
index 0000000000000000000000000000000000000000..c719ce50087df50fffc80ea0667f8b3db30e1b29
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push8.json
@@ -0,0 +1,52 @@
+{
+    "push8" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/push8Filler.json",
+            "sourceHash" : "25eb3adbc75d5ea4259d81c0fdce4047a33407f0a09c142217699bd5cb391f61"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x678899aabbccddeeff600355",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01387a",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x678899aabbccddeeff600355",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x03" : "0x8899aabbccddeeff"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x678899aabbccddeeff600355",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push9.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push9.json
new file mode 100644
index 0000000000000000000000000000000000000000..c8661deb11de4c0e32d26acaad3422f696c909b8
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push9.json
@@ -0,0 +1,52 @@
+{
+    "push9" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/push9Filler.json",
+            "sourceHash" : "c2a9a74283bbf2502f661e2834bbde716e044893d73b382c37201ab70c98a56b"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x68778899aabbccddeeff600355",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01387a",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x68778899aabbccddeeff600355",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x03" : "0x778899aabbccddeeff"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x68778899aabbccddeeff600355",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap1.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap1.json
new file mode 100644
index 0000000000000000000000000000000000000000..4a2b41403b96c65c41f922ffa0ba9cee4b839c5c
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap1.json
@@ -0,0 +1,52 @@
+{
+    "swap1" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/swap1Filler.json",
+            "sourceHash" : "573b3b4cbf04b6f052a4578898713e320d9141607d40f043270e54e67ad5822c"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x7f10112233445566778899aabbccddeeff00112233445566778899aabbccddeeff60039055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013877",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x7f10112233445566778899aabbccddeeff00112233445566778899aabbccddeeff60039055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x10112233445566778899aabbccddeeff00112233445566778899aabbccddeeff" : "0x03"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x7f10112233445566778899aabbccddeeff00112233445566778899aabbccddeeff60039055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap10.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap10.json
new file mode 100644
index 0000000000000000000000000000000000000000..99414f295f40a048266dbd1c4fa07b841c057e6b
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap10.json
@@ -0,0 +1,52 @@
+{
+    "swap10" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/swap10Filler.json",
+            "sourceHash" : "27210b84bae9ed1b441071ca34af233dbaf3e8b82f9fba0222775b29bd5760eb"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x600a60096008600760066005600460036002600160039955",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01385c",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600a60096008600760066005600460036002600160039955",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x0a" : "0x01"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600a60096008600760066005600460036002600160039955",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap11.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap11.json
new file mode 100644
index 0000000000000000000000000000000000000000..db23e78e4ba30e74fc09cec79cfe18fa4cdd5ab2
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap11.json
@@ -0,0 +1,52 @@
+{
+    "swap11" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/swap11Filler.json",
+            "sourceHash" : "701ff096656063385777a56582f56ab24c54976934d14b7c5dd5bd7f3b85be23"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x600b600a60096008600760066005600460036002600160039a55",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013859",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600b600a60096008600760066005600460036002600160039a55",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x0b" : "0x01"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600b600a60096008600760066005600460036002600160039a55",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap12.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap12.json
new file mode 100644
index 0000000000000000000000000000000000000000..4b0f9cb187f9b81cce6addee2c23177a03f1a983
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap12.json
@@ -0,0 +1,52 @@
+{
+    "swap12" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/swap12Filler.json",
+            "sourceHash" : "c29bc2645f826a7aa91f3e1086bc1962d76c5cbb34ddc8e816b26a45d413d3ab"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x600c600b600a60096008600760066005600460036002600160039b55",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013856",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600c600b600a60096008600760066005600460036002600160039b55",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x0c" : "0x01"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600c600b600a60096008600760066005600460036002600160039b55",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap13.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap13.json
new file mode 100644
index 0000000000000000000000000000000000000000..acf4800e002179d338859b17af5f862b7de4248d
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap13.json
@@ -0,0 +1,52 @@
+{
+    "swap13" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/swap13Filler.json",
+            "sourceHash" : "7ac35225656e1a5eeea3fdc46501a8ba14175c8736f7eda814cac12357e6cab2"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x600d600c600b600a60096008600760066005600460036002600160039c55",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013853",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600d600c600b600a60096008600760066005600460036002600160039c55",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x0d" : "0x01"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600d600c600b600a60096008600760066005600460036002600160039c55",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap14.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap14.json
new file mode 100644
index 0000000000000000000000000000000000000000..9c6f3604df8118e02f430ec55b286ab2bcb5858b
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap14.json
@@ -0,0 +1,52 @@
+{
+    "swap14" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/swap14Filler.json",
+            "sourceHash" : "5df386c790b19a45d07bbf67f06ecf00a9edd97883f421f84c459388c74f8add"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x600e600d600c600b600a60096008600760066005600460036002600160039d55",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013850",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600e600d600c600b600a60096008600760066005600460036002600160039d55",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x0e" : "0x01"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600e600d600c600b600a60096008600760066005600460036002600160039d55",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap15.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap15.json
new file mode 100644
index 0000000000000000000000000000000000000000..51d657080aaa9574fb6b7e62131a1d296599f2bf
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap15.json
@@ -0,0 +1,52 @@
+{
+    "swap15" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/swap15Filler.json",
+            "sourceHash" : "6f6977d7e7f4b57787f5577b7d2179e8f4d3882293dcea6e868f1da471d3749f"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x600f600e600d600c600b600a60096008600760066005600460036002600160039e55",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01384d",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600f600e600d600c600b600a60096008600760066005600460036002600160039e55",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x0f" : "0x01"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600f600e600d600c600b600a60096008600760066005600460036002600160039e55",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap16.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap16.json
new file mode 100644
index 0000000000000000000000000000000000000000..ba324362e3de1299ed8680ac231112949ad4b372
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap16.json
@@ -0,0 +1,52 @@
+{
+    "swap16" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/swap16Filler.json",
+            "sourceHash" : "389d2be8dbbc4585847be9b5a678a565899d4fac6018d1f6200ed091e99ce7fd"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6010600f600e600d600c600b600a60096008600760066005600460036002600160039f55",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01384a",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6010600f600e600d600c600b600a60096008600760066005600460036002600160039f55",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x10" : "0x01"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6010600f600e600d600c600b600a60096008600760066005600460036002600160039f55",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap2.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap2.json
new file mode 100644
index 0000000000000000000000000000000000000000..9439e66f3c9c90c34c483033835e1bd4e01286d5
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap2.json
@@ -0,0 +1,52 @@
+{
+    "swap2" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/swap2Filler.json",
+            "sourceHash" : "75997b5204913e930c40cdf804c1be567f528b939529e86530e8c4cf3600af18"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6002600160039155",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013874",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6002600160039155",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x02" : "0x01"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6002600160039155",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap2error.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap2error.json
new file mode 100644
index 0000000000000000000000000000000000000000..067da5b54fb12bff063643ed079fbbf636a66559
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap2error.json
@@ -0,0 +1,37 @@
+{
+    "swap2error" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/swap2errorFiller.json",
+            "sourceHash" : "01ebb21f32f2d7dd1a2113138f594314c49fa4c7af00e0a1c333492b81921135"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x7f10112233445566778899aabbccddeeff00112233445566778899aabbccddeeff60039155",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x7f10112233445566778899aabbccddeeff00112233445566778899aabbccddeeff60039155",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap3.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap3.json
new file mode 100644
index 0000000000000000000000000000000000000000..563405c4087427348391601066051981e1dadf4b
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap3.json
@@ -0,0 +1,52 @@
+{
+    "swap3" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/swap3Filler.json",
+            "sourceHash" : "0d62cd3e39f052b9154ea37ec43cf9ba110035ffdcb4e4b0d766aea8bb2b2cb1"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60036002600160039255",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013871",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60036002600160039255",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x03" : "0x01"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60036002600160039255",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap4.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap4.json
new file mode 100644
index 0000000000000000000000000000000000000000..94a2cfbeb62efa71ddb26a3f5285cffa59d862bd
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap4.json
@@ -0,0 +1,52 @@
+{
+    "swap4" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/swap4Filler.json",
+            "sourceHash" : "27f78dcff6d58f67504046d267f0568c976d1e5a85ed6da2373eafa24bfbe47c"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x600460036002600160039355",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01386e",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600460036002600160039355",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x04" : "0x01"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600460036002600160039355",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap5.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap5.json
new file mode 100644
index 0000000000000000000000000000000000000000..4baed46b07fc905164ebfe59967d9cf191ed137a
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap5.json
@@ -0,0 +1,52 @@
+{
+    "swap5" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/swap5Filler.json",
+            "sourceHash" : "bcb9c8c7ac639affe784b6987c77d9249326db0799e1e861ad03641d9a77cef3"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6005600460036002600160039455",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01386b",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6005600460036002600160039455",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x05" : "0x01"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6005600460036002600160039455",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap6.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap6.json
new file mode 100644
index 0000000000000000000000000000000000000000..b902ebfa440c1ad5e3f206237fba62f81c588236
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap6.json
@@ -0,0 +1,52 @@
+{
+    "swap6" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/swap6Filler.json",
+            "sourceHash" : "1bc51662e33ac34a79297262ee86f8b8e7cab89949abf037fc22f85ee08fdada"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60066005600460036002600160039555",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013868",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60066005600460036002600160039555",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x06" : "0x01"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60066005600460036002600160039555",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap7.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap7.json
new file mode 100644
index 0000000000000000000000000000000000000000..4112086043d8dca23cc542f2fbb59b117c59f474
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap7.json
@@ -0,0 +1,52 @@
+{
+    "swap7" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/swap7Filler.json",
+            "sourceHash" : "8eaa2a76ec6d47d5bf7c4b49c8c1db384fe29355ced056e1c1330b1669f27b3c"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x600760066005600460036002600160039655",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013865",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600760066005600460036002600160039655",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x07" : "0x01"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600760066005600460036002600160039655",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap8.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap8.json
new file mode 100644
index 0000000000000000000000000000000000000000..0633609dcc7fc0f821bf231375b95002ccd6c560
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap8.json
@@ -0,0 +1,52 @@
+{
+    "swap8" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/swap8Filler.json",
+            "sourceHash" : "e7d09fcfe3e8e687d084b95524fd4ff5aedf69ee2797e33930e3e9fc45e57742"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6008600760066005600460036002600160039755",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013862",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6008600760066005600460036002600160039755",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x08" : "0x01"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6008600760066005600460036002600160039755",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap9.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap9.json
new file mode 100644
index 0000000000000000000000000000000000000000..049b962137d44fa7679ce51eee75913ea3ad6fd9
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap9.json
@@ -0,0 +1,52 @@
+{
+    "swap9" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/swap9Filler.json",
+            "sourceHash" : "f63ce540948be968c775c020f379e675d4a0f2a67cd6d22dff2490bf023ae796"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60096008600760066005600460036002600160039855",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01385f",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60096008600760066005600460036002600160039855",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x09" : "0x01"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x60096008600760066005600460036002600160039855",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swapjump1.json b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swapjump1.json
new file mode 100644
index 0000000000000000000000000000000000000000..b16174673c2fa1e4a95e4c37d8cdfb794d4e118f
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swapjump1.json
@@ -0,0 +1,51 @@
+{
+    "swapjump1" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++",
+            "source" : "src/VMTestsFiller/vmPushDupSwapTest/swapjump1Filler.json",
+            "sourceHash" : "33bdfa966236aac6be6a6a7ac64600ab63f3d6c646163f4c2f1ab1c578e0e819"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x0186a0",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmRandomTest/201503102320PYTHON.json b/tests/laser/evm_testsuite/VMTests/vmRandomTest/201503102320PYTHON.json
new file mode 100644
index 0000000000000000000000000000000000000000..b79202fb973f4c0acd0bec71509d81b24546b72b
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmRandomTest/201503102320PYTHON.json
@@ -0,0 +1,37 @@
+{
+    "201503102320PYTHON" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmRandomTest/201503102320PYTHONFiller.json",
+            "sourceHash" : "38aa9ba7f7836987852734619b0192d42434bd7106da17663d5fc85d81a1e6cf"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x012c",
+            "currentTimestamp" : "0x02"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x434342444244454597",
+            "data" : "0x",
+            "gas" : "0x2710",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x0de0b6b3a7640000",
+                "code" : "0x434342444244454597",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmRandomTest/201503110206PYTHON.json b/tests/laser/evm_testsuite/VMTests/vmRandomTest/201503110206PYTHON.json
new file mode 100644
index 0000000000000000000000000000000000000000..2bcf862152fa754149f73ab3160e61467cff99ce
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmRandomTest/201503110206PYTHON.json
@@ -0,0 +1,37 @@
+{
+    "201503110206PYTHON" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmRandomTest/201503110206PYTHONFiller.json",
+            "sourceHash" : "ad34ff6291ab537633ab5e7163537b24617cc4edb2f45eac65bed9d2c009cfc3"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x012c",
+            "currentTimestamp" : "0x02"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x4045404145454441343987ff3735043055",
+            "data" : "0x",
+            "gas" : "0x2710",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x0de0b6b3a7640000",
+                "code" : "0x4045404145454441343987ff3735043055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmRandomTest/201503110219PYTHON.json b/tests/laser/evm_testsuite/VMTests/vmRandomTest/201503110219PYTHON.json
new file mode 100644
index 0000000000000000000000000000000000000000..cfa0486324074954cb71b94f27b1d88600ac6985
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmRandomTest/201503110219PYTHON.json
@@ -0,0 +1,37 @@
+{
+    "201503110219PYTHON" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmRandomTest/201503110219PYTHONFiller.json",
+            "sourceHash" : "93dd23cbf213b07ac96a1fdfc826f41475452fea6da2e4f8d3f5d206e9a1adb9"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x012c",
+            "currentTimestamp" : "0x02"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x4040459143404144809759886d608f",
+            "data" : "0x",
+            "gas" : "0x2710",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x0de0b6b3a7640000",
+                "code" : "0x4040459143404144809759886d608f",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmRandomTest/201503110346PYTHON_PUSH24.json b/tests/laser/evm_testsuite/VMTests/vmRandomTest/201503110346PYTHON_PUSH24.json
new file mode 100644
index 0000000000000000000000000000000000000000..3283a003402b6b130d10d6c6dc10891a3c61dbb1
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmRandomTest/201503110346PYTHON_PUSH24.json
@@ -0,0 +1,51 @@
+{
+    "201503110346PYTHON_PUSH24" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmRandomTest/201503110346PYTHON_PUSH24Filler.json",
+            "sourceHash" : "953cb389f468c0d45697c57895679d7675ab43de963ad34a0ee547b8d27d10c8"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x012c",
+            "currentTimestamp" : "0x02"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x7745414245403745f31387900a8d55",
+            "data" : "0x",
+            "gas" : "0x2710",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x270d",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x0de0b6b3a7640000",
+                "code" : "0x7745414245403745f31387900a8d55",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x0de0b6b3a7640000",
+                "code" : "0x7745414245403745f31387900a8d55",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmRandomTest/201503111844PYTHON.json b/tests/laser/evm_testsuite/VMTests/vmRandomTest/201503111844PYTHON.json
new file mode 100644
index 0000000000000000000000000000000000000000..da88a5f7ecce499f287fbd1577a6a422395e36a4
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmRandomTest/201503111844PYTHON.json
@@ -0,0 +1,51 @@
+{
+    "201503111844PYTHON" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmRandomTest/201503111844PYTHONFiller.json",
+            "sourceHash" : "a8049871a173837bf8fbfab3352baf9bb9e33d0ffa2bd20ba6246a70d9c1b165"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x012c",
+            "currentTimestamp" : "0x02"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x65424555",
+            "data" : "0x",
+            "gas" : "0x2710",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x270d",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x0de0b6b3a7640000",
+                "code" : "0x65424555",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x0de0b6b3a7640000",
+                "code" : "0x65424555",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmRandomTest/201503112218PYTHON.json b/tests/laser/evm_testsuite/VMTests/vmRandomTest/201503112218PYTHON.json
new file mode 100644
index 0000000000000000000000000000000000000000..69c008e96cb1773fe5ccf3355223896367707cd8
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmRandomTest/201503112218PYTHON.json
@@ -0,0 +1,37 @@
+{
+    "201503112218PYTHON" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmRandomTest/201503112218PYTHONFiller.json",
+            "sourceHash" : "6fc205d30fd7493b6e120e18c91e1e41f6fe334b94abadbac37d2817066ebccb"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x012c",
+            "currentTimestamp" : "0x02"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x4041",
+            "data" : "0x",
+            "gas" : "0x2710",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x0de0b6b3a7640000",
+                "code" : "0x4041",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_0.json b/tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_0.json
new file mode 100644
index 0000000000000000000000000000000000000000..1bfb0c2f50ba5760e2128eb297fb9b34519880a9
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_0.json
@@ -0,0 +1,52 @@
+{
+    "sha3_0" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmSha3Test/sha3_0Filler.json",
+            "sourceHash" : "843009e4e97d7dd905578ea884db6d80c07f57d58679ec181dc761e1e51ae035"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6000600020600055",
+            "data" : "0x",
+            "gas" : "0x174876e800",
+            "gasPrice" : "0x3b9aca00",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x17487699b9",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6000600020600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6000600020600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_1.json b/tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_1.json
new file mode 100644
index 0000000000000000000000000000000000000000..0b2986d7b828a729d2e17a95a2a9393ccf58afca
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_1.json
@@ -0,0 +1,52 @@
+{
+    "sha3_1" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmSha3Test/sha3_1Filler.json",
+            "sourceHash" : "5f786aded76570c96466f5a4c4632a5a0b362ffc1e4124667cdb1e9328d1d81d"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6005600420600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013850",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6005600420600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0xc41589e7559804ea4a2080dad19d876a024ccb05117835447d72ce08c1d020ec"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6005600420600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_2.json b/tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_2.json
new file mode 100644
index 0000000000000000000000000000000000000000..b1e526affceedccdc6f2e30b484b0f30a71588f4
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_2.json
@@ -0,0 +1,52 @@
+{
+    "sha3_2" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmSha3Test/sha3_2Filler.json",
+            "sourceHash" : "bb3f59dc995c834eaf315b4819900c30ba4e97ef60163aed05946c70e841691f"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x600a600a20600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x013850",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600a600a20600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x6bd2dd6bd408cbee33429358bf24fdc64612fbf8b1b4db604518f40ffd34b607"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x600a600a20600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_3oog.json b/tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_3oog.json
new file mode 100644
index 0000000000000000000000000000000000000000..bf375559f3e2933bdd86204eead3d0165667e8d1
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_3oog.json
@@ -0,0 +1,37 @@
+{
+    "sha3_3oog" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmSha3Test/sha3_3Filler.json",
+            "sourceHash" : "1f474f7dac8971615e641354d809db332975d1ea5ca589d855fb02a1da559033"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x620fffff6103e820600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x620fffff6103e820600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_4oog.json b/tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_4oog.json
new file mode 100644
index 0000000000000000000000000000000000000000..80634b5780b239a3de07ad4eead1b360d80e5562
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_4oog.json
@@ -0,0 +1,37 @@
+{
+    "sha3_4oog" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmSha3Test/sha3_4Filler.json",
+            "sourceHash" : "100da75ff0b63159ca86aa4ef7457a956027af5c6c1ed1f0fa894aaa63849887"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6064640fffffffff20600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6064640fffffffff20600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_5oog.json b/tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_5oog.json
new file mode 100644
index 0000000000000000000000000000000000000000..b339bb658e9d3118e63fd945c6718bf76587c52f
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_5oog.json
@@ -0,0 +1,37 @@
+{
+    "sha3_5oog" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmSha3Test/sha3_5Filler.json",
+            "sourceHash" : "066bcf3a8e9e7b4c15ec2240c8e1bb0d53de0230c76989e21e4b6aaac83f577d"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x640fffffffff61271020600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x640fffffffff61271020600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_6oog.json b/tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_6oog.json
new file mode 100644
index 0000000000000000000000000000000000000000..1e75bd65c25289ae4928c8382286c3485f2f5b25
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_6oog.json
@@ -0,0 +1,37 @@
+{
+    "sha3_6oog" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmSha3Test/sha3_6Filler.json",
+            "sourceHash" : "c360c6583bf965674d153f11c243c1e0807e95e99bc9bcb684a7ad2c7155dd40"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff20600055",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff20600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_bigOffset2.json b/tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_bigOffset2.json
new file mode 100644
index 0000000000000000000000000000000000000000..d4f1b53f31143474d1d8627c21723e2a78555105
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_bigOffset2.json
@@ -0,0 +1,52 @@
+{
+    "sha3_bigOffset2" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmSha3Test/sha3_bigOffset2Filler.json",
+            "sourceHash" : "2bf8d14886b1001b266c29bd9f9e764f7e6965e851bfe1440e536735fca993dc"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6002630100000020600055",
+            "data" : "0x",
+            "gas" : "0x0100000000",
+            "gasPrice" : "0x01",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
+        },
+        "gas" : "0xdfe7a9b0",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+                "code" : "0x6002630100000020600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x54a8c0ab653c15bfb48b47fd011ba2b9617af01cb45cab344acd57c924d56798"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+                "code" : "0x6002630100000020600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_bigOffsetoog.json b/tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_bigOffsetoog.json
new file mode 100644
index 0000000000000000000000000000000000000000..ea45fe75e9bcf820682bef47d94dfee9bf917805
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_bigOffsetoog.json
@@ -0,0 +1,37 @@
+{
+    "sha3_bigOffsetoog" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmSha3Test/sha3_bigOffsetFiller.json",
+            "sourceHash" : "1ae2cdfa2e3ab1cac89d8b3d535c3ee50601ebc6098fdbddadca74980eec6382"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60027e0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff20600055",
+            "data" : "0x",
+            "gas" : "0x010000000000",
+            "gasPrice" : "0x01",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+                "code" : "0x60027e0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff20600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_bigSizeoog.json b/tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_bigSizeoog.json
new file mode 100644
index 0000000000000000000000000000000000000000..3f68f1099bee461e2b2e80a83c4712382fb47d83
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_bigSizeoog.json
@@ -0,0 +1,37 @@
+{
+    "sha3_bigSizeoog" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmSha3Test/sha3_bigSizeFiller.json",
+            "sourceHash" : "571bfd9a15c6b0e317f96a92f745aee1d800aa4486c1a101b3e016120ffb5415"
+        },
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff20600055",
+            "data" : "0x",
+            "gas" : "0x010000000000",
+            "gasPrice" : "0x01",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+                "code" : "0x7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff20600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_memSizeNoQuadraticCost31.json b/tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_memSizeNoQuadraticCost31.json
new file mode 100644
index 0000000000000000000000000000000000000000..8d6caa4a8a8bf58a2710bf41f3b26a9e3bf995fe
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_memSizeNoQuadraticCost31.json
@@ -0,0 +1,52 @@
+{
+    "sha3_memSizeNoQuadraticCost31" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmSha3Test/sha3_memSizeNoQuadraticCost31Filler.json",
+            "sourceHash" : "04553284981ef7338bdeac0e029652313a2643169833e386ca34bfa3d5e5942a"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60016103c020600055",
+            "data" : "0x",
+            "gas" : "0x0100000000",
+            "gasPrice" : "0x01",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
+        },
+        "gas" : "0xffffb155",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+                "code" : "0x60016103c020600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0xbc36789e7a1e281436464229828f817d6612f7b477d66591ff96a9e064bcc98a"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+                "code" : "0x60016103c020600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_memSizeQuadraticCost32.json b/tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_memSizeQuadraticCost32.json
new file mode 100644
index 0000000000000000000000000000000000000000..6374c1cc2cd216226334f906dec4f019fbed443b
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_memSizeQuadraticCost32.json
@@ -0,0 +1,52 @@
+{
+    "sha3_memSizeQuadraticCost32" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmSha3Test/sha3_memSizeQuadraticCost32Filler.json",
+            "sourceHash" : "70f68e0328222cc2c995bf932f2f8f65f5d4c7e9f040a51bbf4dae3cad9110cf"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60016103e020600055",
+            "data" : "0x",
+            "gas" : "0x0100000000",
+            "gasPrice" : "0x01",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
+        },
+        "gas" : "0xffffb151",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+                "code" : "0x60016103e020600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0xbc36789e7a1e281436464229828f817d6612f7b477d66591ff96a9e064bcc98a"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+                "code" : "0x60016103e020600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_memSizeQuadraticCost32_zeroSize.json b/tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_memSizeQuadraticCost32_zeroSize.json
new file mode 100644
index 0000000000000000000000000000000000000000..fb0c70dc9915bd8fd17b7109e366c9616d9b924e
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_memSizeQuadraticCost32_zeroSize.json
@@ -0,0 +1,52 @@
+{
+    "sha3_memSizeQuadraticCost32_zeroSize" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmSha3Test/sha3_memSizeQuadraticCost32_zeroSizeFiller.json",
+            "sourceHash" : "96094eee3e3fcd478fe3780ff053e64bf5391616bfdc6c2017bf12dcc5d30366"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x600061040020600055",
+            "data" : "0x",
+            "gas" : "0x0100000000",
+            "gasPrice" : "0x01",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
+        },
+        "gas" : "0xffffb1b9",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+                "code" : "0x600061040020600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+                "code" : "0x600061040020600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_memSizeQuadraticCost33.json b/tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_memSizeQuadraticCost33.json
new file mode 100644
index 0000000000000000000000000000000000000000..71034990e7cf7e61131c19017c11c8b7492f9c71
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_memSizeQuadraticCost33.json
@@ -0,0 +1,52 @@
+{
+    "sha3_memSizeQuadraticCost33" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmSha3Test/sha3_memSizeQuadraticCost33Filler.json",
+            "sourceHash" : "2fc9e00a7759c4271b6897b285ae437f6484281e9113e82a8252afbe16e85841"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x600161040020600055",
+            "data" : "0x",
+            "gas" : "0x0100000000",
+            "gasPrice" : "0x01",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
+        },
+        "gas" : "0xffffb14e",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+                "code" : "0x600161040020600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0xbc36789e7a1e281436464229828f817d6612f7b477d66591ff96a9e064bcc98a"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+                "code" : "0x600161040020600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_memSizeQuadraticCost63.json b/tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_memSizeQuadraticCost63.json
new file mode 100644
index 0000000000000000000000000000000000000000..a32d5cdd66b7d645984d9cb6fde7236e81e84d8a
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_memSizeQuadraticCost63.json
@@ -0,0 +1,52 @@
+{
+    "sha3_memSizeQuadraticCost63" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmSha3Test/sha3_memSizeQuadraticCost63Filler.json",
+            "sourceHash" : "b81dd9fc94929d24f6a06dac81abb0099b969086ecf83326ecb4d6c98fc36f39"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60016107c020600055",
+            "data" : "0x",
+            "gas" : "0x0100000000",
+            "gasPrice" : "0x01",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
+        },
+        "gas" : "0xffffb0ef",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+                "code" : "0x60016107c020600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0xbc36789e7a1e281436464229828f817d6612f7b477d66591ff96a9e064bcc98a"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+                "code" : "0x60016107c020600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_memSizeQuadraticCost64.json b/tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_memSizeQuadraticCost64.json
new file mode 100644
index 0000000000000000000000000000000000000000..d9ea26cc9b08ab3ae0f1b5f207d2e40babced9b3
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_memSizeQuadraticCost64.json
@@ -0,0 +1,52 @@
+{
+    "sha3_memSizeQuadraticCost64" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmSha3Test/sha3_memSizeQuadraticCost64Filler.json",
+            "sourceHash" : "9f1ae20cc7b481e84732b835af1d284c815d79a470ceb1094f0cf9e765a64b8d"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60016107e020600055",
+            "data" : "0x",
+            "gas" : "0x0100000000",
+            "gasPrice" : "0x01",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
+        },
+        "gas" : "0xffffb0eb",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+                "code" : "0x60016107e020600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0xbc36789e7a1e281436464229828f817d6612f7b477d66591ff96a9e064bcc98a"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+                "code" : "0x60016107e020600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_memSizeQuadraticCost64_2.json b/tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_memSizeQuadraticCost64_2.json
new file mode 100644
index 0000000000000000000000000000000000000000..b7dc0bc390a807f2fdf337a57812ae958e7212e2
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_memSizeQuadraticCost64_2.json
@@ -0,0 +1,52 @@
+{
+    "sha3_memSizeQuadraticCost64_2" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmSha3Test/sha3_memSizeQuadraticCost64_2Filler.json",
+            "sourceHash" : "4d313aaddd74f092eae5089cce1aef3aadc74b019f617fdf24acedd8fb26300b"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x60206107e020600055",
+            "data" : "0x",
+            "gas" : "0x0100000000",
+            "gasPrice" : "0x01",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
+        },
+        "gas" : "0xffffb0eb",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+                "code" : "0x60206107e020600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+                "code" : "0x60206107e020600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_memSizeQuadraticCost65.json b/tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_memSizeQuadraticCost65.json
new file mode 100644
index 0000000000000000000000000000000000000000..733a177699026678a7ce228be7162b507e25758e
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_memSizeQuadraticCost65.json
@@ -0,0 +1,52 @@
+{
+    "sha3_memSizeQuadraticCost65" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
+            "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+            "source" : "src/VMTestsFiller/vmSha3Test/sha3_memSizeQuadraticCost65Filler.json",
+            "sourceHash" : "28d6ebfb32dd2c00c629fe373fe58fd83466484d6022cd476ca63981ffaa950a"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x600161080020600055",
+            "data" : "0x",
+            "gas" : "0x0100000000",
+            "gasPrice" : "0x01",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
+        },
+        "gas" : "0xffffb0e8",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+                "code" : "0x600161080020600055",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0xbc36789e7a1e281436464229828f817d6612f7b477d66591ff96a9e064bcc98a"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+                "code" : "0x600161080020600055",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmSystemOperations/TestNameRegistrator.json b/tests/laser/evm_testsuite/VMTests/vmSystemOperations/TestNameRegistrator.json
new file mode 100644
index 0000000000000000000000000000000000000000..058fa0e59f5a8f1b0ee6584b6eede054847a138b
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmSystemOperations/TestNameRegistrator.json
@@ -0,0 +1,52 @@
+{
+    "TestNameRegistrator" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmSystemOperations/TestNameRegistratorFiller.json",
+            "sourceHash" : "7e0e4bcbcbe8bcaf9a8535e65d4c6665db752910953b5eafc63da8f7cdff20b7"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x6000355415600957005b60203560003555",
+            "data" : "0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffafffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01382b",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6000355415600957005b60203560003555",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa" : "0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa"
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x6000355415600957005b60203560003555",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmSystemOperations/return0.json b/tests/laser/evm_testsuite/VMTests/vmSystemOperations/return0.json
new file mode 100644
index 0000000000000000000000000000000000000000..eb51c4f7c1db1cab5fdaf933979a9ea5e89388f5
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmSystemOperations/return0.json
@@ -0,0 +1,52 @@
+{
+    "return0" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmSystemOperations/return0Filler.json",
+            "sourceHash" : "1cd2b9480f1f5bdd82e8026b6342008ef84d318c3f9f173eae7d09e50eaf26b3"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x989680",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "caller" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "code" : "0x603760005360005160005560016000f3",
+            "data" : "0xaa",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "value" : "0x17"
+        },
+        "gas" : "0x013865",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x37",
+        "post" : {
+            "0xcd1722f3947def4cf144679da39c4c32bdc35681" : {
+                "balance" : "0x17",
+                "code" : "0x603760005360005160005560016000f3",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x3700000000000000000000000000000000000000000000000000000000000000"
+                }
+            }
+        },
+        "pre" : {
+            "0xcd1722f3947def4cf144679da39c4c32bdc35681" : {
+                "balance" : "0x17",
+                "code" : "0x603760005360005160005560016000f3",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmSystemOperations/return1.json b/tests/laser/evm_testsuite/VMTests/vmSystemOperations/return1.json
new file mode 100644
index 0000000000000000000000000000000000000000..080518492d968eb3a13f64f5b3e8ef8c112fdf02
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmSystemOperations/return1.json
@@ -0,0 +1,52 @@
+{
+    "return1" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmSystemOperations/return1Filler.json",
+            "sourceHash" : "5cd716a8e8d460b10e0dc1b3d5b6394f0c388e0e36246bf124478b0cb86a1f76"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x989680",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "caller" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "code" : "0x603760005360005160005560026000f3",
+            "data" : "0xaa",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "value" : "0x17"
+        },
+        "gas" : "0x013865",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x3700",
+        "post" : {
+            "0xcd1722f3947def4cf144679da39c4c32bdc35681" : {
+                "balance" : "0x17",
+                "code" : "0x603760005360005160005560026000f3",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x3700000000000000000000000000000000000000000000000000000000000000"
+                }
+            }
+        },
+        "pre" : {
+            "0xcd1722f3947def4cf144679da39c4c32bdc35681" : {
+                "balance" : "0x17",
+                "code" : "0x603760005360005160005560026000f3",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmSystemOperations/return2.json b/tests/laser/evm_testsuite/VMTests/vmSystemOperations/return2.json
new file mode 100644
index 0000000000000000000000000000000000000000..d1103b4f3e7d1cf24b31e6eb0cc227c5389b2ee6
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmSystemOperations/return2.json
@@ -0,0 +1,52 @@
+{
+    "return2" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmSystemOperations/return2Filler.json",
+            "sourceHash" : "4181cbf262c1dc2cdc186e007ec6c13466bd031b190b07874b1177a00717deeb"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x989680",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "caller" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "code" : "0x603760005360005160005560216000f3",
+            "data" : "0xaa",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "value" : "0x17"
+        },
+        "gas" : "0x013862",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x370000000000000000000000000000000000000000000000000000000000000000",
+        "post" : {
+            "0xcd1722f3947def4cf144679da39c4c32bdc35681" : {
+                "balance" : "0x17",
+                "code" : "0x603760005360005160005560216000f3",
+                "nonce" : "0x00",
+                "storage" : {
+                    "0x00" : "0x3700000000000000000000000000000000000000000000000000000000000000"
+                }
+            }
+        },
+        "pre" : {
+            "0xcd1722f3947def4cf144679da39c4c32bdc35681" : {
+                "balance" : "0x17",
+                "code" : "0x603760005360005160005560216000f3",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/VMTests/vmSystemOperations/suicide0.json b/tests/laser/evm_testsuite/VMTests/vmSystemOperations/suicide0.json
new file mode 100644
index 0000000000000000000000000000000000000000..456a7c1640c596672c1d7a5ebfc495b2985c62cf
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmSystemOperations/suicide0.json
@@ -0,0 +1,58 @@
+{
+    "suicide0" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmSystemOperations/suicide0Filler.json",
+            "sourceHash" : "56c8766e8a1687dfe807b1e8f2d0454267f432c7e3035ff5fa9c27a2d594739d"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x989680",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x33ff",
+            "data" : "0x",
+            "gas" : "0x03e8",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0186a0"
+        },
+        "gas" : "0x03e6",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0xcd1722f3947def4cf144679da39c4c32bdc35681" : {
+                "balance" : "0x152d02c7e14af6800017",
+                "code" : "0x6000355415600957005b60203560003555",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x33ff",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            },
+            "0xcd1722f3947def4cf144679da39c4c32bdc35681" : {
+                "balance" : "0x0186a0",
+                "code" : "0x6000355415600957005b60203560003555",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmSystemOperations/suicideNotExistingAccount.json b/tests/laser/evm_testsuite/VMTests/vmSystemOperations/suicideNotExistingAccount.json
new file mode 100644
index 0000000000000000000000000000000000000000..b72d6bcc4e0b57050641a839c255fb05a84c629e
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmSystemOperations/suicideNotExistingAccount.json
@@ -0,0 +1,65 @@
+{
+    "suicideNotExistingAccount" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmSystemOperations/suicideNotExistingAccountFiller.json",
+            "sourceHash" : "ba450a40efb62a9fb6e16e3bced0afde8d0b08b9c0f78979f35fc45b9de72816"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x989680",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x73aa1722f3947def4cf144679da39c4c32bdc35681ff",
+            "data" : "0x",
+            "gas" : "0x03e8",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0186a0"
+        },
+        "gas" : "0x03e5",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0xaa1722f3947def4cf144679da39c4c32bdc35681" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            },
+            "0xcd1722f3947def4cf144679da39c4c32bdc35681" : {
+                "balance" : "0x17",
+                "code" : "0x6000355415600957005b60203560003555",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x73aa1722f3947def4cf144679da39c4c32bdc35681ff",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            },
+            "0xcd1722f3947def4cf144679da39c4c32bdc35681" : {
+                "balance" : "0x0186a0",
+                "code" : "0x6000355415600957005b60203560003555",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmSystemOperations/suicideSendEtherToMe.json b/tests/laser/evm_testsuite/VMTests/vmSystemOperations/suicideSendEtherToMe.json
new file mode 100644
index 0000000000000000000000000000000000000000..f27557ed9f817be10fa98ac0a1688a09ac17dae2
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmSystemOperations/suicideSendEtherToMe.json
@@ -0,0 +1,58 @@
+{
+    "suicideSendEtherToMe" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmSystemOperations/suicideSendEtherToMeFiller.json",
+            "sourceHash" : "0cf005812e9c99dc87bdd8463a9849a0164a9e02b3d09eaab228267d6c8c703e"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x989680",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x30ff",
+            "data" : "0x",
+            "gas" : "0x03e8",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0186a0"
+        },
+        "gas" : "0x03e6",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0xcd1722f3947def4cf144679da39c4c32bdc35681" : {
+                "balance" : "0x17",
+                "code" : "0x6000355415600957005b60203560003555",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x30ff",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            },
+            "0xcd1722f3947def4cf144679da39c4c32bdc35681" : {
+                "balance" : "0x0186a0",
+                "code" : "0x6000355415600957005b60203560003555",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
diff --git a/tests/laser/evm_testsuite/VMTests/vmTests/suicide.json b/tests/laser/evm_testsuite/VMTests/vmTests/suicide.json
new file mode 100644
index 0000000000000000000000000000000000000000..d815ceb8a550d0f51b02273707bf954fdab891e3
--- /dev/null
+++ b/tests/laser/evm_testsuite/VMTests/vmTests/suicide.json
@@ -0,0 +1,51 @@
+{
+    "suicide" : {
+        "_info" : {
+            "comment" : "",
+            "filledwith" : "testeth 1.5.0.dev2-52+commit.d419e0a2",
+            "lllcversion" : "Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++",
+            "source" : "src/VMTestsFiller/vmTests/suicideFiller.json",
+            "sourceHash" : "4622c577440f9db4b3954a1de60bf2fac55886dcb0ec4ecaf906c25bc77372e7"
+        },
+        "callcreates" : [
+        ],
+        "env" : {
+            "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
+            "currentDifficulty" : "0x0100",
+            "currentGasLimit" : "0x0f4240",
+            "currentNumber" : "0x00",
+            "currentTimestamp" : "0x01"
+        },
+        "exec" : {
+            "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
+            "caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "code" : "0x33ff",
+            "data" : "0x",
+            "gas" : "0x0186a0",
+            "gasPrice" : "0x5af3107a4000",
+            "origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
+            "value" : "0x0de0b6b3a7640000"
+        },
+        "gas" : "0x01869e",
+        "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+        "out" : "0x",
+        "post" : {
+            "0xcd1722f3947def4cf144679da39c4c32bdc35681" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        },
+        "pre" : {
+            "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+                "balance" : "0x152d02c7e14af6800000",
+                "code" : "0x33ff",
+                "nonce" : "0x00",
+                "storage" : {
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/laser/evm_testsuite/evm_test.py b/tests/laser/evm_testsuite/evm_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..e38eb237f4c61925f1e6c0be4cde3fcd2ac40420
--- /dev/null
+++ b/tests/laser/evm_testsuite/evm_test.py
@@ -0,0 +1,189 @@
+from mythril.laser.ethereum.svm import LaserEVM
+from mythril.laser.ethereum.state.account import Account
+from mythril.laser.ethereum.state.world_state import WorldState
+from mythril.laser.ethereum.time_handler import time_handler
+from mythril.laser.ethereum.function_managers import keccak_function_manager
+from mythril.disassembler.disassembly import Disassembly
+from mythril.laser.ethereum.transaction.concolic import execute_message_call
+from mythril.laser.smt import Expression, BitVec, symbol_factory
+from mythril.support.support_args import args
+from datetime import datetime
+
+import binascii
+import json
+import os
+from pathlib import Path
+import pytest
+from z3 import ExprRef, simplify
+
+evm_test_dir = Path(__file__).parent / "VMTests"
+
+
+test_types = [
+    "vmArithmeticTest",
+    "vmBitwiseLogicOperation",
+    "vmEnvironmentalInfo",
+    "vmPushDupSwapTest",
+    "vmTests",
+    "vmSha3Test",
+    "vmSystemOperations",
+    "vmRandomTest",
+    "vmIOandFlowOperations",
+]
+
+tests_with_gas_support = ["gas0", "gas1"]
+tests_with_block_number_support = [
+    "BlockNumberDynamicJumpi0",
+    "BlockNumberDynamicJumpi1",
+    "BlockNumberDynamicJump0_jumpdest2",
+    "DynamicJumpPathologicalTest0",
+    "BlockNumberDynamicJumpifInsidePushWithJumpDest",
+    "BlockNumberDynamicJumpiAfterStop",
+    "BlockNumberDynamicJumpifInsidePushWithoutJumpDest",
+    "BlockNumberDynamicJump0_jumpdest0",
+    "BlockNumberDynamicJumpi1_jumpdest",
+    "BlockNumberDynamicJumpiOutsideBoundary",
+    "DynamicJumpJD_DependsOnJumps1",
+]
+tests_with_log_support = ["log1MemExp"]
+tests_not_relevent = [
+    "loop_stacklimit_1020",  # We won't be looping till 1020 as we have a max_depth
+    "loop_stacklimit_1021",
+]
+tests_to_resolve = ["jumpTo1InstructionafterJump", "sstore_load_2", "jumpi_at_the_end"]
+ignored_test_names = (
+    tests_with_gas_support
+    + tests_with_log_support
+    + tests_with_block_number_support
+    + tests_with_block_number_support
+    + tests_not_relevent
+    + tests_to_resolve
+)
+
+
+def load_test_data(designations):
+    """
+
+    :param designations:
+    :return:
+    """
+    return_data = []
+    for designation in designations:
+        for file_reference in (evm_test_dir / designation).iterdir():
+
+            with file_reference.open() as file:
+                top_level = json.load(file)
+
+                for test_name, data in top_level.items():
+                    pre_condition = data["pre"]
+
+                    action = data["exec"]
+                    gas_before = int(action["gas"], 16)
+                    gas_after = data.get("gas")
+                    gas_used = (
+                        gas_before - int(gas_after, 16)
+                        if gas_after is not None
+                        else None
+                    )
+
+                    post_condition = data.get("post", {})
+                    environment = data.get("env")
+
+                    return_data.append(
+                        (
+                            test_name,
+                            environment,
+                            pre_condition,
+                            action,
+                            gas_used,
+                            post_condition,
+                        )
+                    )
+
+    return return_data
+
+
+@pytest.mark.parametrize(
+    "test_name, environment, pre_condition, action, gas_used, post_condition",
+    load_test_data(test_types),
+)
+def test_vmtest(
+    test_name: str,
+    environment: dict,
+    pre_condition: dict,
+    action: dict,
+    gas_used: int,
+    post_condition: dict,
+) -> None:
+
+    # Arrange
+    if test_name in ignored_test_names:
+        return
+    world_state = WorldState()
+    args.unconstrained_storage = False
+    for address, details in pre_condition.items():
+        account = Account(address, concrete_storage=True)
+        account.code = Disassembly(details["code"][2:])
+        account.nonce = int(details["nonce"], 16)
+        for key, value in details["storage"].items():
+            key_bitvec = symbol_factory.BitVecVal(int(key, 16), 256)
+            account.storage[key_bitvec] = symbol_factory.BitVecVal(int(value, 16), 256)
+
+        world_state.put_account(account)
+        account.set_balance(int(details["balance"], 16))
+
+    time_handler.start_execution(10000)
+    laser_evm = LaserEVM()
+    laser_evm.open_states = [world_state]
+    # Act
+    laser_evm.time = datetime.now()
+
+    final_states = execute_message_call(
+        laser_evm,
+        callee_address=symbol_factory.BitVecVal(int(action["address"], 16), 256),
+        caller_address=symbol_factory.BitVecVal(int(action["caller"], 16), 256),
+        origin_address=symbol_factory.BitVecVal(int(action["origin"], 16), 256),
+        code=action["code"][2:],
+        gas_limit=int(action["gas"], 16),
+        data=binascii.a2b_hex(action["data"][2:]),
+        gas_price=int(action["gasPrice"], 16),
+        value=int(action["value"], 16),
+        track_gas=True,
+    )
+
+    # Assert
+    if gas_used is not None and gas_used < int(environment["currentGasLimit"], 16):
+        # avoid gas usage larger than block gas limit
+        # this currently exceeds our estimations
+        gas_min_max = [
+            (s.mstate.min_gas_used, s.mstate.max_gas_used) for s in final_states
+        ]
+        gas_ranges = [g[0] <= gas_used for g in gas_min_max]
+        assert all(map(lambda g: g[0] <= g[1], gas_min_max))
+        assert any(gas_ranges)
+
+    if post_condition == {}:
+        # no more work to do if error happens or out of gas
+        assert len(laser_evm.open_states) == 0
+    else:
+        assert len(laser_evm.open_states) == 1
+        world_state = laser_evm.open_states[0]
+
+        for address, details in post_condition.items():
+            account = world_state[symbol_factory.BitVecVal(int(address, 16), 256)]
+
+            assert account.nonce == int(details["nonce"], 16)
+            assert account.code.bytecode == details["code"][2:]
+
+            for index, value in details["storage"].items():
+                expected = int(value, 16)
+                actual = account.storage[symbol_factory.BitVecVal(int(index, 16), 256)]
+                if isinstance(actual, Expression):
+                    actual = actual.value
+                    actual = 1 if actual is True else 0 if actual is False else actual
+                else:
+                    if isinstance(actual, bytes):
+                        actual = int(binascii.b2a_hex(actual), 16)
+                    elif isinstance(actual, str):
+                        actual = int(actual, 16)
+                assert actual == expected
diff --git a/tests/laser/keccak_tests.py b/tests/laser/keccak_tests.py
new file mode 100644
index 0000000000000000000000000000000000000000..6dabc37a365ac267d6c270d466ca61bcaad4066b
--- /dev/null
+++ b/tests/laser/keccak_tests.py
@@ -0,0 +1,145 @@
+from mythril.laser.smt import Solver, symbol_factory, And
+from mythril.laser.ethereum.function_managers import keccak_function_manager
+import z3
+import pytest
+
+
+@pytest.mark.parametrize(
+    "input1, input2, expected",
+    [
+        (symbol_factory.BitVecVal(100, 8), symbol_factory.BitVecVal(101, 8), z3.unsat),
+        (symbol_factory.BitVecVal(100, 8), symbol_factory.BitVecVal(100, 16), z3.unsat),
+        (symbol_factory.BitVecVal(100, 8), symbol_factory.BitVecVal(100, 8), z3.sat),
+        (
+            symbol_factory.BitVecSym("N1", 256),
+            symbol_factory.BitVecSym("N2", 256),
+            z3.sat,
+        ),
+        (
+            symbol_factory.BitVecVal(100, 256),
+            symbol_factory.BitVecSym("N1", 256),
+            z3.sat,
+        ),
+        (
+            symbol_factory.BitVecVal(100, 8),
+            symbol_factory.BitVecSym("N1", 256),
+            z3.unsat,
+        ),
+    ],
+)
+def test_keccak_basic(input1, input2, expected):
+    s = Solver()
+    keccak_function_manager.reset()
+    o1 = keccak_function_manager.create_keccak(input1)
+    o2 = keccak_function_manager.create_keccak(input2)
+    s.add(keccak_function_manager.create_conditions())
+
+    s.add(o1 == o2)
+    assert s.check() == expected
+
+
+def test_keccak_symbol_and_val():
+    """
+    check keccak(100) == keccak(n) && n == 10
+    :return:
+    """
+    s = Solver()
+    keccak_function_manager.reset()
+    hundred = symbol_factory.BitVecVal(100, 256)
+    n = symbol_factory.BitVecSym("n", 256)
+    o1 = keccak_function_manager.create_keccak(hundred)
+    o2 = keccak_function_manager.create_keccak(n)
+
+    s.add(keccak_function_manager.create_conditions())
+    s.add(o1 == o2)
+    s.add(n == symbol_factory.BitVecVal(10, 256))
+    assert s.check() == z3.unsat
+
+
+def test_keccak_complex_eq():
+    """
+    check for keccak(keccak(b)*2) == keccak(keccak(a)*2) && a != b
+    :return:
+    """
+    keccak_function_manager.reset()
+    s = Solver()
+    a = symbol_factory.BitVecSym("a", 160)
+    b = symbol_factory.BitVecSym("b", 160)
+    o1 = keccak_function_manager.create_keccak(a)
+    o2 = keccak_function_manager.create_keccak(b)
+
+    two = symbol_factory.BitVecVal(2, 256)
+    o1 = two * o1
+    o2 = two * o2
+    o1 = keccak_function_manager.create_keccak(o1)
+    o2 = keccak_function_manager.create_keccak(o2)
+
+    s.add(keccak_function_manager.create_conditions())
+    s.add(o1 == o2)
+    s.add(a != b)
+
+    assert s.check() == z3.unsat
+
+
+def test_keccak_complex_eq2():
+    """
+    check for keccak(keccak(b)*2) == keccak(keccak(a)*2)
+    This isn't combined with prev test because incremental solving here requires extra-extra work
+    (solution is literally the opposite of prev one) so it will take forever to solve.
+    :return:
+    """
+    keccak_function_manager.reset()
+    s = Solver()
+    a = symbol_factory.BitVecSym("a", 160)
+    b = symbol_factory.BitVecSym("b", 160)
+    o1 = keccak_function_manager.create_keccak(a)
+    o2 = keccak_function_manager.create_keccak(b)
+
+    two = symbol_factory.BitVecVal(2, 256)
+    o1 = two * o1
+    o2 = two * o2
+    o1 = keccak_function_manager.create_keccak(o1)
+    o2 = keccak_function_manager.create_keccak(o2)
+
+    s.add(keccak_function_manager.create_conditions())
+    s.add(o1 == o2)
+
+    assert s.check() == z3.sat
+
+
+def test_keccak_simple_number():
+    """
+    check for keccak(b) == 10
+    :return:
+    """
+    keccak_function_manager.reset()
+    s = Solver()
+    a = symbol_factory.BitVecSym("a", 160)
+    ten = symbol_factory.BitVecVal(10, 256)
+    o = keccak_function_manager.create_keccak(a)
+
+    s.add(keccak_function_manager.create_conditions())
+    s.add(ten == o)
+
+    assert s.check() == z3.unsat
+
+
+def test_keccak_other_num():
+    """
+    check keccak(keccak(a)*2) == b
+    :return:
+    """
+    keccak_function_manager.reset()
+    s = Solver()
+    a = symbol_factory.BitVecSym("a", 160)
+    b = symbol_factory.BitVecSym("b", 256)
+    o = keccak_function_manager.create_keccak(a)
+    two = symbol_factory.BitVecVal(2, 256)
+    o = two * o
+
+    o = keccak_function_manager.create_keccak(o)
+
+    s.add(keccak_function_manager.create_conditions())
+    s.add(b == o)
+
+    assert s.check() == z3.sat
diff --git a/tests/laser/smt/__init__.py b/tests/laser/smt/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/tests/laser/smt/independece_solver_test.py b/tests/laser/smt/independece_solver_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..27288752afced9f60808f81340b631a914fee380
--- /dev/null
+++ b/tests/laser/smt/independece_solver_test.py
@@ -0,0 +1,145 @@
+from mythril.laser.smt.solver.independence_solver import (
+    _get_expr_variables,
+    DependenceBucket,
+    DependenceMap,
+    IndependenceSolver,
+)
+from mythril.laser.smt import symbol_factory
+
+import z3
+
+
+def test_get_expr_variables():
+    # Arrange
+    x = z3.Bool("x")
+    y = z3.BitVec("y", 256)
+    z = z3.BitVec("z", 256)
+    b = z3.BitVec("b", 256)
+    expression = z3.If(x, y, z + b)
+
+    # Act
+    variables = list(map(str, _get_expr_variables(expression)))
+
+    # Assert
+    assert str(x) in variables
+    assert str(y) in variables
+    assert str(z) in variables
+    assert str(b) in variables
+
+
+def test_get_expr_variables_num():
+    # Arrange
+    b = z3.BitVec("b", 256)
+    expression = b + z3.BitVecVal(2, 256)
+
+    # Act
+    variables = _get_expr_variables(expression)
+
+    # Assert
+    assert [b] == variables
+
+
+def test_create_bucket():
+    # Arrange
+    x = z3.Bool("x")
+
+    # Act
+    bucket = DependenceBucket([x], [x])
+
+    # Assert
+    assert [x] == bucket.variables
+    assert [x] == bucket.conditions
+
+
+def test_dependence_map():
+    # Arrange
+    x = z3.BitVec("x", 256)
+    y = z3.BitVec("y", 256)
+    z = z3.BitVec("z", 256)
+    a = z3.BitVec("a", 256)
+    b = z3.BitVec("b", 256)
+
+    conditions = [x > y, y == z, a == b]
+
+    dependence_map = DependenceMap()
+
+    # Act
+    for condition in conditions:
+        dependence_map.add_condition(condition)
+
+    # Assert
+    assert 2 == len(dependence_map.buckets)
+
+    assert x in dependence_map.buckets[0].variables
+    assert y in dependence_map.buckets[0].variables
+    assert z in dependence_map.buckets[0].variables
+    assert len(set(dependence_map.buckets[0].variables)) == 3
+
+    assert conditions[0] in dependence_map.buckets[0].conditions
+    assert conditions[1] in dependence_map.buckets[0].conditions
+
+    assert a in dependence_map.buckets[1].variables
+    assert b in dependence_map.buckets[1].variables
+    assert len(set(dependence_map.buckets[1].variables)) == 2
+
+    assert conditions[2] in dependence_map.buckets[1].conditions
+
+
+def test_Independence_solver_unsat():
+    # Arrange
+    x = symbol_factory.BitVecSym("x", 256)
+    y = symbol_factory.BitVecSym("y", 256)
+    z = symbol_factory.BitVecSym("z", 256)
+    a = symbol_factory.BitVecSym("a", 256)
+    b = symbol_factory.BitVecSym("b", 256)
+
+    conditions = [x > y, y == z, y != z, a == b]
+
+    solver = IndependenceSolver()
+
+    # Act
+    solver.add(*conditions)
+    result = solver.check()
+
+    # Assert
+    assert z3.unsat == result
+
+
+def test_independence_solver_unsat_in_second_bucket():
+    # Arrange
+    x = symbol_factory.BitVecSym("x", 256)
+    y = symbol_factory.BitVecSym("y", 256)
+    z = symbol_factory.BitVecSym("z", 256)
+    a = symbol_factory.BitVecSym("a", 256)
+    b = symbol_factory.BitVecSym("b", 256)
+
+    conditions = [x > y, y == z, a == b, a != b]
+
+    solver = IndependenceSolver()
+
+    # Act
+    solver.add(*conditions)
+    result = solver.check()
+
+    # Assert
+    assert z3.unsat == result
+
+
+def test_independence_solver_sat():
+    # Arrange
+    x = symbol_factory.BitVecSym("x", 256)
+    y = symbol_factory.BitVecSym("y", 256)
+    z = symbol_factory.BitVecSym("z", 256)
+    a = symbol_factory.BitVecSym("a", 256)
+    b = symbol_factory.BitVecSym("b", 256)
+
+    conditions = [x > y, y == z, a == b]
+
+    solver = IndependenceSolver()
+
+    # Act
+    solver.add(*conditions)
+    result = solver.check()
+
+    # Assert
+    assert z3.sat == result
diff --git a/tests/laser/smt/model_test.py b/tests/laser/smt/model_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..7f9ae1d366bb7af5de142c0de11674e9ee917439
--- /dev/null
+++ b/tests/laser/smt/model_test.py
@@ -0,0 +1,56 @@
+from mythril.laser.smt import Solver, symbol_factory
+import z3
+
+
+def test_decls():
+    # Arrange
+    solver = Solver()
+    x = symbol_factory.BitVecSym("x", 256)
+    expression = x == symbol_factory.BitVecVal(2, 256)
+
+    # Act
+    solver.add(expression)
+    result = solver.check()
+    model = solver.model()
+
+    decls = model.decls()
+
+    # Assert
+    assert z3.sat == result
+    assert x.raw.decl() in decls
+
+
+def test_get_item():
+    # Arrange
+    solver = Solver()
+    x = symbol_factory.BitVecSym("x", 256)
+    expression = x == symbol_factory.BitVecVal(2, 256)
+
+    # Act
+    solver.add(expression)
+    result = solver.check()
+    model = solver.model()
+
+    x_concrete = model[x.raw.decl()]
+
+    # Assert
+    assert z3.sat == result
+    assert 2 == x_concrete
+
+
+def test_as_long():
+    # Arrange
+    solver = Solver()
+    x = symbol_factory.BitVecSym("x", 256)
+    expression = x == symbol_factory.BitVecVal(2, 256)
+
+    # Act
+    solver.add(expression)
+    result = solver.check()
+    model = solver.model()
+
+    x_concrete = model.eval(x.raw).as_long()
+
+    # Assert
+    assert z3.sat == result
+    assert 2 == x_concrete
diff --git a/tests/laser/state/__init__.py b/tests/laser/state/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/tests/laser/state/calldata_test.py b/tests/laser/state/calldata_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..46c28585ab0740ce5be171507f261458873c79b9
--- /dev/null
+++ b/tests/laser/state/calldata_test.py
@@ -0,0 +1,91 @@
+import pytest
+from mythril.laser.ethereum.state.calldata import ConcreteCalldata, SymbolicCalldata
+from mythril.laser.smt import Solver, symbol_factory
+from z3 import sat, unsat
+from z3.z3types import Z3Exception
+from mock import MagicMock
+
+uninitialized_test_data = [
+    ([]),  # Empty concrete calldata
+    ([1, 4, 5, 3, 4, 72, 230, 53]),  # Concrete calldata
+]
+
+
+@pytest.mark.parametrize("starting_calldata", uninitialized_test_data)
+def test_concrete_calldata_uninitialized_index(starting_calldata):
+    # Arrange
+    calldata = ConcreteCalldata(0, starting_calldata)
+
+    # Act
+    value = calldata[100]
+    value2 = calldata.get_word_at(200)
+
+    # Assert
+    assert value == 0
+    assert value2 == 0
+
+
+def test_concrete_calldata_calldatasize():
+    # Arrange
+    calldata = ConcreteCalldata(0, [1, 4, 7, 3, 7, 2, 9])
+    solver = Solver()
+
+    # Act
+    solver.check()
+    model = solver.model()
+    result = model.eval(calldata.calldatasize.raw)
+
+    # Assert
+    assert result == 7
+
+
+def test_concrete_calldata_constrain_index():
+    # Arrange
+    calldata = ConcreteCalldata(0, [1, 4, 7, 3, 7, 2, 9])
+    solver = Solver()
+
+    # Act
+    value = calldata[2]
+    constraint = value == 3
+
+    solver.add(constraint)
+    result = solver.check()
+
+    # Assert
+    assert str(result) == "unsat"
+
+
+def test_symbolic_calldata_constrain_index():
+    # Arrange
+    calldata = SymbolicCalldata(0)
+    solver = Solver()
+
+    # Act
+    value = calldata[51]
+
+    constraints = [value == 1, calldata.calldatasize == 50]
+
+    solver.add(*constraints)
+
+    result = solver.check()
+
+    # Assert
+    assert str(result) == "unsat"
+
+
+def test_symbolic_calldata_equal_indices():
+    calldata = SymbolicCalldata(0)
+
+    index_a = symbol_factory.BitVecSym("index_a", 256)
+    index_b = symbol_factory.BitVecSym("index_b", 256)
+
+    # Act
+    a = calldata[index_a]
+    b = calldata[index_b]
+
+    s = Solver()
+    s.append(index_a == index_b)
+    s.append(a != b)
+
+    # Assert
+    assert unsat == s.check()
diff --git a/tests/laser/state/mstack_test.py b/tests/laser/state/mstack_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..2a3cfb01e5d6f631dc492c14692f27910c8028be
--- /dev/null
+++ b/tests/laser/state/mstack_test.py
@@ -0,0 +1,54 @@
+import pytest
+
+from mythril.laser.ethereum.state.machine_state import MachineStack
+from mythril.laser.ethereum.evm_exceptions import *
+from tests import BaseTestCase
+
+
+class MachineStackTest(BaseTestCase):
+    @staticmethod
+    def test_mstack_constructor():
+        mstack = MachineStack([1, 2])
+        assert mstack == [1, 2]
+
+    @staticmethod
+    def test_mstack_append_single_element():
+        mstack = MachineStack()
+
+        mstack.append(0)
+
+        assert mstack == [0]
+
+    @staticmethod
+    def test_mstack_append_multiple_elements():
+
+        mstack = MachineStack()
+
+        for i in range(mstack.STACK_LIMIT):
+            mstack.append(1)
+
+        with pytest.raises(StackOverflowException):
+            mstack.append(1000)
+
+    @staticmethod
+    def test_mstack_pop():
+        mstack = MachineStack([2])
+
+        assert mstack.pop() == 2
+
+        with pytest.raises(StackUnderflowException):
+            mstack.pop()
+
+    @staticmethod
+    def test_mstack_no_support_add():
+        mstack = MachineStack([0, 1])
+
+        with pytest.raises(NotImplementedError):
+            mstack + [2]
+
+    @staticmethod
+    def test_mstack_no_support_iadd():
+        mstack = MachineStack()
+
+        with pytest.raises(NotImplementedError):
+            mstack += mstack
diff --git a/tests/laser/state/mstate_test.py b/tests/laser/state/mstate_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..2fd66379224262b36aeb3c1e0e835512adae6fbd
--- /dev/null
+++ b/tests/laser/state/mstate_test.py
@@ -0,0 +1,144 @@
+import pytest
+from eth._utils.numeric import ceil32
+from mythril.laser.smt import simplify, symbol_factory, Concat, Extract
+
+from mythril.laser.ethereum.state.machine_state import MachineState
+from mythril.laser.ethereum.evm_exceptions import StackUnderflowException
+from mythril.laser.ethereum.state.memory import Memory
+
+memory_extension_test_data = [(0, 0, 10), (0, 30, 10), (100, 22, 8)]
+
+
+@pytest.mark.parametrize(
+    "initial_size,start,extension_size", memory_extension_test_data
+)
+def test_memory_extension(initial_size, start, extension_size):
+    # Arrange
+    machine_state = MachineState(gas_limit=8000000)
+    machine_state.memory = Memory()
+    machine_state.memory.extend(initial_size)
+
+    # Act
+    machine_state.mem_extend(start, extension_size)
+
+    # Assert
+    assert machine_state.memory_size == len(machine_state.memory)
+    assert machine_state.memory_size == max(
+        initial_size, (ceil32(start + extension_size) // 32) * 32
+    )
+
+
+stack_pop_too_many_test_data = [(0, 1), (0, 2), (5, 1), (5, 10)]
+
+
+@pytest.mark.parametrize("initial_size,overflow", stack_pop_too_many_test_data)
+def test_stack_pop_too_many(initial_size, overflow):
+    # Arrange
+    machine_state = MachineState(8000000)
+    machine_state.stack = [42] * initial_size
+
+    # Act + Assert
+    with pytest.raises(StackUnderflowException):
+        machine_state.pop(initial_size + overflow)
+
+
+stack_pop_test_data = [
+    ([1, 2, 3], 2, [3, 2]),
+    ([1, 3, 4, 7, 7, 1, 2], 5, [2, 1, 7, 7, 4]),
+]
+
+
+@pytest.mark.parametrize("initial_stack,amount,expected", stack_pop_test_data)
+def test_stack_multiple_pop(initial_stack, amount, expected):
+    # Arrange
+    machine_state = MachineState(8000000)
+    machine_state.stack = initial_stack[:]
+
+    # Act
+    results = machine_state.pop(amount)
+
+    # Assert
+    assert results == initial_stack[-amount:][::-1]
+    assert results == expected
+    assert len(machine_state.stack) == len(initial_stack) - amount
+
+
+def test_stack_multiple_pop_():
+    # Arrange
+    machine_state = MachineState(8000000)
+    machine_state.stack = [1, 2, 3]
+
+    # Act
+    a, b = machine_state.pop(2)
+
+    # Assert
+    assert a == 3
+    assert b == 2
+
+
+def test_stack_single_pop():
+    # Arrange
+    machine_state = MachineState(8000000)
+    machine_state.stack = [1, 2, 3]
+
+    # Act
+    result = machine_state.pop()
+
+    # Assert
+    assert isinstance(result, int)
+
+
+def test_memory_zeroed():
+    # Arrange
+    mem = Memory()
+    mem.extend(2000 + 32)
+
+    # Act
+    mem[11] = 10
+    mem.write_word_at(2000, 0x12345)
+
+    # Assert
+    assert mem[10] == 0
+    assert mem[100] == 0
+    assert mem.get_word_at(1000) == 0
+
+
+def test_memory_write():
+    # Arrange
+    mem = Memory()
+    mem.extend(200 + 32)
+
+    a = symbol_factory.BitVecSym("a", 256)
+    b = symbol_factory.BitVecSym("b", 8)
+
+    # Act
+    mem[11] = 10
+    mem[12] = b
+    mem.write_word_at(200, 0x12345)
+    mem.write_word_at(100, a)
+
+    # Assert
+    assert mem[0] == 0
+    assert mem[11] == 10
+    assert mem[200 + 31] == 0x45
+    assert mem.get_word_at(200) == 0x12345
+    assert simplify(a == mem.get_word_at(100))
+    assert simplify(b == mem[12])
+
+
+def test_memory_symbolic():
+    # Arrange
+    mem = Memory()
+    mem.extend(200 + 32)
+
+    a = symbol_factory.BitVecSym("a", 256)
+    b = symbol_factory.BitVecSym("b", 256)
+
+    # Act
+    mem.write_word_at(a + symbol_factory.BitVecVal(1, 256), b)
+
+    # Assert
+    assert mem.get_word_at(a) == Concat(
+        symbol_factory.BitVecVal(0, 256), Extract(255, 8, b)
+    )
+    assert mem[a] == 0
diff --git a/tests/laser/state/storage_test.py b/tests/laser/state/storage_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..285fae94003d6bdf04789621a7d86a54e1c0711a
--- /dev/null
+++ b/tests/laser/state/storage_test.py
@@ -0,0 +1,60 @@
+import pytest
+from mythril.laser.smt import symbol_factory
+from mythril.laser.ethereum.state.account import Storage
+from mythril.laser.smt import Expression
+from mythril.support.support_args import args
+
+BVV = symbol_factory.BitVecVal
+
+storage_uninitialized_test_data = [({}, 1), ({1: 5}, 2), ({1: 5, 3: 10}, 2)]
+
+
+@pytest.mark.parametrize("initial_storage,key", storage_uninitialized_test_data)
+def test_concrete_storage_uninitialized_index(initial_storage, key):
+    # Arrange
+    args.unconstrained_storage = False
+    storage = Storage(concrete=True)
+    for k, val in initial_storage.items():
+        storage[BVV(k, 256)] = BVV(val, 256)
+
+    # Act
+    value = storage[BVV(key, 256)]
+
+    # Assert
+    assert value == 0
+
+
+@pytest.mark.parametrize("initial_storage,key", storage_uninitialized_test_data)
+def test_symbolic_storage_uninitialized_index(initial_storage, key):
+    # Arrange
+    storage = Storage(concrete=False)
+    for k, val in initial_storage.items():
+        storage[BVV(k, 256)] = BVV(val, 256)
+
+    # Act
+    value = storage[BVV(key, 256)]
+
+    # Assert
+    assert isinstance(value, Expression)
+
+
+def test_storage_set_item():
+    # Arrange
+    storage = Storage()
+
+    # Act
+    storage[BVV(1, 256)] = BVV(13, 256)
+
+    # Assert
+    assert storage[BVV(1, 256)] == BVV(13, 256)
+
+
+def test_storage_change_item():
+    # Arrange
+    storage = Storage()
+    storage[BVV(1, 256)] = BVV(12, 256)
+    # Act
+    storage[BVV(1, 256)] = BVV(14, 256)
+
+    # Assert
+    assert storage[BVV(1, 256)] == BVV(14, 256)
diff --git a/tests/laser/state/world_state_account_exist_load_test.py b/tests/laser/state/world_state_account_exist_load_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..ef42560749c900e673e0cd94b49d393da82a528d
--- /dev/null
+++ b/tests/laser/state/world_state_account_exist_load_test.py
@@ -0,0 +1,53 @@
+import pytest
+
+from mythril.disassembler.disassembly import Disassembly
+from mythril.laser.ethereum.state.environment import Environment
+from mythril.laser.ethereum.state.account import Account
+from mythril.laser.ethereum.state.machine_state import MachineState
+from mythril.laser.ethereum.state.global_state import GlobalState
+from mythril.laser.ethereum.state.world_state import WorldState
+from mythril.support.loader import DynLoader
+from mythril.ethereum.interface.rpc.client import EthJsonRpc
+from mythril.laser.ethereum.instructions import Instruction
+
+"""
+def _get_global_state():
+    active_account = Account("0x0", code=Disassembly("60606040"))
+    passive_account = Account(
+        "0x325345346564645654645", code=Disassembly("6060604061626364")
+    )
+    environment = Environment(active_account, None, None, None, None, None)
+    world_state = WorldState()
+    world_state.put_account(active_account)
+    world_state.put_account(passive_account)
+    return GlobalState(world_state, environment, None, MachineState(gas_limit=8000000))
+
+
+@pytest.mark.parametrize(
+    "addr, eth, code_len",
+    [
+        (
+            "0xb09C477eCDAd49DD5Ac26c2C64914C3a6693843a",
+            EthJsonRpc("rinkeby.infura.io", 443, True),
+            1548,
+        ),
+        (
+            "0x863DF6BFa4469f3ead0bE8f9F2AAE51c91A907b4",
+            EthJsonRpc("mainnet.infura.io", 443, True),
+            0,
+        ),
+        (
+            "0x325345346564645654645",
+            EthJsonRpc("mainnet.infura.io", 443, True),
+            16,
+        ),  # This contract tests Address Cache
+    ],
+)
+def test_extraction(addr, eth, code_len):
+    global_state = _get_global_state()
+    dynamic_loader = DynLoader(eth=eth)
+    code = global_state.world_state.accounts_exist_or_load(
+        addr, dynamic_loader
+    ).code.bytecode
+    assert len(code) == code_len
+"""
diff --git a/tests/laser/strategy/beam_test.py b/tests/laser/strategy/beam_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..fe5f35170498796a0ccecc1c0d9c956d8e108937
--- /dev/null
+++ b/tests/laser/strategy/beam_test.py
@@ -0,0 +1,108 @@
+import pytest
+from mythril.laser.ethereum.strategy.beam import (
+    BeamSearch,
+)
+from mythril.disassembler.disassembly import Disassembly
+from mythril.laser.ethereum.state.environment import Environment
+from mythril.laser.ethereum.state.machine_state import MachineState
+from mythril.laser.ethereum.state.global_state import GlobalState
+from mythril.laser.ethereum.state.world_state import WorldState
+from mythril.analysis.potential_issues import PotentialIssuesAnnotation
+
+world_state = WorldState()
+account = world_state.create_account(balance=10, address=101)
+account.code = Disassembly("60606040")
+environment = Environment(account, None, None, None, None, None, None)
+potential_issues = PotentialIssuesAnnotation()
+# It is a hassle to construct multiple issues
+potential_issues.potential_issues = [0, 0]
+
+
+@pytest.mark.parametrize(
+    "state, priority",
+    [
+        (
+            GlobalState(
+                world_state,
+                environment,
+                None,
+                MachineState(gas_limit=8000000),
+                annotations=[PotentialIssuesAnnotation()],
+            ),
+            0,
+        ),
+        (
+            GlobalState(
+                world_state,
+                environment,
+                None,
+                MachineState(gas_limit=8000000),
+                annotations=[potential_issues],
+            ),
+            20,
+        ),
+    ],
+)
+def test_priority_sum(state, priority):
+    assert priority == BeamSearch.beam_priority(state)
+
+
+@pytest.mark.parametrize(
+    "states, width",
+    [
+        (
+            [
+                GlobalState(
+                    world_state,
+                    environment,
+                    None,
+                    MachineState(gas_limit=8000000),
+                    annotations=[PotentialIssuesAnnotation()],
+                ),
+                GlobalState(
+                    world_state,
+                    environment,
+                    None,
+                    MachineState(gas_limit=8000000),
+                    annotations=[potential_issues],
+                ),
+            ],
+            1,
+        ),
+        (
+            100
+            * [
+                GlobalState(
+                    world_state,
+                    environment,
+                    None,
+                    MachineState(gas_limit=8000000),
+                    annotations=[PotentialIssuesAnnotation()],
+                )
+            ],
+            1,
+        ),
+        (
+            100
+            * [
+                GlobalState(
+                    world_state,
+                    environment,
+                    None,
+                    MachineState(gas_limit=8000000),
+                    annotations=[PotentialIssuesAnnotation()],
+                )
+            ],
+            0,
+        ),
+    ],
+)
+def test_elimination(states, width):
+    strategy = BeamSearch(states, max_depth=100, beam_width=width)
+    strategy.sort_and_eliminate_states()
+
+    assert len(strategy.work_list) <= width
+    for i in range(len(strategy.work_list) - 1):
+        assert strategy.beam_priority(strategy.work_list[i]) >= strategy.beam_priority(
+            strategy.work_list[i + 1]
+        )
diff --git a/tests/laser/strategy/loop_bound_test.py b/tests/laser/strategy/loop_bound_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..ff0bfed809d4906655574a7e654394898df9552e
--- /dev/null
+++ b/tests/laser/strategy/loop_bound_test.py
@@ -0,0 +1,20 @@
+import pytest
+from mythril.laser.ethereum.strategy.extensions.bounded_loops import (
+    BoundedLoopsStrategy,
+)
+
+
+@pytest.mark.parametrize(
+    "trace, count",
+    [
+        ([6, 7, 7, 7], 3),
+        ([6, 8, 6, 7, 6, 7, 6, 7, 6, 7], 4),
+        ([6, 6, 6, 6], 4),
+        ([6, 7, 8] * 10, 10),
+        ([7, 9, 10] + list(range(1, 100)) * 100, 100),
+        ([7, 10, 15], 0),
+        ([7] * 100, 100),
+    ],
+)
+def test_loop_count(trace, count):
+    assert count == BoundedLoopsStrategy.get_loop_count(trace)
diff --git a/tests/laser/transaction/__init__.py b/tests/laser/transaction/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/tests/laser/transaction/create_transaction_test.py b/tests/laser/transaction/create_transaction_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..8ab2533b4e5e5bf99ce9e3f5cd17c1e8245d72ca
--- /dev/null
+++ b/tests/laser/transaction/create_transaction_test.py
@@ -0,0 +1,51 @@
+from mythril.mythril import MythrilDisassembler
+from mythril.laser.ethereum.transaction import execute_contract_creation
+from mythril.ethereum import util
+import mythril.laser.ethereum.svm as svm
+from mythril.disassembler.disassembly import Disassembly
+from datetime import datetime
+from mythril.solidity.soliditycontract import SolidityContract
+import tests
+from mythril.analysis.security import fire_lasers
+from mythril.analysis.symbolic import SymExecWrapper
+
+solc_binary = MythrilDisassembler._init_solc_binary("v0.5.0")
+
+
+def test_create():
+    contract = SolidityContract(
+        str(tests.TESTDATA_INPUTS_CONTRACTS / "calls.sol"), solc_binary=solc_binary
+    )
+
+    laser_evm = svm.LaserEVM({})
+
+    laser_evm.time = datetime.now()
+    execute_contract_creation(laser_evm, contract.creation_code)
+
+    resulting_final_state = laser_evm.open_states[0]
+
+    for address, created_account in resulting_final_state.accounts.items():
+        created_account_code = created_account.code
+        actual_code = Disassembly(contract.code)
+
+        for i in range(len(created_account_code.instruction_list)):
+            found_instruction = created_account_code.instruction_list[i]
+            actual_instruction = actual_code.instruction_list[i]
+
+            assert found_instruction["opcode"] == actual_instruction["opcode"]
+
+
+def test_sym_exec():
+    contract = SolidityContract(
+        str(tests.TESTDATA_INPUTS_CONTRACTS / "calls.sol"), solc_binary=solc_binary
+    )
+
+    sym = SymExecWrapper(
+        contract,
+        address=(util.get_indexed_address(0)),
+        strategy="dfs",
+        execution_timeout=25,
+    )
+    issues = fire_lasers(sym)
+
+    assert len(issues) != 0
diff --git a/tests/laser/transaction/symbolic_test.py b/tests/laser/transaction/symbolic_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..33faac137fc52250c3949e30b85491f97855249b
--- /dev/null
+++ b/tests/laser/transaction/symbolic_test.py
@@ -0,0 +1,72 @@
+from mythril.laser.ethereum.transaction.symbolic import (
+    execute_message_call,
+    execute_contract_creation,
+)
+from mythril.laser.ethereum.transaction import (
+    MessageCallTransaction,
+    ContractCreationTransaction,
+)
+from mythril.laser.ethereum.svm import LaserEVM
+from mythril.laser.ethereum.state.account import Account
+from mythril.laser.ethereum.state.world_state import WorldState
+from mythril.laser.smt import symbol_factory
+
+import unittest.mock as mock
+from unittest.mock import MagicMock
+
+
+def _is_message_call(_, transaction, transaction_sequences):
+    assert isinstance(transaction, MessageCallTransaction)
+
+
+def _is_contract_creation(_, transaction):
+    assert isinstance(transaction, ContractCreationTransaction)
+
+
+@mock.patch(
+    "mythril.laser.ethereum.transaction.symbolic._setup_global_state_for_execution"
+)
+def test_execute_message_call(mocked_setup: MagicMock):
+    # Arrange
+    laser_evm = LaserEVM({})
+
+    world_state = WorldState()
+    world_state.put_account(Account("0x0"))
+
+    laser_evm.open_states = [world_state]
+    laser_evm.exec = MagicMock()
+
+    mocked_setup.side_effect = _is_message_call
+
+    # Act
+    execute_message_call(laser_evm, symbol_factory.BitVecVal(0, 256))
+
+    # Assert
+    # laser_evm.exec.assert_called_once()
+    assert laser_evm.exec.call_count == 1
+    # mocked_setup.assert_called_once()
+    assert mocked_setup.call_count == 1
+
+    assert len(laser_evm.open_states) == 0
+
+
+@mock.patch(
+    "mythril.laser.ethereum.transaction.symbolic._setup_global_state_for_execution"
+)
+def test_execute_contract_creation(mocked_setup: MagicMock):
+    # Arrange
+    laser_evm = LaserEVM({})
+
+    laser_evm.open_states = [WorldState(), WorldState()]
+    laser_evm.exec = MagicMock()
+    mocked_setup.side_effect = _is_contract_creation
+
+    # Act
+    execute_contract_creation(laser_evm, "606000")
+
+    # Assert
+    # mocked_setup.assert_called()
+    assert mocked_setup.call_count >= 1
+    # laser_evm.exec.assert_called_once()
+    assert laser_evm.exec.call_count == 1
+    assert len(laser_evm.open_states) == 0
diff --git a/tests/laser/transaction_test.py b/tests/laser/transaction_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..f66d9b9c099c209038d24e41d647990405b6dc36
--- /dev/null
+++ b/tests/laser/transaction_test.py
@@ -0,0 +1,46 @@
+from mythril.disassembler.disassembly import Disassembly
+from mythril.laser.ethereum import svm
+from mythril.laser.ethereum.state.account import Account
+from mythril.laser.ethereum.state.world_state import WorldState
+from mythril.support.support_args import args
+
+import mythril.laser.ethereum.cfg as cfg
+
+
+def test_intercontract_call():
+    # Arrange
+    caller_code = Disassembly(
+        "6080604052348015600f57600080fd5b5073deadbeefdeadbeefdeadbeefdeadbeefdeadbeef73ffffffffffffffffffffffffffffffffffffffff166389627e13336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801560be57600080fd5b505af115801560d1573d6000803e3d6000fd5b505050506040513d602081101560e657600080fd5b8101908080519060200190929190505050500000a165627a7a72305820fdb1e90f0d9775c94820e516970e0d41380a94624fa963c556145e8fb645d4c90029"
+    )
+    caller_address = "0xaffeaffeaffeaffeaffeaffeaffeaffeaffeaffe"
+
+    callee_code = Disassembly(
+        "608060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806389627e13146044575b600080fd5b348015604f57600080fd5b506082600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506084565b005b8073ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f1935050505015801560e0573d6000803e3d6000fd5b50505600a165627a7a72305820a6b1335d6f994632bc9a7092d0eaa425de3dea05e015af8a94ad70b3969e117a0029"
+    )
+    callee_address = "0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"
+
+    world_state = WorldState()
+
+    caller_account = Account(caller_address, caller_code, contract_name="Caller")
+    callee_account = Account(callee_address, callee_code, contract_name="Callee")
+    world_state.put_account(callee_account)
+    world_state.put_account(caller_account)
+    args.pruning_factor = 1
+    laser = svm.LaserEVM()
+
+    # Act
+    laser.sym_exec(world_state=world_state, target_address=int(caller_address, 16))
+
+    # Assert
+    # Initial node starts in contract caller
+    assert len(laser.nodes.keys()) > 0
+    node_id = list(laser.nodes.keys())[0]
+    assert laser.nodes[node_id].contract_name == "Caller"
+
+    # At one point we call into contract callee
+    for node in laser.nodes.values():
+        if node.contract_name == "Callee":
+            assert len(node.states[0].transaction_stack) > 1
+            return
+
+    assert False
diff --git a/tests/laser/tx_prioritisation_test.py b/tests/laser/tx_prioritisation_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..491537d61864aedbc2e9337f21e727a2b13c842d
--- /dev/null
+++ b/tests/laser/tx_prioritisation_test.py
@@ -0,0 +1,58 @@
+import pytest
+import numpy as np
+from mythril.laser.ethereum.tx_prioritiser import RfTxPrioritiser
+from unittest.mock import Mock, patch, mock_open
+
+
+def mock_predict_proba(X):
+    if X[0][-1] == 1:
+        return np.array([[0.1, 0.7, 0.1, 0.1]])
+    elif X[0][-1] == 2:
+        return np.array([[0.1, 0.1, 0.7, 0.1]])
+    else:
+        return np.array([[0.1, 0.1, 0.1, 0.7]])
+
+
+class MockSolidityContract:
+    def __init__(self, features):
+        self.features = features
+
+
+@pytest.fixture
+def rftp_instance():
+    contract = MockSolidityContract(
+        features={"function1": {"feature1": 1, "feature2": 2}}
+    )
+
+    with patch("pickle.load") as mock_pickle_load, patch("builtins.open", mock_open()):
+        mock_model = Mock()
+        mock_model.predict_proba = mock_predict_proba
+        mock_pickle_load.return_value = mock_model
+
+        rftp = RfTxPrioritiser(contract=contract, model_path="path/to/mock/model.pkl")
+
+    return rftp
+
+
+def test_preprocess_features(rftp_instance):
+    expected_features = np.array([[1, 2]])
+    assert np.array_equal(rftp_instance.preprocessed_features, expected_features)
+
+
+@pytest.mark.parametrize(
+    "address,previous_predictions,expected_sequence",
+    [
+        (1, [], [2, 2, 2]),
+        (2, [], [2, 2, 2]),
+        (1, [0], [3, 3, 3]),
+        (2, [1], [1, 1, 1]),
+        (3, [1, 2], [2, 2, 2]),
+        (1, [0, 2, 5], [3, 3, 3]),
+    ],
+)
+def test_next_method(rftp_instance, address, previous_predictions, expected_sequence):
+    rftp_instance.recent_predictions = previous_predictions
+    predictions_sequence = rftp_instance.__next__(address=address)
+
+    assert len(predictions_sequence) == 3
+    assert predictions_sequence == expected_sequence
diff --git a/tests/mythril/mythril_analyzer_test.py b/tests/mythril/mythril_analyzer_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..39ec3dfc85618f3354a68da3af1429bfd909b611
--- /dev/null
+++ b/tests/mythril/mythril_analyzer_test.py
@@ -0,0 +1,52 @@
+from pathlib import Path
+from mythril.mythril import MythrilDisassembler, MythrilAnalyzer
+from mythril.analysis.report import Issue
+from mock import patch, PropertyMock
+from types import SimpleNamespace
+
+
+@patch("mythril.analysis.report.Issue.add_code_info", return_value=None)
+@patch(
+    "mythril.mythril.mythril_analyzer.fire_lasers",
+    return_value=[Issue("", "", "234", "101", "title", "0x02445")],
+)
+@patch("mythril.mythril.mythril_analyzer.SymExecWrapper")
+def test_fire_lasers(mock_sym, mock_fire_lasers, mock_code_info):
+    type(mock_sym.return_value).execution_info = PropertyMock(return_value=[])
+    disassembler = MythrilDisassembler(eth=None, solc_version="v0.5.0")
+    disassembler.load_from_solidity(
+        [
+            str(
+                (
+                    Path(__file__).parent.parent / "testdata/input_contracts/origin.sol"
+                ).absolute()
+            )
+        ]
+    )
+    args = SimpleNamespace(
+        execution_timeout=5,
+        max_depth=30,
+        solver_timeout=10000,
+        no_onchain_data=True,
+        loop_bound=None,
+        create_timeout=None,
+        disable_dependency_pruning=False,
+        custom_modules_directory=None,
+        pruning_factor=0,
+        parallel_solving=True,
+        unconstrained_storage=True,
+        call_depth_limit=3,
+        disable_iprof=True,
+        solver_log=None,
+        transaction_sequences=None,
+        disable_coverage_strategy=False,
+        disable_mutation_pruner=False,
+    )
+    analyzer = MythrilAnalyzer(disassembler, cmd_args=args)
+
+    issues = analyzer.fire_lasers(modules=[]).sorted_issues()
+    mock_sym.assert_called()
+    mock_fire_lasers.assert_called()
+    mock_code_info.assert_called()
+    assert len(issues) == 1
+    assert issues[0]["swc-id"] == "101"
diff --git a/tests/mythril/mythril_config_test.py b/tests/mythril/mythril_config_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..afe27682f41bb88b1a7aac6ad4f295340a445df9
--- /dev/null
+++ b/tests/mythril/mythril_config_test.py
@@ -0,0 +1,49 @@
+import pytest
+import os
+
+from configparser import ConfigParser
+from pathlib import Path
+
+from mythril.mythril import MythrilConfig
+from mythril.exceptions import CriticalError
+
+
+def test_config_path_dynloading():
+    config = MythrilConfig()
+    config.config_path = str(
+        Path(__file__).parent.parent / "testdata/mythril_config_inputs/config.ini"
+    )
+    config.set_api_from_config_path()
+    assert "mainnet.infura.io/v3/" in config.eth.host
+
+
+rpc_types_tests = [
+    ("infura", "mainnet.infura.io/v3/", None, True),
+    ("ganache", "localhost", None, True),
+    ("infura-rinkeby", "rinkeby.infura.io/v3/", None, True),
+    ("infura-ropsten", "ropsten.infura.io/v3/", None, True),
+    ("infura-kovan", "kovan.infura.io/v3/", None, True),
+    ("localhost", "localhost", 8545, True),
+    ("localhost:9022", "localhost", 9022, True),
+    ("pinfura", None, None, False),
+    ("infura-finkeby", None, None, False),
+]
+
+
+@pytest.mark.parametrize("rpc_type,host,port,success", rpc_types_tests)
+def test_set_rpc(rpc_type, host, port, success):
+    config = MythrilConfig()
+    if success:
+        config._set_rpc(rpc_type)
+        assert host in config.eth.host
+    else:
+        with pytest.raises(CriticalError):
+            config._set_rpc(rpc_type)
+
+
+def test_dynld_config_addition():
+    config = ConfigParser()
+    config.add_section("defaults")
+    MythrilConfig._add_dynamic_loading_option(config)
+    assert config.has_section("defaults")
+    assert config.get("defaults", "dynamic_loading") == "infura"
diff --git a/tests/mythril/mythril_disassembler_test.py b/tests/mythril/mythril_disassembler_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..79ae3f939078017b378ec63f9877a0457ccb6582
--- /dev/null
+++ b/tests/mythril/mythril_disassembler_test.py
@@ -0,0 +1,71 @@
+import pytest
+from mythril.mythril import MythrilConfig, MythrilDisassembler
+from mythril.exceptions import CriticalError
+
+storage_test = [
+    (
+        ["438767356", "3"],
+        [
+            "0x1a270efc: 0x0000000000000000000000000000000000000000000000000000000000000000",
+            "0x1a270efd: 0x0000000000000000000000000000000000000000000000000000000000000000",
+            "0x1a270efe: 0x0000000000000000000000000000000000000000000000000000000000000000",
+        ],
+    ),
+    (
+        ["mapping", "4588934759847", "1", "2"],
+        [
+            "0x7e523d5aeb10cdb378b0b1f76138c28063a2cb9ec8ff710f42a0972f4d53cf44: "
+            "0x0000000000000000000000000000000000000000000000000000000000000000",
+            "0xba36da34ceec88853a2ebdde88e023c6919b90348f41e8905b422dc9ce22301c: "
+            "0x0000000000000000000000000000000000000000000000000000000000000000",
+        ],
+    ),
+    (
+        ["mapping", "4588934759847", "10"],
+        [
+            "45998575720532480608987132552042185415362901038635143236141343153058112000553: "
+            "0x0000000000000000000000000000000000000000000000000000000000000000"
+        ],
+    ),
+    (
+        ["4588934759847", "1", "array"],
+        [
+            "30699902832541380821728647136767910246735388184559883985790189062258823875816: "
+            "0x0000000000000000000000000000000000000000000000000000000000000000"
+        ],
+    ),
+]
+
+"""
+@pytest.mark.parametrize("params,ans", storage_test)
+def test_get_data_from_storage(params, ans):
+    config = MythrilConfig()
+    config.set_api_rpc_infura()
+    disassembler = MythrilDisassembler(eth=config.eth, solc_version="0.4.23")
+    outtext = disassembler.get_state_variable_from_storage(
+        "0x76799f77587738bfeef09452df215b63d2cfb08a", params
+    ).split("\n")
+    assert outtext == ans
+
+
+storage_test_incorrect_params = [
+    (["1", "2", "3", "4"]),
+    (["mapping", "1"]),
+    (["a", "b", "c"]),
+]
+
+
+@pytest.mark.parametrize("params", storage_test_incorrect_params)
+def test_get_data_from_storage_incorrect_params(params):
+    config = MythrilConfig()
+    config.set_api_rpc_infura()
+    disassembler = MythrilDisassembler(eth=config.eth, solc_version="0.4.23")
+    with pytest.raises(CriticalError):
+        disassembler.get_state_variable_from_storage(
+            "0x76799f77587738bfeef09452df215b63d2cfb08a", params
+        )
+"""
+
+
+def test_solc_install():
+    MythrilDisassembler(eth=None, solc_version="0.4.19")
diff --git a/tests/plugin/interface_test.py b/tests/plugin/interface_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..103037cc078d0d8a85be663263d6187c5b1c2ed1
--- /dev/null
+++ b/tests/plugin/interface_test.py
@@ -0,0 +1,9 @@
+from mythril.plugin.interface import MythrilCLIPlugin, MythrilPlugin
+
+
+def test_construct_cli_plugin():
+    _ = MythrilCLIPlugin()
+
+
+def test_construct_mythril_plugin():
+    _ = MythrilPlugin
diff --git a/tests/plugin/loader_test.py b/tests/plugin/loader_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..3a1aca5f9a055512aa7254f8828eb365449e8f06
--- /dev/null
+++ b/tests/plugin/loader_test.py
@@ -0,0 +1,22 @@
+from mythril.plugin import MythrilPluginLoader, MythrilPlugin
+from mythril.plugin.loader import UnsupportedPluginType
+
+import pytest
+
+
+def test_typecheck_load():
+    # Arrange
+    loader = MythrilPluginLoader()
+
+    # Act
+    with pytest.raises(ValueError):
+        loader.load(None)
+
+
+def test_unsupported_plugin_type():
+    # Arrange
+    loader = MythrilPluginLoader()
+
+    # Act
+    with pytest.raises(UnsupportedPluginType):
+        loader.load(MythrilPlugin())
diff --git a/tests/rpc_test.py b/tests/rpc_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..de899f1f0284e3cf9e5d4b23914616ff4233698e
--- /dev/null
+++ b/tests/rpc_test.py
@@ -0,0 +1,65 @@
+from unittest import TestCase
+from tests import BaseTestCase
+
+from mythril.ethereum.interface.rpc.client import EthJsonRpc
+
+
+class RpcTest(BaseTestCase):
+    client = None
+
+    def setUp(self):
+        """"""
+        self.client = EthJsonRpc()
+
+    def tearDown(self):
+        """"""
+        self.client.close()
+
+    def test_eth_blockNumber(self):
+        block_number = self.client.eth_blockNumber()
+        self.assertGreater(
+            block_number, 0, "we have made sure the blockNumber is > 0 for testing"
+        )
+
+    def test_eth_getBalance(self):
+        balance = self.client.eth_getBalance(
+            address="0x0000000000000000000000000000000000000000"
+        )
+        self.assertGreater(
+            balance, 10000000, "specified address should have a lot of balance"
+        )
+
+    def test_eth_getStorageAt(self):
+        storage = self.client.eth_getStorageAt(
+            address="0x0000000000000000000000000000000000000000"
+        )
+        self.assertEqual(
+            storage,
+            "0x0000000000000000000000000000000000000000000000000000000000000000",
+        )
+
+    def test_eth_getBlockByNumber(self):
+        block = self.client.eth_getBlockByNumber(0)
+        self.assertEqual(
+            block["extraData"],
+            "0x11bbe8db4e347b4e8c937c1c8370e4b5ed33adb3db69cbdb7a38e1e50b1b82fa",
+            "the data of the first block should be right",
+        )
+
+    def test_eth_getCode(self):
+        # TODO: can't find a proper address for getting code
+        code = self.client.eth_getCode(
+            address="0x0000000000000000000000000000000000000001"
+        )
+        self.assertEqual(code, "0x")
+
+    def test_eth_getTransactionReceipt(self):
+        transaction = self.client.eth_getTransactionReceipt(
+            tx_hash="0xe363505adc6b2996111f8bd774f8653a61d244cc6567b5372c2e781c6c63b737"
+        )
+        self.assertEqual(
+            transaction["from"], "0x22f2dcff5ad78c3eb6850b5cb951127b659522e6"
+        )
+        self.assertEqual(
+            transaction["to"], "0x0000000000000000000000000000000000000000"
+        )
diff --git a/tests/solidity_contract_test.py b/tests/solidity_contract_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..bde93c2065a93cf24da1f3a8e8498d400484a6b9
--- /dev/null
+++ b/tests/solidity_contract_test.py
@@ -0,0 +1,43 @@
+from pathlib import Path
+
+from mythril.mythril import MythrilDisassembler
+from mythril.solidity.soliditycontract import SolidityContract
+from tests import BaseTestCase
+
+TEST_FILES = Path(__file__).parent / "testdata/input_contracts"
+solc_binary = MythrilDisassembler._init_solc_binary("v0.5.0")
+
+
+class SolidityContractTest(BaseTestCase):
+    def test_get_source_info_without_name_gets_latest_contract_info(self):
+        input_file = TEST_FILES / "multi_contracts.sol"
+        contract = SolidityContract(str(input_file), solc_binary=solc_binary)
+
+        code_info = contract.get_source_info(116)
+        self.assertEqual(code_info.filename, str(input_file))
+        self.assertEqual(code_info.lineno, 14)
+        self.assertEqual(code_info.code, "msg.sender.transfer(2 ether)")
+
+    def test_get_source_info_with_contract_name_specified(self):
+        input_file = TEST_FILES / "multi_contracts.sol"
+        contract = SolidityContract(
+            str(input_file), name="Transfer1", solc_binary=solc_binary
+        )
+
+        code_info = contract.get_source_info(116)
+
+        self.assertEqual(code_info.filename, str(input_file))
+        self.assertEqual(code_info.lineno, 6)
+        self.assertEqual(code_info.code, "msg.sender.transfer(1 ether)")
+
+    def test_get_source_info_with_contract_name_specified_constructor(self):
+        input_file = TEST_FILES / "constructor_assert.sol"
+        contract = SolidityContract(
+            str(input_file), name="AssertFail", solc_binary=solc_binary
+        )
+
+        code_info = contract.get_source_info(75, constructor=True)
+
+        self.assertEqual(code_info.filename, str(input_file))
+        self.assertEqual(code_info.lineno, 6)
+        self.assertEqual(code_info.code, "assert(var1 > 0)")
diff --git a/tests/statespace_test.py b/tests/statespace_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..e51523d563dea99ba1117b8bc9c526a69e84b7dc
--- /dev/null
+++ b/tests/statespace_test.py
@@ -0,0 +1,42 @@
+from mythril.mythril import MythrilAnalyzer, MythrilDisassembler
+from mythril.ethereum import util
+from mythril.solidity.soliditycontract import EVMContract
+from tests import TESTDATA_INPUTS
+from types import SimpleNamespace
+
+
+def test_statespace_dump():
+    for input_file in TESTDATA_INPUTS.iterdir():
+        if input_file.name not in ("origin.sol.o", "suicide.sol.o"):
+            # It's too slow, so it's better to skip some tests.
+            continue
+        contract = EVMContract(input_file.read_text())
+        disassembler = MythrilDisassembler()
+        disassembler.contracts.append(contract)
+        args = SimpleNamespace(
+            execution_timeout=5,
+            max_depth=30,
+            solver_timeout=10000,
+            no_onchain_data=True,
+            loop_bound=None,
+            create_timeout=None,
+            disable_dependency_pruning=False,
+            custom_modules_directory=None,
+            pruning_factor=0,
+            parallel_solving=True,
+            unconstrained_storage=True,
+            call_depth_limit=3,
+            disable_iprof=True,
+            solver_log=None,
+            transaction_sequences=None,
+            disable_coverage_strategy=False,
+            disable_mutation_pruner=False,
+        )
+        analyzer = MythrilAnalyzer(
+            disassembler=disassembler,
+            strategy="dfs",
+            address=(util.get_indexed_address(0)),
+            cmd_args=args,
+        )
+
+        analyzer.dump_statespace(contract=contract)
diff --git a/tests/testdata/__init__.py b/tests/testdata/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/tests/testdata/compile.py b/tests/testdata/compile.py
new file mode 100644
index 0000000000000000000000000000000000000000..bf9eb30925dd0d0eb0ed02bd8856c88326eeb398
--- /dev/null
+++ b/tests/testdata/compile.py
@@ -0,0 +1,15 @@
+# compile test contracts
+from pathlib import Path
+from mythril.solidity.soliditycontract import SolidityContract
+
+# Recompiles all the to be tested contracts
+root = Path(__file__).parent
+input = root / "input_contracts"
+output = root / "inputs"
+
+for contract in input.iterdir():
+    sol = SolidityContract(str(contract))
+    code = sol.code
+
+    output_file = output / "{}.o".format(contract.name)
+    output_file.write_text(code)
diff --git a/tests/testdata/input_contracts/SecureVault.sol b/tests/testdata/input_contracts/SecureVault.sol
new file mode 100644
index 0000000000000000000000000000000000000000..0335aa03bf8bd732a92ef6b985dc28eb0a0832e9
--- /dev/null
+++ b/tests/testdata/input_contracts/SecureVault.sol
@@ -0,0 +1,120 @@
+
+pragma solidity ^0.8.20;
+
+abstract contract Context {
+    function _msgSender() internal view virtual returns (address) {
+        return msg.sender;
+    }
+
+    function _msgData() internal view virtual returns (bytes calldata) {
+        return msg.data;
+    }
+}
+abstract contract Ownable is Context {
+    address private _owner;
+
+    /**
+     * @dev The caller account is not authorized to perform an operation.
+     */
+    error OwnableUnauthorizedAccount(address account);
+
+    /**
+     * @dev The owner is not a valid owner account. (eg. `address(0)`)
+     */
+    error OwnableInvalidOwner(address owner);
+
+    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
+
+    /**
+     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.
+     */
+    constructor(address initialOwner) {
+        if (initialOwner == address(0)) {
+            revert OwnableInvalidOwner(address(0));
+        }
+        _transferOwnership(initialOwner);
+    }
+
+    /**
+     * @dev Throws if called by any account other than the owner.
+     */
+    modifier onlyOwner() {
+        _checkOwner();
+        _;
+    }
+
+    /**
+     * @dev Returns the address of the current owner.
+     */
+    function owner() public view virtual returns (address) {
+        return _owner;
+    }
+
+    /**
+     * @dev Throws if the sender is not the owner.
+     */
+    function _checkOwner() internal view virtual {
+        if (owner() != _msgSender()) {
+            revert OwnableUnauthorizedAccount(_msgSender());
+        }
+    }
+
+    /**
+     * @dev Leaves the contract without owner. It will not be possible to call
+     * `onlyOwner` functions. Can only be called by the current owner.
+     *
+     * NOTE: Renouncing ownership will leave the contract without an owner,
+     * thereby disabling any functionality that is only available to the owner.
+     */
+    function renounceOwnership() public virtual onlyOwner {
+        _transferOwnership(address(0));
+    }
+
+    /**
+     * @dev Transfers ownership of the contract to a new account (`newOwner`).
+     * Can only be called by the current owner.
+     */
+    function transferOwnership(address newOwner) public virtual onlyOwner {
+        if (newOwner == address(0)) {
+            revert OwnableInvalidOwner(address(0));
+        }
+        _transferOwnership(newOwner);
+    }
+
+    /**
+     * @dev Transfers ownership of the contract to a new account (`newOwner`).
+     * Internal function without access restriction.
+     */
+    function _transferOwnership(address newOwner) internal virtual {
+        address oldOwner = _owner;
+        _owner = newOwner;
+        emit OwnershipTransferred(oldOwner, newOwner);
+    }
+}
+contract SecureVault is Ownable {
+    // Event to emit when Ether is deposited
+    event Deposit(address indexed sender, uint256 amount);
+    // Event to emit when Ether is withdrawn
+    event Withdrawal(address indexed to, uint256 amount);
+
+    // Constructor that sets the initial owner of the SecureVault
+    constructor(address initialOwner) Ownable(initialOwner) {}
+
+    // Function to deposit Ether into the contract. Anybody can deposit.
+    function deposit() external payable {
+        require(msg.value > 0, "Cannot deposit 0 Ether");
+        emit Deposit(_msgSender(), msg.value);
+    }
+
+    // Function that allows only the owner to withdraw Ether from the contract.
+    function withdraw(uint256 amount) external onlyOwner {
+        require(address(this).balance >= amount, "Insufficient balance to withdraw");
+        payable(owner()).transfer(amount);
+        emit Withdrawal(owner(), amount);
+    }
+
+    // Function to check the balance of the contract.
+    function getBalance() external view returns (uint256) {
+        return address(this).balance;
+    }
+}
\ No newline at end of file
diff --git a/tests/testdata/input_contracts/SimpleModifier.sol b/tests/testdata/input_contracts/SimpleModifier.sol
new file mode 100644
index 0000000000000000000000000000000000000000..c4ee0cead0ccb142f72356216b451546911a57f2
--- /dev/null
+++ b/tests/testdata/input_contracts/SimpleModifier.sol
@@ -0,0 +1,19 @@
+pragma solidity ^0.5.0;
+
+
+
+contract SimpleModifier {
+
+  address payable public owner;
+
+  modifier onlyOwner() {
+    require(msg.sender == owner);
+    _;
+  }
+
+
+  function withdrawfunds() public onlyOwner {
+    owner.send(address(this).balance);
+  }
+
+}
diff --git a/tests/testdata/input_contracts/WalletLibrary.sol b/tests/testdata/input_contracts/WalletLibrary.sol
new file mode 100644
index 0000000000000000000000000000000000000000..df10b56bcf6c424692e340f4d9246c292678c7d6
--- /dev/null
+++ b/tests/testdata/input_contracts/WalletLibrary.sol
@@ -0,0 +1,398 @@
+//sol Wallet
+// Multi-sig, daily-limited account proxy/wallet.
+// @authors:
+// Gav Wood <g@ethdev.com>
+// inheritable "property" contract that enables methods to be protected by requiring the acquiescence of either a
+// single, or, crucially, each of a number of, designated owners.
+// usage:
+// use modifiers onlyowner (just own owned) or onlymanyowners(hash), whereby the same hash must be provided by
+// some number (specified in constructor) of the set of owners (specified in the constructor, modifiable) before the
+// interior is executed.
+
+pragma solidity 0.5.0;
+
+contract WalletEvents {
+  // EVENTS
+
+  // this contract only has six types of events: it can accept a confirmation, in which case
+  // we record owner and operation (hash) alongside it.
+  event Confirmation(address owner, bytes32 operation);
+  event Revoke(address owner, bytes32 operation);
+
+  // some others are in the case of an owner changing.
+  event OwnerChanged(address oldOwner, address newOwner);
+  event OwnerAdded(address newOwner);
+  event OwnerRemoved(address oldOwner);
+
+  // the last one is emitted if the required signatures change
+  event RequirementChanged(uint newRequirement);
+
+  // Funds has arrived into the wallet (record how much).
+  event Deposit(address _from, uint value);
+  // Single transaction going out of the wallet (record who signed for it, how much, and to whom it's going).
+  event SingleTransact(address owner, uint value, address to, bytes data, address created);
+  // Multi-sig transaction going out of the wallet (record who signed for it last, the operation hash, how much, and to whom it's going).
+  event MultiTransact(address owner, bytes32 operation, uint value, address to, bytes data, address created);
+  // Confirmation still needed for a transaction.
+  event ConfirmationNeeded(bytes32 operation, address initiator, uint value, address to, bytes data);
+}
+
+contract WalletAbi {
+  // Revokes a prior confirmation of the given operation
+  function revoke(bytes32 _operation) external;
+
+  // Replaces an owner `_from` with another `_to`.
+  function changeOwner(address _from, address _to) external;
+
+  function addOwner(address _owner) external;
+
+  function removeOwner(address _owner) external;
+
+  function changeRequirement(uint _newRequired) external;
+
+  function isOwner(address _addr) public returns (bool);
+
+  function hasConfirmed(bytes32 _operation, address _owner) external returns (bool);
+
+  // (re)sets the daily limit. needs many of the owners to confirm. doesn't alter the amount already spent today.
+  function setDailyLimit(uint _newLimit) external;
+
+  function execute(address _to, uint _value, bytes calldata _data) external returns (bytes32 o_hash);
+  function confirm(bytes32 _h) public returns (bool o_success);
+}
+
+contract WalletLibrary is WalletEvents {
+  // TYPES
+
+  // struct for the status of a pending operation.
+  struct PendingState {
+    uint yetNeeded;
+    uint ownersDone;
+    uint index;
+  }
+
+  // Transaction structure to remember details of transaction lest it need be saved for a later call.
+  struct Transaction {
+    address to;
+    uint value;
+    bytes data;
+  }
+
+  // MODIFIERS
+
+  // simple single-sig function modifier.
+  modifier onlyowner {
+    if (isOwner(msg.sender))
+      _;
+  }
+  // multi-sig function modifier: the operation must have an intrinsic hash in order
+  // that later attempts can be realised as the same underlying operation and
+  // thus count as confirmations.
+  modifier onlymanyowners(bytes32 _operation) {
+    if (confirmAndCheck(_operation))
+      _;
+  }
+
+  // METHODS
+
+  // gets called when no other function matches
+  function() external payable {
+    // just being sent some cash?
+    if (msg.value > 0)
+      emit Deposit(msg.sender, msg.value);
+  }
+
+  // constructor is given number of sigs required to do protected "onlymanyowners" transactions
+  // as well as the selection of addresses capable of confirming them.
+  function initMultiowned(address[] memory _owners, uint _required) public only_uninitialized {
+    m_numOwners = _owners.length + 1;
+    m_owners[1] = uint(msg.sender);
+    m_ownerIndex[uint(msg.sender)] = 1;
+    for (uint i = 0; i < _owners.length; ++i)
+    {
+      m_owners[2 + i] = uint(_owners[i]);
+      m_ownerIndex[uint(_owners[i])] = 2 + i;
+    }
+    m_required = _required;
+  }
+
+  // Revokes a prior confirmation of the given operation
+  function revoke(bytes32 _operation) external {
+    uint ownerIndex = m_ownerIndex[uint(msg.sender)];
+    // make sure they're an owner
+    if (ownerIndex == 0) return;
+    uint ownerIndexBit = 2**ownerIndex;
+    PendingState memory pending = m_pending[_operation];
+    if (pending.ownersDone & ownerIndexBit > 0) {
+      pending.yetNeeded++;
+      pending.ownersDone -= ownerIndexBit;
+      emit Revoke(msg.sender, _operation);
+    }
+  }
+
+  // Replaces an owner `_from` with another `_to`.
+  function changeOwner(address _from, address _to) onlymanyowners(keccak256(msg.data)) external {
+    if (isOwner(_to)) return;
+    uint ownerIndex = m_ownerIndex[uint(_from)];
+    if (ownerIndex == 0) return;
+
+    clearPending();
+    m_owners[ownerIndex] = uint(_to);
+    m_ownerIndex[uint(_from)] = 0;
+    m_ownerIndex[uint(_to)] = ownerIndex;
+    emit OwnerChanged(_from, _to);
+  }
+
+  function addOwner(address _owner) onlymanyowners(keccak256(msg.data)) external {
+    if (isOwner(_owner)) return;
+
+    clearPending();
+    if (m_numOwners >= c_maxOwners)
+      reorganizeOwners();
+    if (m_numOwners >= c_maxOwners)
+      return;
+    m_numOwners++;
+    m_owners[m_numOwners] = uint(_owner);
+    m_ownerIndex[uint(_owner)] = m_numOwners;
+    emit OwnerAdded(_owner);
+  }
+
+  function removeOwner(address _owner) onlymanyowners(keccak256(msg.data)) external {
+    uint ownerIndex = m_ownerIndex[uint(_owner)];
+    if (ownerIndex == 0) return;
+    if (m_required > m_numOwners - 1) return;
+
+    m_owners[ownerIndex] = 0;
+    m_ownerIndex[uint(_owner)] = 0;
+    clearPending();
+    reorganizeOwners(); //make sure m_numOwner is equal to the number of owners and always points to the optimal free slot
+    emit OwnerRemoved(_owner);
+  }
+
+  function changeRequirement(uint _newRequired) onlymanyowners(keccak256(msg.data)) external {
+    if (_newRequired > m_numOwners) return;
+    m_required = _newRequired;
+    clearPending();
+    emit RequirementChanged(_newRequired);
+  }
+
+  // Gets an owner by 0-indexed position (using numOwners as the count)
+  function getOwner(uint ownerIndex) external view returns (address) {
+    return address(m_owners[ownerIndex + 1]);
+  }
+
+  function isOwner(address _addr) public view returns (bool) {
+    return m_ownerIndex[uint(_addr)] > 0;
+  }
+
+  function hasConfirmed(bytes32 _operation, address _owner) external view returns (bool) {
+    PendingState memory pending = m_pending[_operation];
+    uint ownerIndex = m_ownerIndex[uint(_owner)];
+
+    // make sure they're an owner
+    if (ownerIndex == 0) return false;
+
+    // determine the bit to set for this owner.
+    uint ownerIndexBit = 2**ownerIndex;
+    return !(pending.ownersDone & ownerIndexBit == 0);
+  }
+
+  // constructor - stores initial daily limit and records the present day's index.
+  function initDaylimit(uint _limit) public only_uninitialized {
+    m_dailyLimit = _limit;
+    m_lastDay = today();
+  }
+  // (re)sets the daily limit. needs many of the owners to confirm. doesn't alter the amount already spent today.
+  function setDailyLimit(uint _newLimit) onlymanyowners(keccak256(msg.data)) external {
+    m_dailyLimit = _newLimit;
+  }
+  // resets the amount already spent today. needs many of the owners to confirm.
+  function resetSpentToday() onlymanyowners(keccak256(msg.data)) external {
+    m_spentToday = 0;
+  }
+
+  // throw unless the contract is not yet initialized.
+  modifier only_uninitialized { require(m_numOwners == 0); _; }
+
+  // constructor - just pass on the owner array to the multiowned and
+  // the limit to daylimit
+  function initWallet(address[] memory _owners, uint _required, uint _daylimit) public only_uninitialized {
+    initDaylimit(_daylimit);
+    initMultiowned(_owners, _required);
+  }
+
+  // kills the contract sending everything to `_to`.
+  function kill(address payable _to) onlymanyowners(keccak256(msg.data)) external {
+    selfdestruct(_to);
+  }
+
+  // Outside-visible transact entry point. Executes transaction immediately if below daily spend limit.
+  // If not, goes into multisig process. We provide a hash on return to allow the sender to provide
+  // shortcuts for the other confirmations (allowing them to avoid replicating the _to, _value
+  // and _data arguments). They still get the option of using them if they want, anyways.
+  function execute(address _to, uint _value, bytes calldata _data) external onlyowner returns (bytes32 o_hash) {
+    // first, take the opportunity to check that we're under the daily limit.
+    if ((_data.length == 0 && underLimit(_value)) || m_required == 1) {
+      // yes - just execute the call.
+      address created;
+      if (_to == address(0)) {
+        created = create(_value, _data);
+      } else {
+        (bool success, bytes memory data) = _to.call.value(_value)(_data);
+        require(success);
+      }
+      emit SingleTransact(msg.sender, _value, _to, _data, created);
+    } else {
+      // determine our operation hash.
+      o_hash = keccak256(abi.encode(msg.data, block.number));
+      // store if it's new
+      if (m_txs[o_hash].to == address(0) && m_txs[o_hash].value == 0 && m_txs[o_hash].data.length == 0) {
+        m_txs[o_hash].to = _to;
+        m_txs[o_hash].value = _value;
+        m_txs[o_hash].data = _data;
+      }
+      if (!confirm(o_hash)) {
+        emit ConfirmationNeeded(o_hash, msg.sender, _value, _to, _data);
+      }
+    }
+  }
+
+  function create(uint _value, bytes memory _code) internal returns (address o_addr) {
+    uint256 o_size;
+    assembly {
+      o_addr := create(_value, add(_code, 0x20), mload(_code))
+      o_size := extcodesize(o_addr)
+    }
+    require(o_size != 0);
+  }
+
+  // confirm a transaction through just the hash. we use the previous transactions map, m_txs, in order
+  // to determine the body of the transaction from the hash provided.
+  function confirm(bytes32 _h) public onlymanyowners(_h) returns (bool o_success) {
+    if (m_txs[_h].to != address(0) || m_txs[_h].value != 0 || m_txs[_h].data.length != 0) {
+      address created;
+      if (m_txs[_h].to == address(0)) {
+        created = create(m_txs[_h].value, m_txs[_h].data);
+      } else {
+          (bool success, bytes memory data) = m_txs[_h].to.call.value(m_txs[_h].value)(m_txs[_h].data);
+        require(success);
+      }
+
+      emit MultiTransact(msg.sender, _h, m_txs[_h].value, m_txs[_h].to, m_txs[_h].data, created);
+      delete m_txs[_h];
+      return true;
+    }
+  }
+
+  // INTERNAL METHODS
+
+  function confirmAndCheck(bytes32 _operation) internal returns (bool) {
+    // determine what index the present sender is:
+    uint ownerIndex = m_ownerIndex[uint(msg.sender)];
+    // make sure they're an owner
+    if (ownerIndex == 0) return false;
+
+    PendingState memory pending = m_pending[_operation];
+    // if we're not yet working on this operation, switch over and reset the confirmation status.
+    if (pending.yetNeeded == 0) {
+      // reset count of confirmations needed.
+      pending.yetNeeded = m_required;
+      // reset which owners have confirmed (none) - set our bitmap to 0.
+      pending.ownersDone = 0;
+      pending.index = m_pendingIndex.length++;
+      m_pendingIndex[pending.index] = _operation;
+    }
+    // determine the bit to set for this owner.
+    uint ownerIndexBit = 2**ownerIndex;
+    // make sure we (the message sender) haven't confirmed this operation previously.
+    if (pending.ownersDone & ownerIndexBit == 0) {
+      emit Confirmation(msg.sender, _operation);
+      // ok - check if count is enough to go ahead.
+      if (pending.yetNeeded <= 1) {
+        // enough confirmations: reset and run interior.
+        delete m_pendingIndex[m_pending[_operation].index];
+        delete m_pending[_operation];
+        return true;
+      }
+      else
+      {
+        // not enough: record that this owner in particular confirmed.
+        pending.yetNeeded--;
+        pending.ownersDone |= ownerIndexBit;
+      }
+    }
+  }
+
+  function reorganizeOwners() private {
+    uint free = 1;
+    while (free < m_numOwners)
+    {
+      while (free < m_numOwners && m_owners[free] != 0) free++;
+      while (m_numOwners > 1 && m_owners[m_numOwners] == 0) m_numOwners--;
+      if (free < m_numOwners && m_owners[m_numOwners] != 0 && m_owners[free] == 0)
+      {
+        m_owners[free] = m_owners[m_numOwners];
+        m_ownerIndex[m_owners[free]] = free;
+        m_owners[m_numOwners] = 0;
+      }
+    }
+  }
+
+  // checks to see if there is at least `_value` left from the daily limit today. if there is, subtracts it and
+  // returns true. otherwise just returns false.
+  function underLimit(uint _value) internal onlyowner returns (bool) {
+    // reset the spend limit if we're on a different day to last time.
+    if (today() > m_lastDay) {
+      m_spentToday = 0;
+      m_lastDay = today();
+    }
+    // check to see if there's enough left - if so, subtract and return true.
+    // overflow protection                    // dailyLimit check
+    if (m_spentToday + _value >= m_spentToday && m_spentToday + _value <= m_dailyLimit) {
+      m_spentToday += _value;
+      return true;
+    }
+    return false;
+  }
+
+  // determines today's index.
+  function today() private view returns (uint) { return now / 1 days; }
+
+  function clearPending() internal {
+    uint length = m_pendingIndex.length;
+
+    for (uint i = 0; i < length; ++i) {
+      delete m_txs[m_pendingIndex[i]];
+
+      if (m_pendingIndex[i] != 0)
+        delete m_pending[m_pendingIndex[i]];
+    }
+
+    delete m_pendingIndex;
+  }
+
+  // FIELDS
+  address _walletLibrary = 0xCAfEcAfeCAfECaFeCaFecaFecaFECafECafeCaFe;
+
+  // the number of owners that must confirm the same operation before it is run.
+  uint public m_required;
+  // pointer used to find a free slot in m_owners
+  uint public m_numOwners;
+
+  uint public m_dailyLimit;
+  uint public m_spentToday;
+  uint public m_lastDay;
+
+  // list of owners
+  uint[256] m_owners;
+
+  uint c_maxOwners = 250;
+  // index on the list of owners to allow reverse lookup
+  mapping(uint => uint) m_ownerIndex;
+  // the ongoing operations.
+  mapping(bytes32 => PendingState) m_pending;
+  bytes32[] m_pendingIndex;
+
+  // pending transactions we have at present.
+  mapping (bytes32 => Transaction) m_txs;
+}
diff --git a/tests/testdata/input_contracts/calls.sol b/tests/testdata/input_contracts/calls.sol
new file mode 100644
index 0000000000000000000000000000000000000000..9c1222c9c727d27ee5c5af523c6ce3ff4fec9100
--- /dev/null
+++ b/tests/testdata/input_contracts/calls.sol
@@ -0,0 +1,37 @@
+pragma solidity ^0.5.0;
+
+
+contract Caller {
+
+	address public fixed_address;
+	address public stored_address;
+
+	uint256 statevar;
+
+	constructor(address addr) public {
+		fixed_address = address(0x552254CbAaF32613C6c0450CF19524594eF84044);
+	}
+
+	function thisisfine() public {
+	    fixed_address.call("");
+	}
+
+	function reentrancy() public {
+	    fixed_address.call("");
+	    statevar = 0;
+	}
+
+	function calluseraddress(address addr) public {
+	    addr.call("");
+	}
+
+	function callstoredaddress() public {
+	    stored_address.call("");
+	    statevar = 0;
+	}
+
+	function setstoredaddress(address addr) public {
+	    stored_address = addr;
+	}
+
+}
diff --git a/tests/testdata/input_contracts/constructor_assert.sol b/tests/testdata/input_contracts/constructor_assert.sol
new file mode 100644
index 0000000000000000000000000000000000000000..37877a2b5475fbe97c4cfc16b04c245e120f1562
--- /dev/null
+++ b/tests/testdata/input_contracts/constructor_assert.sol
@@ -0,0 +1,8 @@
+pragma solidity ^0.5.0;
+
+
+contract AssertFail {
+    constructor(uint8 var1) public {
+        assert(var1 > 0);
+    }
+}
diff --git a/tests/testdata/input_contracts/destruct_crlf.sol b/tests/testdata/input_contracts/destruct_crlf.sol
new file mode 100644
index 0000000000000000000000000000000000000000..2aa70f7543ace6d2ea69ac4e33da3c2c2d44743b
--- /dev/null
+++ b/tests/testdata/input_contracts/destruct_crlf.sol
@@ -0,0 +1,10 @@
+pragma solidity ^0.5.0;
+
+
+contract Suicide {
+
+  function kill(address payable addr) public {
+    selfdestruct(addr);
+  }
+
+}
diff --git a/tests/testdata/input_contracts/environments.sol b/tests/testdata/input_contracts/environments.sol
new file mode 100644
index 0000000000000000000000000000000000000000..c872e9a96fd6a60c5d17021f15587c692a4f8b6b
--- /dev/null
+++ b/tests/testdata/input_contracts/environments.sol
@@ -0,0 +1,19 @@
+pragma solidity ^0.5.0;
+
+
+contract IntegerOverflow2 {
+    uint256 public count = 7;
+    mapping(address => uint256) balances;
+
+  function batchTransfer(address[] memory _receivers, uint256 _value) public returns(bool){
+    uint cnt = _receivers.length;
+    uint256 amount = uint256(cnt) * _value;
+
+    require(cnt > 0 && cnt <= 20);
+
+    balances[msg.sender] -=amount;
+
+    return true;
+  }
+
+}
diff --git a/tests/testdata/input_contracts/ether_send.sol b/tests/testdata/input_contracts/ether_send.sol
new file mode 100644
index 0000000000000000000000000000000000000000..ce70a9f482e13c738cdf6fe1a42e090de4385b7c
--- /dev/null
+++ b/tests/testdata/input_contracts/ether_send.sol
@@ -0,0 +1,35 @@
+pragma solidity ^0.5.0;
+
+
+
+contract Crowdfunding {
+
+  mapping(address => uint) public balances;
+  address public owner;
+  uint256 INVEST_MIN = 1 ether;
+  uint256 INVEST_MAX = 10 ether;
+
+  modifier onlyOwner() {
+    require(msg.sender == owner);
+    _;
+  }
+
+  function crowdfunding() public {
+    owner = msg.sender;
+  }
+
+  function withdrawfunds() public onlyOwner {
+    msg.sender.transfer(address(this).balance);
+  }
+
+  function invest() public payable {
+    require(msg.value > INVEST_MIN && msg.value < INVEST_MAX);
+
+    balances[msg.sender] += msg.value;
+  }
+
+  function getBalance() public view returns (uint) {
+    return balances[msg.sender];
+  }
+
+}
diff --git a/tests/testdata/input_contracts/exceptions.sol b/tests/testdata/input_contracts/exceptions.sol
new file mode 100644
index 0000000000000000000000000000000000000000..bc0e8ca1ddc3a960a70eea733b0ed1e303b0bb6f
--- /dev/null
+++ b/tests/testdata/input_contracts/exceptions.sol
@@ -0,0 +1,48 @@
+pragma solidity ^0.5.0;
+
+
+contract Exceptions {
+
+    uint256[8] myarray;
+
+    function assert1() public pure {
+    	uint256 i = 1;
+        assert(i == 0);
+    }
+
+    function assert2() public pure {
+    	uint256 i = 1;
+        assert(i > 0);
+    }
+
+    function assert3(uint256 input) public pure {
+        if (input > 10) {
+            assert(input != 23);
+        }
+    }
+
+    function requireisfine(uint256 input) public pure {
+        require(input != 23);
+    }
+
+    function divisionby0(uint256 input) public pure {
+        uint256 i = 1/input;
+    }
+
+    function thisisfine(uint256 input) public pure {
+        if (input > 0) {
+            uint256 i = 1/input;
+        }
+    }
+
+    function arrayaccess(uint256 index) public view {
+        uint256 i = myarray[index];
+    }
+
+    function thisisalsofind(uint256 index) public view {
+        if (index < 8) {
+            uint256 i = myarray[index];
+        }
+    }
+
+}
diff --git a/tests/testdata/input_contracts/exceptions_0.8.0.sol b/tests/testdata/input_contracts/exceptions_0.8.0.sol
new file mode 100644
index 0000000000000000000000000000000000000000..61e6dbffabd0478569cce638fbfbf4da35afec15
--- /dev/null
+++ b/tests/testdata/input_contracts/exceptions_0.8.0.sol
@@ -0,0 +1,21 @@
+pragma solidity ^0.8.0;
+
+
+contract Exceptions {
+
+    uint val;
+
+    function change_val() public {
+        val = 1;
+    }
+    function assert1() public pure {
+    	uint256 i = 1;
+        assert(i == 0);
+    }
+
+    function fail() public view {
+        assert(val==2);
+    }
+
+
+}
diff --git a/tests/testdata/input_contracts/extcall.sol b/tests/testdata/input_contracts/extcall.sol
new file mode 100644
index 0000000000000000000000000000000000000000..1408b5e7a003f15b7ae3583142dd052bfe399b70
--- /dev/null
+++ b/tests/testdata/input_contracts/extcall.sol
@@ -0,0 +1,15 @@
+pragma solidity ^0.6.0;
+
+interface IERC20 {
+    function transfer(address to, uint256 amount) external returns (bool);
+}
+
+contract A {
+    constructor() public {
+        /// nothing detected
+        address(0).call("");
+        IERC20(address(0)).transfer(address(0), 0);
+        assert(false);
+    }
+}
+
diff --git a/tests/testdata/input_contracts/flag_array.sol b/tests/testdata/input_contracts/flag_array.sol
new file mode 100644
index 0000000000000000000000000000000000000000..22c2aabcff893a6c71b1012a1f64ae95ca1e4efb
--- /dev/null
+++ b/tests/testdata/input_contracts/flag_array.sol
@@ -0,0 +1,17 @@
+pragma solidity ^0.8.0;
+
+contract BasicLiquidation {
+    bool[4096] _flags;
+    constructor() payable
+    {
+        require(msg.value == 0.1 ether);
+        _flags[1234] = true;
+    }
+    function extractMoney(uint256 idx) public payable
+    {
+        require(idx >= 0);
+        require(idx < 4096);
+        require(_flags[idx]);
+        payable(msg.sender).transfer(address(this).balance);
+    }
+}
\ No newline at end of file
diff --git a/tests/testdata/input_contracts/integer_edge_case.sol b/tests/testdata/input_contracts/integer_edge_case.sol
new file mode 100644
index 0000000000000000000000000000000000000000..a3258dc4e958c075768947453c9bd7d503faabcb
--- /dev/null
+++ b/tests/testdata/input_contracts/integer_edge_case.sol
@@ -0,0 +1,12 @@
+// SPDX-License-Identifier: MIT
+pragma solidity ^0.8.19;
+contract B {
+    function f(uint256 arg) public view returns(uint256) {
+        uint256 res;
+        unchecked{        
+            res = 10_000_000_000 * arg; // undetected overflow
+        }
+        //assert(res > arg); // the assertion violation is correctly detected if added
+        return res;       
+    }
+}
diff --git a/tests/testdata/input_contracts/kcalls.sol b/tests/testdata/input_contracts/kcalls.sol
new file mode 100644
index 0000000000000000000000000000000000000000..d2bd37e67396c9e547a231dda35e74dd53e4161f
--- /dev/null
+++ b/tests/testdata/input_contracts/kcalls.sol
@@ -0,0 +1,19 @@
+pragma solidity ^0.5.0;
+
+
+contract Kcalls {
+    uint public n;
+    address public sender;
+
+    function callSetN(address _e, uint _n) public {
+        _e.call(abi.encode(bytes4(keccak256("setN(uint256)")), _n));
+    }
+
+    function callcodeSetN(address _e, uint _n) public view {
+        _e.staticcall(abi.encode(bytes4(keccak256("setN(uint256)")), _n));
+    }
+
+    function delegatecallSetN(address _e, uint _n) public {
+        _e.delegatecall(abi.encode(bytes4(keccak256("setN(uint256)")), _n));
+    }
+}
diff --git a/tests/testdata/input_contracts/metacoin.sol b/tests/testdata/input_contracts/metacoin.sol
new file mode 100644
index 0000000000000000000000000000000000000000..846425ad6713ba052c97850e66114bc897586cc0
--- /dev/null
+++ b/tests/testdata/input_contracts/metacoin.sol
@@ -0,0 +1,16 @@
+pragma solidity ^0.5.0;
+
+
+contract MetaCoin {
+	mapping (address => uint) public balances;
+	constructor() public {
+		balances[msg.sender] = 10000;
+	}
+
+	function sendToken(address receiver, uint amount) public returns(bool successful){
+		if (balances[msg.sender] < amount) return false;
+		balances[msg.sender] -= amount;
+		balances[receiver] += amount;
+		return false;
+	}
+}
diff --git a/tests/testdata/input_contracts/multi_contracts.sol b/tests/testdata/input_contracts/multi_contracts.sol
new file mode 100644
index 0000000000000000000000000000000000000000..e2ac15068a3a86b72266c34bcd2ffcbbd44cee03
--- /dev/null
+++ b/tests/testdata/input_contracts/multi_contracts.sol
@@ -0,0 +1,16 @@
+pragma solidity ^0.5.0;
+
+
+contract Transfer1 {
+    function transfer() public {
+        msg.sender.transfer(1 ether);
+    }
+
+}
+
+
+contract Transfer2 {
+    function transfer() public {
+        msg.sender.transfer(2 ether);
+    }
+}
diff --git a/tests/testdata/input_contracts/nonascii.sol b/tests/testdata/input_contracts/nonascii.sol
new file mode 100644
index 0000000000000000000000000000000000000000..f660f105effc3749a87623cd8f39aeb09bf5d169
--- /dev/null
+++ b/tests/testdata/input_contracts/nonascii.sol
@@ -0,0 +1,8 @@
+pragma solidity ^0.5.0;
+
+
+contract nonAscii {
+  function renderNonAscii () public pure returns (string memory) {
+	  return "Хэллоу Ворлд";
+  }
+}
diff --git a/tests/testdata/input_contracts/old_origin.sol b/tests/testdata/input_contracts/old_origin.sol
new file mode 100644
index 0000000000000000000000000000000000000000..020f31db7dbbeed6f908484f557656b0b536d788
--- /dev/null
+++ b/tests/testdata/input_contracts/old_origin.sol
@@ -0,0 +1,36 @@
+pragma solidity ^0.4.11;
+
+
+contract Origin {
+  address public owner;
+
+
+  /**
+   * @dev The Ownable constructor sets the original `owner` of the contract to the sender
+   * account.
+   */
+  function Origin()  {
+    owner = msg.sender;
+  }
+
+
+  /**
+   * @dev Throws if called by any account other than the owner.
+   */
+  modifier onlyOwner() {
+    require(tx.origin != owner);
+    _;
+  }
+
+
+  /**
+   * @dev Allows the current owner to transfer control of the contract to a newOwner.
+   * @param newOwner The address to transfer ownership to.
+   */
+  function transferOwnership(address newOwner) public onlyOwner {
+    if (newOwner != address(0)) {
+      owner = newOwner;
+    }
+  }
+
+}
diff --git a/tests/testdata/input_contracts/old_version.sol b/tests/testdata/input_contracts/old_version.sol
new file mode 100644
index 0000000000000000000000000000000000000000..95a27bc4ba91747b25cdbc0b5406d1fbc2619314
--- /dev/null
+++ b/tests/testdata/input_contracts/old_version.sol
@@ -0,0 +1,2 @@
+pragma solidity 0.4.11;
+contract test { }
diff --git a/tests/testdata/input_contracts/origin.sol b/tests/testdata/input_contracts/origin.sol
new file mode 100644
index 0000000000000000000000000000000000000000..44bdd19b9b0f5b746b2950886c0b0a9754e231c9
--- /dev/null
+++ b/tests/testdata/input_contracts/origin.sol
@@ -0,0 +1,36 @@
+pragma solidity ^0.5.0;
+
+
+contract Origin {
+  address public owner;
+
+
+  /**
+   * @dev The Ownable constructor sets the original `owner` of the contract to the sender
+   * account.
+   */
+  constructor() public {
+    owner = msg.sender;
+  }
+
+
+  /**
+   * @dev Throws if called by any account other than the owner.
+   */
+  modifier onlyOwner() {
+    require(tx.origin != owner);
+    _;
+  }
+
+
+  /**
+   * @dev Allows the current owner to transfer control of the contract to a newOwner.
+   * @param newOwner The address to transfer ownership to.
+   */
+  function transferOwnership(address newOwner) public onlyOwner {
+    if (newOwner != address(0)) {
+      owner = newOwner;
+    }
+  }
+
+}
diff --git a/tests/testdata/input_contracts/overflow.sol b/tests/testdata/input_contracts/overflow.sol
new file mode 100644
index 0000000000000000000000000000000000000000..ee94c4c69d8aa6612a7815e0b57e98b1eac20fb6
--- /dev/null
+++ b/tests/testdata/input_contracts/overflow.sol
@@ -0,0 +1,23 @@
+pragma solidity ^0.5.0;
+
+
+contract Over {
+
+  mapping(address => uint) balances;
+  uint public totalSupply;
+
+  constructor(uint _initialSupply) public {
+    balances[msg.sender] = totalSupply = _initialSupply;
+  }
+
+  function sendeth(address _to, uint _value) public returns (bool) {
+    require(balances[msg.sender] - _value >= 0);
+    balances[msg.sender] -= _value;
+    balances[_to] += _value;
+    return true;
+  }
+
+  function balanceOf(address _owner) public view returns (uint balance) {
+    return balances[_owner];
+  }
+}
diff --git a/tests/testdata/input_contracts/regression_1.sol b/tests/testdata/input_contracts/regression_1.sol
new file mode 100644
index 0000000000000000000000000000000000000000..73d9d572518956d42624b375ad34ac0218900501
--- /dev/null
+++ b/tests/testdata/input_contracts/regression_1.sol
@@ -0,0 +1,53 @@
+pragma solidity ^0.8.0;
+
+contract Regression_1 {
+    mapping (address => uint256) private userBalances;
+
+    uint256 public constant TOKEN_PRICE = 1 ether;
+    string public constant name = "Moon Token";
+    string public constant symbol = "MOON";
+
+    // The token is non-divisible
+    // You can buy/sell/transfer 1, 2, 3, or 46 tokens but not 33.5
+    uint8 public constant decimals = 0;
+
+    uint256 public totalSupply;
+
+    function buy(uint256 _amount) external payable {
+        require(
+            msg.value == _amount * TOKEN_PRICE, 
+            "Ether submitted and Token amount to buy mismatch"
+        );
+
+        userBalances[msg.sender] += _amount;
+        totalSupply += _amount;
+    }
+
+    function sell(uint256 _amount) external {
+        require(userBalances[msg.sender] >= _amount, "Insufficient balance");
+
+        userBalances[msg.sender] -= _amount;
+        totalSupply -= _amount;
+
+        (bool success, ) = msg.sender.call{value: _amount * TOKEN_PRICE}("");
+        require(success, "Failed to send Ether");
+
+        assert(getEtherBalance() == totalSupply * TOKEN_PRICE);
+    }
+
+    function transfer(address _to, uint256 _amount) external {
+        require(_to != address(0), "_to address is not valid");
+        require(userBalances[msg.sender] >= _amount, "Insufficient balance");
+        
+        userBalances[msg.sender] -= _amount;
+        userBalances[_to] += _amount;
+    }
+
+    function getEtherBalance() public view returns (uint256) {
+        return address(this).balance;
+    }
+
+    function getUserBalance(address _user) external view returns (uint256) {
+        return userBalances[_user];
+    }
+}
\ No newline at end of file
diff --git a/tests/testdata/input_contracts/returnvalue.sol b/tests/testdata/input_contracts/returnvalue.sol
new file mode 100644
index 0000000000000000000000000000000000000000..f10a12f77d4026646108ddcdccf2fc1ae6e7f80c
--- /dev/null
+++ b/tests/testdata/input_contracts/returnvalue.sol
@@ -0,0 +1,17 @@
+pragma solidity ^0.5.0;
+
+
+contract ReturnValue {
+
+  address public callee = 0xE0f7e56E62b4267062172495D7506087205A4229;
+
+  function callnotchecked() public {
+    callee.call("");
+  }
+
+  function callchecked() public {
+    (bool success, bytes memory data) = callee.call("");
+    require(success);
+  }
+
+}
diff --git a/tests/testdata/input_contracts/rubixi.sol b/tests/testdata/input_contracts/rubixi.sol
new file mode 100644
index 0000000000000000000000000000000000000000..e919d2373d4a65de34dcb6f57bde69a700f13f91
--- /dev/null
+++ b/tests/testdata/input_contracts/rubixi.sol
@@ -0,0 +1,152 @@
+pragma solidity ^0.5.0;
+
+
+contract Rubixi {
+    //Declare variables for storage critical to contract
+    uint private balance = 0;
+    uint private collectedFees = 0;
+    uint private feePercent = 10;
+    uint private pyramidMultiplier = 300;
+    uint private payoutOrder = 0;
+
+    address payable private creator;
+
+    modifier onlyowner {
+        if (msg.sender == creator) _;
+    }
+
+    struct Participant {
+        address payable etherAddress;
+        uint payout;
+    }
+
+    //Fallback function
+    function() external payable {
+        init();
+    }
+
+    //Sets creator
+    function dynamicPyramid() public {
+        creator = msg.sender;
+    }
+
+    Participant[] private participants;
+
+    //Fee functions for creator
+    function collectAllFees() public onlyowner {
+        require(collectedFees == 0);
+        creator.transfer(collectedFees);
+        collectedFees = 0;
+    }
+
+    function collectFeesInEther(uint _amt) public onlyowner {
+        _amt *= 1 ether;
+        if (_amt > collectedFees) collectAllFees();
+
+        require(collectedFees == 0);
+
+        creator.transfer(_amt);
+        collectedFees -= _amt;
+    }
+
+    function collectPercentOfFees(uint _pcent) public onlyowner {
+        require(collectedFees == 0 || _pcent > 100);
+
+        uint feesToCollect = collectedFees / 100 * _pcent;
+        creator.transfer(feesToCollect);
+        collectedFees -= feesToCollect;
+    }
+
+    //Functions for changing variables related to the contract
+    function changeOwner(address payable _owner) public onlyowner {
+        creator = _owner;
+    }
+
+    function changeMultiplier(uint _mult) public onlyowner {
+        require(_mult > 300 || _mult < 120);
+        pyramidMultiplier = _mult;
+    }
+
+    function changeFeePercentage(uint _fee) public onlyowner {
+        require(_fee > 10);
+        feePercent = _fee;
+    }
+
+    //Functions to provide information to end-user using JSON interface or other interfaces
+    function currentMultiplier() public view returns (uint multiplier, string memory info) {
+        multiplier = pyramidMultiplier;
+        info = "This multiplier applies to you as soon as transaction is received, may be lowered to hasten payouts or increased if payouts are fast enough. Due to no float or decimals, multiplier is x100 for a fractional multiplier e.g. 250 is actually a 2.5x multiplier. Capped at 3x max and 1.2x min.";
+    }
+
+    function currentFeePercentage() public view returns (uint fee, string memory info) {
+        fee = feePercent;
+        info = "Shown in % form. Fee is halved(50%) for amounts equal or greater than 50 ethers. (Fee may change, but is capped to a maximum of 10%)";
+}
+
+    function currentPyramidBalanceApproximately() public view returns (uint pyramidBalance, string memory info) {
+        pyramidBalance = balance / 1 ether;
+        info = "All balance values are measured in Ethers, note that due to no decimal placing, these values show up as integers only, within the contract itself you will get the exact decimal value you are supposed to";
+    }
+
+    function nextPayoutWhenPyramidBalanceTotalsApproximately() public view returns (uint balancePayout) {
+        balancePayout = participants[payoutOrder].payout / 1 ether;
+    }
+
+    function feesSeperateFromBalanceApproximately() public view returns (uint fees) {
+        fees = collectedFees / 1 ether;
+    }
+
+    function totalParticipants() public view returns (uint count) {
+        count = participants.length;
+    }
+
+    function numberOfParticipantsWaitingForPayout() public view returns (uint count) {
+        count = participants.length - payoutOrder;
+    }
+
+    function participantDetails(uint orderInPyramid) public view returns (address addr, uint payout) {
+        if (orderInPyramid <= participants.length) {
+            addr = participants[orderInPyramid].etherAddress;
+            payout = participants[orderInPyramid].payout / 1 ether;
+        }
+    }
+
+    //init function run on fallback
+    function init() private {
+        //Ensures only tx with value of 1 ether or greater are processed and added to pyramid
+        if (msg.value < 1 ether) {
+            collectedFees += msg.value;
+            return;
+        }
+
+        uint _fee = feePercent;
+        // 50% fee rebate on any ether value of 50 or greater
+        if (msg.value >= 50 ether) _fee /= 2;
+
+        addPayout(_fee);
+    }
+
+    //Function called for valid tx to the contract
+    function addPayout(uint _fee) private {
+        //Adds new address to participant array
+        participants.push(Participant(msg.sender, (msg.value * pyramidMultiplier) / 100));
+
+        // These statements ensure a quicker payout system to
+        // later pyramid entrants, so the pyramid has a longer lifespan
+        if (participants.length == 10) pyramidMultiplier = 200;
+        else if (participants.length == 25) pyramidMultiplier = 150;
+
+        // collect fees and update contract balance
+        balance += (msg.value * (100 - _fee)) / 100;
+        collectedFees += (msg.value * _fee) / 100;
+
+        //Pays earlier participiants if balance sufficient
+        while (balance > participants[payoutOrder].payout) {
+            uint payoutToSend = participants[payoutOrder].payout;
+            participants[payoutOrder].etherAddress.transfer(payoutToSend);
+
+            balance -= participants[payoutOrder].payout;
+            payoutOrder += 1;
+        }
+    }
+}
diff --git a/tests/testdata/input_contracts/safe_funcs.sol b/tests/testdata/input_contracts/safe_funcs.sol
new file mode 100644
index 0000000000000000000000000000000000000000..61e6dbffabd0478569cce638fbfbf4da35afec15
--- /dev/null
+++ b/tests/testdata/input_contracts/safe_funcs.sol
@@ -0,0 +1,21 @@
+pragma solidity ^0.8.0;
+
+
+contract Exceptions {
+
+    uint val;
+
+    function change_val() public {
+        val = 1;
+    }
+    function assert1() public pure {
+    	uint256 i = 1;
+        assert(i == 0);
+    }
+
+    function fail() public view {
+        assert(val==2);
+    }
+
+
+}
diff --git a/tests/testdata/input_contracts/suicide.sol b/tests/testdata/input_contracts/suicide.sol
new file mode 100644
index 0000000000000000000000000000000000000000..658da2d7bce21769d219f3fac0932e591261103b
--- /dev/null
+++ b/tests/testdata/input_contracts/suicide.sol
@@ -0,0 +1,10 @@
+pragma solidity ^0.5.0;
+
+
+contract Suicide {
+
+  function kill(address payable addr) public {
+    selfdestruct(addr);
+  }
+
+}
diff --git a/tests/testdata/input_contracts/symbolic_exec_bytecode.sol b/tests/testdata/input_contracts/symbolic_exec_bytecode.sol
new file mode 100644
index 0000000000000000000000000000000000000000..8479ad9a1562c71e8e4f51d5a1ad598b43583231
--- /dev/null
+++ b/tests/testdata/input_contracts/symbolic_exec_bytecode.sol
@@ -0,0 +1,23 @@
+pragma solidity ^0.8.0;
+
+contract Test {
+    uint256 immutable inputSize;
+
+    constructor(uint256 _log2Size) {
+        inputSize = (1 << _log2Size);
+    }
+
+    function getBytes(bytes calldata _input) public view returns (bytes32) {
+        require(
+            _input.length > 0 && _input.length <= inputSize,
+            "input len: (0,inputSize]"
+        );
+
+        return "123";
+    }
+
+    function commencekilling() public {
+        address payable receiver = payable(msg.sender);
+	selfdestruct(receiver);
+    }
+}
diff --git a/tests/testdata/input_contracts/underflow.sol b/tests/testdata/input_contracts/underflow.sol
new file mode 100644
index 0000000000000000000000000000000000000000..6172a107fb9b2ca91f22c680911fe30a30f0bf6e
--- /dev/null
+++ b/tests/testdata/input_contracts/underflow.sol
@@ -0,0 +1,23 @@
+pragma solidity ^0.5.0;
+
+
+contract Under {
+
+  mapping(address => uint) balances;
+  uint public totalSupply;
+
+  constructor(uint _initialSupply) public {
+    balances[msg.sender] = totalSupply = _initialSupply;
+  }
+
+  function sendeth(address _to, uint _value) public returns (bool) {
+    require(balances[msg.sender] - _value >= 0);
+    balances[msg.sender] -= _value;
+    balances[_to] += _value;
+    return true;
+  }
+
+  function balanceOf(address _owner) public view returns (uint balance) {
+    return balances[_owner];
+  }
+}
diff --git a/tests/testdata/input_contracts/version_2.sol b/tests/testdata/input_contracts/version_2.sol
new file mode 100644
index 0000000000000000000000000000000000000000..a2679467031bce5d079fa12143ad3f3fe6a082cc
--- /dev/null
+++ b/tests/testdata/input_contracts/version_2.sol
@@ -0,0 +1,9 @@
+
+// VERSION: pragma solidity ^0.7.0;
+
+contract Test {
+    uint256 input;
+    function add(uint256 a, uint256 b) public {
+        input = a + b;
+    }
+}
diff --git a/tests/testdata/input_contracts/version_3.sol b/tests/testdata/input_contracts/version_3.sol
new file mode 100644
index 0000000000000000000000000000000000000000..9cf352f1d99f3ada109dee735bd3fed24838f315
--- /dev/null
+++ b/tests/testdata/input_contracts/version_3.sol
@@ -0,0 +1,9 @@
+
+/* ORIGINAL: pragma solidity ^0.7.0; */
+
+contract Test {
+    uint256 input;
+    function add(uint256 a, uint256 b) public {
+        input = a + b;
+    }
+}
diff --git a/tests/testdata/input_contracts/version_chaos.sol b/tests/testdata/input_contracts/version_chaos.sol
new file mode 100644
index 0000000000000000000000000000000000000000..2a9f20638c13a984ea9e1b1fd2a94e36548e940f
--- /dev/null
+++ b/tests/testdata/input_contracts/version_chaos.sol
@@ -0,0 +1,8 @@
+pragma solidity >= 0   .   5  .   0 < 0  .  6   .  0;
+
+contract Test {
+    uint256 input;
+    function add(uint256 a, uint256 b) public {
+        input = a + b;
+    }
+}
diff --git a/tests/testdata/input_contracts/version_contract.sol b/tests/testdata/input_contracts/version_contract.sol
new file mode 100644
index 0000000000000000000000000000000000000000..03b732f3623be62ad2574be517ee87413dbc4ef6
--- /dev/null
+++ b/tests/testdata/input_contracts/version_contract.sol
@@ -0,0 +1,6 @@
+contract Test {
+    uint256 input;
+    function add(uint256 a, uint256 b) public {
+        input = a + b;
+    }
+}
diff --git a/tests/testdata/input_contracts/version_contract_0.7.0.sol b/tests/testdata/input_contracts/version_contract_0.7.0.sol
new file mode 100644
index 0000000000000000000000000000000000000000..05b71003af49cfc1570d294f9c78c50bc5f76607
--- /dev/null
+++ b/tests/testdata/input_contracts/version_contract_0.7.0.sol
@@ -0,0 +1,8 @@
+pragma solidity ^0.7.0;
+
+contract Test {
+    uint256 input;
+    function add(uint256 a, uint256 b) public {
+        input = a + b;
+    }
+}
diff --git a/tests/testdata/input_contracts/version_contract_0.8.0.sol b/tests/testdata/input_contracts/version_contract_0.8.0.sol
new file mode 100644
index 0000000000000000000000000000000000000000..76b92bd75f6bc40f9427d69b0ffceab96059d2ca
--- /dev/null
+++ b/tests/testdata/input_contracts/version_contract_0.8.0.sol
@@ -0,0 +1,8 @@
+pragma solidity ^0.8.0;
+
+contract Test {
+    uint256 input;
+    function add(uint256 a, uint256 b) public {
+        input = a + b;
+    }
+}
diff --git a/tests/testdata/input_contracts/version_patch.sol b/tests/testdata/input_contracts/version_patch.sol
new file mode 100644
index 0000000000000000000000000000000000000000..3976abdbd926fa756761665a8cd36345e0431e42
--- /dev/null
+++ b/tests/testdata/input_contracts/version_patch.sol
@@ -0,0 +1,21 @@
+// SPDX-License-Identifier: MIT
+pragma solidity ^0.8; // Patch version - X.y[.z] is missing
+
+contract EtherWallet {
+    address payable public owner;
+
+    constructor() {
+        owner = payable(msg.sender);
+    }
+
+    receive() external payable {}
+
+    function withdraw(uint256 _amount) external {
+        require(msg.sender == owner, "caller is not owner");
+        payable(msg.sender).transfer(_amount);
+    }
+
+    function getBalance() external view returns (uint256) {
+        return address(this).balance;
+    }
+}
diff --git a/tests/testdata/input_contracts/weak_random.sol b/tests/testdata/input_contracts/weak_random.sol
new file mode 100644
index 0000000000000000000000000000000000000000..4433d515f94930d938299edf04e00bb01589680c
--- /dev/null
+++ b/tests/testdata/input_contracts/weak_random.sol
@@ -0,0 +1,50 @@
+pragma solidity ^0.5.0;
+
+
+contract WeakRandom {
+    struct Contestant {
+        address payable addr;
+        uint gameId;
+    }
+
+    uint public prize = 2.5 ether;
+    uint public totalTickets = 50;
+    uint public pricePerTicket = prize / totalTickets;
+
+    uint public gameId = 1;
+    uint public nextTicket = 0;
+    mapping (uint => Contestant) public contestants;
+
+    function () payable external {
+        uint moneySent = msg.value;
+
+        while (moneySent >= pricePerTicket && nextTicket < totalTickets) {
+            uint currTicket = nextTicket++;
+            contestants[currTicket] = Contestant(msg.sender, gameId);
+            moneySent -= pricePerTicket;
+        }
+
+        if (nextTicket == totalTickets) {
+            chooseWinner();
+        }
+
+        // Send back leftover money
+        if (moneySent > 0) {
+            msg.sender.transfer(moneySent);
+        }
+    }
+
+    function chooseWinner() private {
+        address seed1 = contestants[uint(block.coinbase) % totalTickets].addr;
+        address seed2 = contestants[uint(msg.sender) % totalTickets].addr;
+        uint seed3 = block.difficulty;
+        bytes32 randHash = keccak256(abi.encode(seed1, seed2, seed3));
+
+        uint winningNumber = uint(randHash) % totalTickets;
+        address payable winningAddress = contestants[winningNumber].addr;
+
+        gameId++;
+        nextTicket = 0;
+        winningAddress.transfer(prize);
+    }
+}
diff --git a/tests/testdata/inputs/calls.sol.o b/tests/testdata/inputs/calls.sol.o
new file mode 100644
index 0000000000000000000000000000000000000000..a4203b33be2f70ad4cabba0b7ca7dc27fbd68590
--- /dev/null
+++ b/tests/testdata/inputs/calls.sol.o
@@ -0,0 +1 @@
+606060405260043610610083576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632776b16314610088578063379bf63c146100c15780635a6814ec14610116578063b5d02c8a1461012b578063d24b08cc14610180578063e11f493e14610195578063e1d10f79146101aa575b600080fd5b341561009357600080fd5b6100bf600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506101e3565b005b34156100cc57600080fd5b6100d4610227565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561012157600080fd5b61012961024c565b005b341561013657600080fd5b61013e61029b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561018b57600080fd5b6101936102c1565b005b34156101a057600080fd5b6101a8610311565b005b34156101b557600080fd5b6101e1600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610368565b005b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166040516000604051808303816000865af191505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166040516000604051808303816000865af191505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166040516000604051808303816000865af1915050506000600281905550565b8073ffffffffffffffffffffffffffffffffffffffff166040516000604051808303816000865af191505050505600a165627a7a72305820ee024c33eaef87e61cb33520322ac79ea5b18ccd400a8f15d002937d9868618a0029
\ No newline at end of file
diff --git a/tests/testdata/inputs/environments.sol.o b/tests/testdata/inputs/environments.sol.o
new file mode 100644
index 0000000000000000000000000000000000000000..4c8f1d4969f472a3942374bc03bdedbfbc130c7e
--- /dev/null
+++ b/tests/testdata/inputs/environments.sol.o
@@ -0,0 +1 @@
+60806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306661abd1461005157806383f12fec1461007c575b600080fd5b34801561005d57600080fd5b50610066610104565b6040518082815260200191505060405180910390f35b34801561008857600080fd5b506100ea600480360381019080803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019092919050505061010a565b604051808215151515815260200191505060405180910390f35b60005481565b6000806000845191508382029050600082118015610129575060148211155b151561013457600080fd5b80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550600192505050929150505600a165627a7a7230582016b81221eb990028632ba9b34d3c01599d24acdb5b81dd6789845696f5db257c0029
\ No newline at end of file
diff --git a/tests/testdata/inputs/ether_send.sol.o b/tests/testdata/inputs/ether_send.sol.o
new file mode 100644
index 0000000000000000000000000000000000000000..7bdf221fe494908d43f850550577330f984828cc
--- /dev/null
+++ b/tests/testdata/inputs/ether_send.sol.o
@@ -0,0 +1 @@
+608060405260043610610078576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806312065fe01461007d57806327e235e3146100a857806356885cd8146100ff5780636c343ffe146101165780638da5cb5b1461012d578063e8b5e51f14610184575b600080fd5b34801561008957600080fd5b5061009261018e565b6040518082815260200191505060405180910390f35b3480156100b457600080fd5b506100e9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506101d4565b6040518082815260200191505060405180910390f35b34801561010b57600080fd5b506101146101ec565b005b34801561012257600080fd5b5061012b61022f565b005b34801561013957600080fd5b506101426102eb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61018c610311565b005b60008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905090565b60006020528060005260406000206000915090505481565b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561028b57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f193505050501580156102e8573d6000803e3d6000fd5b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60025434118015610323575060035434105b151561032e57600080fd5b346000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505600a165627a7a72305820402df619c16e4325eb7830ed063880a283ac25dff982b6a5be67138df0c209550029
\ No newline at end of file
diff --git a/tests/testdata/inputs/exceptions.sol.o b/tests/testdata/inputs/exceptions.sol.o
new file mode 100644
index 0000000000000000000000000000000000000000..6b37ed4b45ee824259202c5efb3b5a7741bf1947
--- /dev/null
+++ b/tests/testdata/inputs/exceptions.sol.o
@@ -0,0 +1 @@
+60606040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806301d4277c14610093578063546455b5146100b657806378375f14146100d957806392dd38ea146100fc578063a08299f11461011f578063b34c361014610142578063b630d70614610157578063f44f13d81461017a575b600080fd5b341561009e57600080fd5b6100b4600480803590602001909190505061018f565b005b34156100c157600080fd5b6100d760048080359060200190919050506101b2565b005b34156100e457600080fd5b6100fa60048080359060200190919050506101c2565b005b341561010757600080fd5b61011d60048080359060200190919050506101d5565b005b341561012a57600080fd5b61014060048080359060200190919050506101ed565b005b341561014d57600080fd5b610155610202565b005b341561016257600080fd5b6101786004808035906020019091905050610217565b005b341561018557600080fd5b61018d610235565b005b600060088210156101ae576000826008811015156101a957fe5b015490505b5050565b601781141515156101bf57fe5b50565b601781141515156101d257600080fd5b50565b600080826008811015156101e557fe5b015490505050565b60008160018115156101fb57fe5b0490505050565b60006001905060008114151561021457fe5b50565b6000808211156102315781600181151561022d57fe5b0490505b5050565b60006001905060008111151561024757fe5b505600a165627a7a72305820b9f98ad234dd4e1d09a659013e7ffd1ecad3628194c307decc294b637820bb550029
\ No newline at end of file
diff --git a/tests/testdata/inputs/exceptions_0.8.0.sol.o b/tests/testdata/inputs/exceptions_0.8.0.sol.o
new file mode 100644
index 0000000000000000000000000000000000000000..020f01247db6ce5ad61367b0ae99a3af702236ce
--- /dev/null
+++ b/tests/testdata/inputs/exceptions_0.8.0.sol.o
@@ -0,0 +1 @@
+608060405234801561001057600080fd5b5060f18061001f6000396000f3fe6080604052348015600f57600080fd5b5060043610603c5760003560e01c8063a02f5b99146041578063a9cc4718146049578063b34c3610146051575b600080fd5b60476059565b005b604f6063565b005b60576075565b005b6001600081905550565b6002600054146073576072608c565b5b565b600060019050600081146089576088608c565b5b50565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fdfea2646970667358221220cdbce6751f5dd32798edbe8c5cefae09753627f94e3f6e4a1f33afdb28a32e5464736f6c63430008060033
diff --git a/tests/testdata/inputs/extcall.sol.o b/tests/testdata/inputs/extcall.sol.o
new file mode 100644
index 0000000000000000000000000000000000000000..ad6f903ed332d0dfb2798b0a9333c0be97a45e20
--- /dev/null
+++ b/tests/testdata/inputs/extcall.sol.o
@@ -0,0 +1 @@
+608060405234801561001057600080fd5b50600073ffffffffffffffffffffffffffffffffffffffff166040518060000190506000604051808303816000865af19150503d806000811461006f576040519150601f19603f3d011682016040523d82523d6000602084013e610074565b606091505b505050600073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6000806040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561010057600080fd5b505af1158015610114573d6000803e3d6000fd5b505050506040513d602081101561012a57600080fd5b810190808051906020019092919050505050600061014457fe5b603f806101526000396000f3fe6080604052600080fdfea26469706673582212205bba7185aa846906fd4f2cc890c4095f521be787e49f5366712f751111e8d91764736f6c63430006000033
\ No newline at end of file
diff --git a/tests/testdata/inputs/flag_array.sol.o b/tests/testdata/inputs/flag_array.sol.o
new file mode 100644
index 0000000000000000000000000000000000000000..fc044655f21935e1602ee47e13cc0946584e84b0
--- /dev/null
+++ b/tests/testdata/inputs/flag_array.sol.o
@@ -0,0 +1 @@
+608060405267016345785d8a0000341461001857600080fd5b600160006104d2611000811061003157610030610055565b5b602091828204019190066101000a81548160ff021916908315150217905550610084565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6101a6806100936000396000f3fe60806040526004361061001e5760003560e01c8063ab12585814610023575b600080fd5b61003d600480360381019061003891906100ee565b61003f565b005b600081101561004d57600080fd5b611000811061005b57600080fd5b60008161100081106100705761006f610125565b5b602091828204019190069054906101000a900460ff1661008f57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156100d5573d6000803e3d6000fd5b5050565b6000813590506100e881610159565b92915050565b60006020828403121561010457610103610154565b5b6000610112848285016100d9565b91505092915050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b6101628161011b565b811461016d57600080fd5b5056fea264697066735822122038d1a63a64c5408c7008a0f3746ab94e43a04b5bc74f52e4869d3f15cf5b2b9e64736f6c63430008060033
\ No newline at end of file
diff --git a/tests/testdata/inputs/kinds_of_calls.sol.o b/tests/testdata/inputs/kinds_of_calls.sol.o
new file mode 100644
index 0000000000000000000000000000000000000000..844016223dc97cd14ed664ed91ea3dee42da141a
--- /dev/null
+++ b/tests/testdata/inputs/kinds_of_calls.sol.o
@@ -0,0 +1 @@
+60606040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063141f32ff146100725780632e52d606146100b457806367e404ce146100dd5780639b58bc2614610132578063eea4c86414610174575b600080fd5b341561007d57600080fd5b6100b2600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506101b6565b005b34156100bf57600080fd5b6100c7610273565b6040518082815260200191505060405180910390f35b34156100e857600080fd5b6100f0610279565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561013d57600080fd5b610172600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061029f565b005b341561017f57600080fd5b6101b4600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061035a565b005b8173ffffffffffffffffffffffffffffffffffffffff1660405180807f7365744e2875696e743235362900000000000000000000000000000000000000815250600d01905060405180910390207c01000000000000000000000000000000000000000000000000000000009004826040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808281526020019150506000604051808303816000875af292505050505050565b60005481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b8173ffffffffffffffffffffffffffffffffffffffff1660405180807f7365744e2875696e743235362900000000000000000000000000000000000000815250600d01905060405180910390207c01000000000000000000000000000000000000000000000000000000009004826040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381865af492505050505050565b8173ffffffffffffffffffffffffffffffffffffffff1660405180807f7365744e2875696e743235362900000000000000000000000000000000000000815250600d01905060405180910390207c01000000000000000000000000000000000000000000000000000000009004826040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808281526020019150506000604051808303816000875af1925050505050505600a165627a7a72305820b2fb91d9c3f7e870879b71c8c41272ddfb1aded7dc856f09cd181e3754606e8a0029
\ No newline at end of file
diff --git a/tests/testdata/inputs/metacoin.sol.o b/tests/testdata/inputs/metacoin.sol.o
new file mode 100644
index 0000000000000000000000000000000000000000..87e952f343637e262a3254adea993a42a6eb0df5
--- /dev/null
+++ b/tests/testdata/inputs/metacoin.sol.o
@@ -0,0 +1 @@
+60606040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806327e235e314610051578063412664ae1461009e575b600080fd5b341561005c57600080fd5b610088600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506100f8565b6040518082815260200191505060405180910390f35b34156100a957600080fd5b6100de600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610110565b604051808215151515815260200191505060405180910390f35b60006020528060005260406000206000915090505481565b6000816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561016157600090506101fe565b816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600090505b929150505600a165627a7a72305820c860d60246e215343f02c5025aeef4ad1f207b0a7d2dec05e43f6ecaaebe9cec0029
\ No newline at end of file
diff --git a/tests/testdata/inputs/multi_contracts.sol.o b/tests/testdata/inputs/multi_contracts.sol.o
new file mode 100644
index 0000000000000000000000000000000000000000..e5ac5575b800792af1407fe5e4cef7bb4ade4e17
--- /dev/null
+++ b/tests/testdata/inputs/multi_contracts.sol.o
@@ -0,0 +1 @@
+606060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680638a4068dd146044575b600080fd5b3415604e57600080fd5b60546056565b005b3373ffffffffffffffffffffffffffffffffffffffff166108fc671bc16d674ec800009081150290604051600060405180830381858888f193505050501515609d57600080fd5b5600a165627a7a7230582028cb917d4f69cc2ea0fcd75329aa874b2bc743cfcde6b5197f571cff635aec130029
\ No newline at end of file
diff --git a/tests/testdata/inputs/nonascii.sol.o b/tests/testdata/inputs/nonascii.sol.o
new file mode 100644
index 0000000000000000000000000000000000000000..5e142cfe4c721646ed7491abdd91a22e25cfde3c
--- /dev/null
+++ b/tests/testdata/inputs/nonascii.sol.o
@@ -0,0 +1 @@
+608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806324ff38a214610046575b600080fd5b34801561005257600080fd5b5061005b6100d6565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561009b578082015181840152602081019050610080565b50505050905090810190601f1680156100c85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60606040805190810160405280601781526020017fd0a5d18dd0bbd0bbd0bed18320d092d0bed180d0bbd0b40000000000000000008152509050905600a165627a7a72305820a11284868fc6a38ff1d72ce9ec40db9c6c7c49902b5cabec3680e88e5ab92dcb0029
\ No newline at end of file
diff --git a/tests/testdata/inputs/origin.sol.o b/tests/testdata/inputs/origin.sol.o
new file mode 100644
index 0000000000000000000000000000000000000000..fc97c5715a04226ffe61188054a9a0df7150d75d
--- /dev/null
+++ b/tests/testdata/inputs/origin.sol.o
@@ -0,0 +1 @@
+60606040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680638da5cb5b14610051578063f2fde38b146100a6575b600080fd5b341561005c57600080fd5b6100646100df565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156100b157600080fd5b6100dd600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610104565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614151561015f57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415156101d657806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b505600a165627a7a7230582094f3b40753c82d05a159fa87a8b075fa6226d092f90191c0f813a12c032ffaac0029
\ No newline at end of file
diff --git a/tests/testdata/inputs/overflow.sol.o b/tests/testdata/inputs/overflow.sol.o
new file mode 100644
index 0000000000000000000000000000000000000000..0258b7050ac7efeab96039271a9517d3918132ca
--- /dev/null
+++ b/tests/testdata/inputs/overflow.sol.o
@@ -0,0 +1 @@
+608060405260043610610057576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806318160ddd1461005c57806370a0823114610087578063a3210e87146100ec575b600080fd5b34801561006857600080fd5b5061007161015f565b6040518082815260200191505060405180910390f35b34801561009357600080fd5b506100d6600480360360208110156100aa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610165565b6040518082815260200191505060405180910390f35b3480156100f857600080fd5b506101456004803603604081101561010f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506101ad565b604051808215151515815260200191505060405180910390f35b60015481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600080826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403101515156101fe57600080fd5b816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600190509291505056fea165627a7a72305820fd522172282e2304f6e94eb345fcb4a11ab5e1102b64333180676726d88159a00029
diff --git a/tests/testdata/inputs/returnvalue.sol.o b/tests/testdata/inputs/returnvalue.sol.o
new file mode 100644
index 0000000000000000000000000000000000000000..df3ee565fa41cd569df9da73c5fb50a1c7f9f630
--- /dev/null
+++ b/tests/testdata/inputs/returnvalue.sol.o
@@ -0,0 +1 @@
+60606040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063633ab5e014610051578063e3bea28214610066575b600080fd5b341561005c57600080fd5b61006461007b565b005b341561007157600080fd5b6100796100d4565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166040516000604051808303816000865af191505015156100d257600080fd5b565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166040516000604051808303816000865af1915050505600a165627a7a72305820ca8be054abc9437f3c7d25b22fda833fed76e2687a94e19ec61b094b7ae089d70029
\ No newline at end of file
diff --git a/tests/testdata/inputs/safe_funcs.sol.o b/tests/testdata/inputs/safe_funcs.sol.o
new file mode 100644
index 0000000000000000000000000000000000000000..986d7c7f370412a76f6008b2745895791bdd9505
--- /dev/null
+++ b/tests/testdata/inputs/safe_funcs.sol.o
@@ -0,0 +1 @@
+6080604052348015600f57600080fd5b5060043610603c5760003560e01c8063a02f5b99146041578063a9cc4718146049578063b34c3610146051575b600080fd5b60476059565b005b604f6063565b005b60576075565b005b6001600081905550565b6002600054146073576072608c565b5b565b600060019050600081146089576088608c565b5b50565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fdfea2646970667358221220e4fd4d461febf90b9c09fc5f55e8dc77f373e513a4448395d2073e8c3f388ecf64736f6c63430008060033
diff --git a/tests/testdata/inputs/suicide.sol.o b/tests/testdata/inputs/suicide.sol.o
new file mode 100644
index 0000000000000000000000000000000000000000..e299f68df30a67b13bc2f1c873de1394b2084c53
--- /dev/null
+++ b/tests/testdata/inputs/suicide.sol.o
@@ -0,0 +1 @@
+606060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063cbf0b0c0146044575b600080fd5b3415604e57600080fd5b6078600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050607a565b005b8073ffffffffffffffffffffffffffffffffffffffff16ff00a165627a7a723058207c36f2082aef9ddde7fe0dc12aca42e091159cac6d4e9cb1b97983ea4e005d940029
\ No newline at end of file
diff --git a/tests/testdata/inputs/symbolic_exec_bytecode.sol.o b/tests/testdata/inputs/symbolic_exec_bytecode.sol.o
new file mode 100644
index 0000000000000000000000000000000000000000..7de4b200cbf10e797ca15335ea94c8f7dca4761e
--- /dev/null
+++ b/tests/testdata/inputs/symbolic_exec_bytecode.sol.o
@@ -0,0 +1 @@
+60a060405234801561001057600080fd5b5060405161039b38038061039b83398181016040528101906100329190610059565b806001901b60808181525050506100ac565b60008151905061005381610095565b92915050565b60006020828403121561006f5761006e610090565b5b600061007d84828501610044565b91505092915050565b6000819050919050565b600080fd5b61009e81610086565b81146100a957600080fd5b50565b6080516102d56100c66000396000608601526102d56000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063781c6dbe1461003b5780637c11da201461006b575b600080fd5b61005560048036038101906100509190610188565b610075565b6040516100629190610207565b60405180910390f35b610073610114565b005b600080838390501180156100ac57507f00000000000000000000000000000000000000000000000000000000000000008383905011155b6100eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100e290610222565b60405180910390fd5b7f3132330000000000000000000000000000000000000000000000000000000000905092915050565b60003390508073ffffffffffffffffffffffffffffffffffffffff16ff5b60008083601f84011261014857610147610262565b5b8235905067ffffffffffffffff8111156101655761016461025d565b5b60208301915083600182028301111561018157610180610267565b5b9250929050565b6000806020838503121561019f5761019e610271565b5b600083013567ffffffffffffffff8111156101bd576101bc61026c565b5b6101c985828601610132565b92509250509250929050565b6101de81610253565b82525050565b60006101f1601883610242565b91506101fc82610276565b602082019050919050565b600060208201905061021c60008301846101d5565b92915050565b6000602082019050818103600083015261023b816101e4565b9050919050565b600082825260208201905092915050565b6000819050919050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b7f696e707574206c656e3a2028302c696e70757453697a655d000000000000000060008201525056fea26469706673582212203f37af85f2d345d5d16dd25ae1404605d9e5e7240b970530ef963385fc73a82e64736f6c63430008060033
\ No newline at end of file
diff --git a/tests/testdata/inputs/underflow.sol.o b/tests/testdata/inputs/underflow.sol.o
new file mode 100644
index 0000000000000000000000000000000000000000..30830f608acee1fd1be8ea5a41d6493e5f163439
--- /dev/null
+++ b/tests/testdata/inputs/underflow.sol.o
@@ -0,0 +1 @@
+606060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806318160ddd146100675780636241bfd11461009057806370a08231146100b3578063a3210e8714610100575b600080fd5b341561007257600080fd5b61007a61015a565b6040518082815260200191505060405180910390f35b341561009b57600080fd5b6100b16004808035906020019091905050610160565b005b34156100be57600080fd5b6100ea600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506101ab565b6040518082815260200191505060405180910390f35b341561010b57600080fd5b610140600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506101f3565b604051808215151515815260200191505060405180910390f35b60015481565b8060018190556000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600080826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054031015151561024457600080fd5b816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555060019050929150505600a165627a7a72305820acf4c21d1fe3e6f27af08897642fb3b8cc64265635081cf3ae7fe1f06b4af6490029
\ No newline at end of file
diff --git a/tests/testdata/json_test_dir/PRC20.sol b/tests/testdata/json_test_dir/PRC20.sol
new file mode 100644
index 0000000000000000000000000000000000000000..be361ab2eee7de192460083e0105213840dee9f7
--- /dev/null
+++ b/tests/testdata/json_test_dir/PRC20.sol
@@ -0,0 +1,8 @@
+pragma solidity ^0.8.0;
+
+contract PRC20{
+    function nothing1(uint256 a, uint256 b) public pure returns(uint256) {
+        return a+b;
+    }
+}
+
diff --git a/tests/testdata/json_test_dir/dir_a/input_file.sol b/tests/testdata/json_test_dir/dir_a/input_file.sol
new file mode 100644
index 0000000000000000000000000000000000000000..f4b5d29622e688483d1c7f68fbdf38e08c1a7262
--- /dev/null
+++ b/tests/testdata/json_test_dir/dir_a/input_file.sol
@@ -0,0 +1,60 @@
+import "@openzeppelin/contracts/token/PRC20/PRC20.sol";
+
+contract Nothing is PRC20{
+	string x_0 = "";
+
+	bytes3 x_1 = "A";
+
+	bytes5 x_2 = "E";
+
+	bytes5 x_3 = "";
+
+	bytes3 x_4 = "I";
+
+	bytes3 x_5 = "U";
+
+	bytes3 x_6 = "O";
+
+	bytes3 x_7 = "0";
+
+	bytes3 x_8 = "U";
+
+	bytes3 x_9 = "U";
+	function stringCompare(string memory a, string memory b) internal pure returns (bool) {
+		if(bytes(a).length != bytes(b).length) {
+			return false;
+		} else {
+			return keccak256(bytes(a)) == keccak256(bytes(b));
+		}
+	}
+
+    function nothing(string memory g_0, bytes3 g_1, bytes5 g_2, bytes5 g_3, bytes3 g_4, bytes3 g_5, bytes3 g_6, bytes3 g_7, bytes3 g_8, bytes3 g_9, bytes3 g_10, bytes3 g_11) public view returns (bool){
+        if (!stringCompare(g_0, x_0)) return false;
+				
+		if (g_1 != x_1) return false;
+				
+		if (g_2 != x_2) return false;
+				
+		if (g_3 != x_3) return false;
+				
+		if (g_4 != x_4) return false;
+				
+		if (g_5 != x_5) return false;
+				
+		if (g_6 != x_6) return false;
+				
+		if (g_7 != x_7) return false;
+				
+		if (g_8 != x_8) return false;
+				
+		if (g_9 != x_9) return false;
+		
+        if (g_10 != x_9) return false;
+
+        if (g_11 != x_9) return false;
+
+		return true;
+
+    }
+}
+
diff --git a/tests/testdata/json_test_dir/dir_a/input_file_args.sol b/tests/testdata/json_test_dir/dir_a/input_file_args.sol
new file mode 100644
index 0000000000000000000000000000000000000000..cdfe3e0f5a6690fe78124936961a7b302261ad22
--- /dev/null
+++ b/tests/testdata/json_test_dir/dir_a/input_file_args.sol
@@ -0,0 +1,13 @@
+import "../PRC20.sol";
+
+contract Nothing is PRC20{
+
+
+
+    function nothing(string memory g_0, bytes3 g_11) public view returns (bool){
+				
+		return true;
+
+    }
+}
+
diff --git a/tests/testdata/json_test_dir/test_file.json b/tests/testdata/json_test_dir/test_file.json
new file mode 100644
index 0000000000000000000000000000000000000000..b6e3c12e0a054da22ef653429a31a2a1e193b565
--- /dev/null
+++ b/tests/testdata/json_test_dir/test_file.json
@@ -0,0 +1,6 @@
+{
+ "remappings": [ "@openzeppelin/contracts/token/PRC20/=../" ],
+  "optimizer": {
+    "enabled": true
+  }
+}
diff --git a/tests/testdata/json_test_dir/test_file_disable.json b/tests/testdata/json_test_dir/test_file_disable.json
new file mode 100644
index 0000000000000000000000000000000000000000..323f759888a13c23590cf3c6ff950f0df02fe026
--- /dev/null
+++ b/tests/testdata/json_test_dir/test_file_disable.json
@@ -0,0 +1,4 @@
+{
+    "remappings": [ "@openzeppelin/contracts/token/PRC20/=../" ]
+}
+   
\ No newline at end of file
diff --git a/tests/testdata/outputs_expected/calls.sol.o.easm b/tests/testdata/outputs_expected/calls.sol.o.easm
new file mode 100644
index 0000000000000000000000000000000000000000..c37ee2cb3bc0f08654b79097f77dbb11c91b4aca
--- /dev/null
+++ b/tests/testdata/outputs_expected/calls.sol.o.easm
@@ -0,0 +1,400 @@
+0 PUSH1 0x60
+2 PUSH1 0x40
+4 MSTORE
+5 PUSH1 0x04
+7 CALLDATASIZE
+8 LT
+9 PUSH2 0x0083
+12 JUMPI
+13 PUSH1 0x00
+15 CALLDATALOAD
+16 PUSH29 0x0100000000000000000000000000000000000000000000000000000000
+46 SWAP1
+47 DIV
+48 PUSH4 0xffffffff
+53 AND
+54 DUP1
+55 PUSH4 0x2776b163
+60 EQ
+61 PUSH2 0x0088
+64 JUMPI
+65 DUP1
+66 PUSH4 0x379bf63c
+71 EQ
+72 PUSH2 0x00c1
+75 JUMPI
+76 DUP1
+77 PUSH4 0x5a6814ec
+82 EQ
+83 PUSH2 0x0116
+86 JUMPI
+87 DUP1
+88 PUSH4 0xb5d02c8a
+93 EQ
+94 PUSH2 0x012b
+97 JUMPI
+98 DUP1
+99 PUSH4 0xd24b08cc
+104 EQ
+105 PUSH2 0x0180
+108 JUMPI
+109 DUP1
+110 PUSH4 0xe11f493e
+115 EQ
+116 PUSH2 0x0195
+119 JUMPI
+120 DUP1
+121 PUSH4 0xe1d10f79
+126 EQ
+127 PUSH2 0x01aa
+130 JUMPI
+131 JUMPDEST
+132 PUSH1 0x00
+134 DUP1
+135 REVERT
+136 JUMPDEST
+137 CALLVALUE
+138 ISZERO
+139 PUSH2 0x0093
+142 JUMPI
+143 PUSH1 0x00
+145 DUP1
+146 REVERT
+147 JUMPDEST
+148 PUSH2 0x00bf
+151 PUSH1 0x04
+153 DUP1
+154 DUP1
+155 CALLDATALOAD
+156 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+177 AND
+178 SWAP1
+179 PUSH1 0x20
+181 ADD
+182 SWAP1
+183 SWAP2
+184 SWAP1
+185 POP
+186 POP
+187 PUSH2 0x01e3
+190 JUMP
+191 JUMPDEST
+192 STOP
+193 JUMPDEST
+194 CALLVALUE
+195 ISZERO
+196 PUSH2 0x00cc
+199 JUMPI
+200 PUSH1 0x00
+202 DUP1
+203 REVERT
+204 JUMPDEST
+205 PUSH2 0x00d4
+208 PUSH2 0x0227
+211 JUMP
+212 JUMPDEST
+213 PUSH1 0x40
+215 MLOAD
+216 DUP1
+217 DUP3
+218 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+239 AND
+240 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+261 AND
+262 DUP2
+263 MSTORE
+264 PUSH1 0x20
+266 ADD
+267 SWAP2
+268 POP
+269 POP
+270 PUSH1 0x40
+272 MLOAD
+273 DUP1
+274 SWAP2
+275 SUB
+276 SWAP1
+277 RETURN
+278 JUMPDEST
+279 CALLVALUE
+280 ISZERO
+281 PUSH2 0x0121
+284 JUMPI
+285 PUSH1 0x00
+287 DUP1
+288 REVERT
+289 JUMPDEST
+290 PUSH2 0x0129
+293 PUSH2 0x024c
+296 JUMP
+297 JUMPDEST
+298 STOP
+299 JUMPDEST
+300 CALLVALUE
+301 ISZERO
+302 PUSH2 0x0136
+305 JUMPI
+306 PUSH1 0x00
+308 DUP1
+309 REVERT
+310 JUMPDEST
+311 PUSH2 0x013e
+314 PUSH2 0x029b
+317 JUMP
+318 JUMPDEST
+319 PUSH1 0x40
+321 MLOAD
+322 DUP1
+323 DUP3
+324 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+345 AND
+346 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+367 AND
+368 DUP2
+369 MSTORE
+370 PUSH1 0x20
+372 ADD
+373 SWAP2
+374 POP
+375 POP
+376 PUSH1 0x40
+378 MLOAD
+379 DUP1
+380 SWAP2
+381 SUB
+382 SWAP1
+383 RETURN
+384 JUMPDEST
+385 CALLVALUE
+386 ISZERO
+387 PUSH2 0x018b
+390 JUMPI
+391 PUSH1 0x00
+393 DUP1
+394 REVERT
+395 JUMPDEST
+396 PUSH2 0x0193
+399 PUSH2 0x02c1
+402 JUMP
+403 JUMPDEST
+404 STOP
+405 JUMPDEST
+406 CALLVALUE
+407 ISZERO
+408 PUSH2 0x01a0
+411 JUMPI
+412 PUSH1 0x00
+414 DUP1
+415 REVERT
+416 JUMPDEST
+417 PUSH2 0x01a8
+420 PUSH2 0x0311
+423 JUMP
+424 JUMPDEST
+425 STOP
+426 JUMPDEST
+427 CALLVALUE
+428 ISZERO
+429 PUSH2 0x01b5
+432 JUMPI
+433 PUSH1 0x00
+435 DUP1
+436 REVERT
+437 JUMPDEST
+438 PUSH2 0x01e1
+441 PUSH1 0x04
+443 DUP1
+444 DUP1
+445 CALLDATALOAD
+446 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+467 AND
+468 SWAP1
+469 PUSH1 0x20
+471 ADD
+472 SWAP1
+473 SWAP2
+474 SWAP1
+475 POP
+476 POP
+477 PUSH2 0x0368
+480 JUMP
+481 JUMPDEST
+482 STOP
+483 JUMPDEST
+484 DUP1
+485 PUSH1 0x01
+487 PUSH1 0x00
+489 PUSH2 0x0100
+492 EXP
+493 DUP2
+494 SLOAD
+495 DUP2
+496 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+517 MUL
+518 NOT
+519 AND
+520 SWAP1
+521 DUP4
+522 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+543 AND
+544 MUL
+545 OR
+546 SWAP1
+547 SSTORE
+548 POP
+549 POP
+550 JUMP
+551 JUMPDEST
+552 PUSH1 0x00
+554 DUP1
+555 SWAP1
+556 SLOAD
+557 SWAP1
+558 PUSH2 0x0100
+561 EXP
+562 SWAP1
+563 DIV
+564 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+585 AND
+586 DUP2
+587 JUMP
+588 JUMPDEST
+589 PUSH1 0x00
+591 DUP1
+592 SWAP1
+593 SLOAD
+594 SWAP1
+595 PUSH2 0x0100
+598 EXP
+599 SWAP1
+600 DIV
+601 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+622 AND
+623 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+644 AND
+645 PUSH1 0x40
+647 MLOAD
+648 PUSH1 0x00
+650 PUSH1 0x40
+652 MLOAD
+653 DUP1
+654 DUP4
+655 SUB
+656 DUP2
+657 PUSH1 0x00
+659 DUP7
+660 GAS
+661 CALL
+662 SWAP2
+663 POP
+664 POP
+665 POP
+666 JUMP
+667 JUMPDEST
+668 PUSH1 0x01
+670 PUSH1 0x00
+672 SWAP1
+673 SLOAD
+674 SWAP1
+675 PUSH2 0x0100
+678 EXP
+679 SWAP1
+680 DIV
+681 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+702 AND
+703 DUP2
+704 JUMP
+705 JUMPDEST
+706 PUSH1 0x01
+708 PUSH1 0x00
+710 SWAP1
+711 SLOAD
+712 SWAP1
+713 PUSH2 0x0100
+716 EXP
+717 SWAP1
+718 DIV
+719 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+740 AND
+741 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+762 AND
+763 PUSH1 0x40
+765 MLOAD
+766 PUSH1 0x00
+768 PUSH1 0x40
+770 MLOAD
+771 DUP1
+772 DUP4
+773 SUB
+774 DUP2
+775 PUSH1 0x00
+777 DUP7
+778 GAS
+779 CALL
+780 SWAP2
+781 POP
+782 POP
+783 POP
+784 JUMP
+785 JUMPDEST
+786 PUSH1 0x00
+788 DUP1
+789 SWAP1
+790 SLOAD
+791 SWAP1
+792 PUSH2 0x0100
+795 EXP
+796 SWAP1
+797 DIV
+798 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+819 AND
+820 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+841 AND
+842 PUSH1 0x40
+844 MLOAD
+845 PUSH1 0x00
+847 PUSH1 0x40
+849 MLOAD
+850 DUP1
+851 DUP4
+852 SUB
+853 DUP2
+854 PUSH1 0x00
+856 DUP7
+857 GAS
+858 CALL
+859 SWAP2
+860 POP
+861 POP
+862 POP
+863 PUSH1 0x00
+865 PUSH1 0x02
+867 DUP2
+868 SWAP1
+869 SSTORE
+870 POP
+871 JUMP
+872 JUMPDEST
+873 DUP1
+874 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+895 AND
+896 PUSH1 0x40
+898 MLOAD
+899 PUSH1 0x00
+901 PUSH1 0x40
+903 MLOAD
+904 DUP1
+905 DUP4
+906 SUB
+907 DUP2
+908 PUSH1 0x00
+910 DUP7
+911 GAS
+912 CALL
+913 SWAP2
+914 POP
+915 POP
+916 POP
+917 POP
+918 JUMP
+919 STOP
diff --git a/tests/testdata/outputs_expected/calls.sol.o.graph.html b/tests/testdata/outputs_expected/calls.sol.o.graph.html
new file mode 100644
index 0000000000000000000000000000000000000000..0614f7daf10b40e81555a34c74cf65c67d7eda4a
--- /dev/null
+++ b/tests/testdata/outputs_expected/calls.sol.o.graph.html
@@ -0,0 +1,62 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>Call Graph</title>
+    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.css" integrity="sha256-iq5ygGJ7021Pi7H5S+QAUXCPUfaBzfqeplbg/KlEssg=" crossorigin="anonymous" />
+    <script src="https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.js" integrity="sha256-JuQeAGbk9rG/EoRMixuy5X8syzICcvB0dj3KindZkY0=" crossorigin="anonymous"></script>
+
+    
+    <style type="text/css">
+        #mynetwork {
+          height: 100%;
+            background-color: #232625;
+        }
+        body {
+            background-color: #232625;
+            color: #ffffff;
+            font-size: 10px;
+        }
+        html, body {
+          height: 95%;
+        }
+    </style>
+    
+
+    <script>
+        var options = {"autoResize": true, "edges": {"font": {"align": "horizontal", "background": "none", "color": "#FFFFFF", "face": "arial", "multi": false, "strokeColor": "#ffffff", "strokeWidth": 0, "vadjust": 0}}, "height": "100%", "layout": {"hierarchical": {"blockShifting": true, "direction": "LR", "edgeMinimization": true, "enabled": true, "levelSeparation": 450, "nodeSpacing": 200, "parentCentralization": false, "sortMethod": "directed", "treeSpacing": 100}, "improvedLayout": true}, "manipulation": false, "nodes": {"borderWidth": 1, "borderWidthSelected": 2, "chosen": true, "color": "#000000", "font": {"align": "left", "color": "#FFFFFF"}, "shape": "box"}, "physics": {"enabled": false}, "width": "100%"};
+        var nodes = [{"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n9 PUSH2 0x0083\n12 JUMPI", "id": "184", "isExpanded": false, "label": "0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n(click to expand +)", "size": 150, "truncLabel": "0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x01000000(...)\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n53 AND\n54 DUP1\n55 PUSH4 0x2776b163\n60 EQ\n61 PUSH2 0x0088\n64 JUMPI", "id": "185", "isExpanded": false, "label": "13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x01000000(...)\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n(click to expand +)", "size": 150, "truncLabel": "13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x01000000(...)\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "131 JUMPDEST\n132 PUSH1 0x00\n134 DUP1\n135 REVERT", "id": "186", "isExpanded": false, "label": "131 JUMPDEST\n132 PUSH1 0x00\n134 DUP1\n135 REVERT", "size": 150, "truncLabel": "131 JUMPDEST\n132 PUSH1 0x00\n134 DUP1\n135 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "65 DUP1\n66 PUSH4 0x379bf63c\n71 EQ\n72 PUSH2 0x00c1\n75 JUMPI", "id": "187", "isExpanded": false, "label": "65 DUP1\n66 PUSH4 0x379bf63c\n71 EQ\n72 PUSH2 0x00c1\n75 JUMPI", "size": 150, "truncLabel": "65 DUP1\n66 PUSH4 0x379bf63c\n71 EQ\n72 PUSH2 0x00c1\n75 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "136 JUMPDEST\n137 CALLVALUE\n138 ISZERO\n139 PUSH2 0x0093\n142 JUMPI", "id": "188", "isExpanded": false, "label": "136 JUMPDEST\n137 CALLVALUE\n138 ISZERO\n139 PUSH2 0x0093\n142 JUMPI", "size": 150, "truncLabel": "136 JUMPDEST\n137 CALLVALUE\n138 ISZERO\n139 PUSH2 0x0093\n142 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "143 PUSH1 0x00\n145 DUP1\n146 REVERT", "id": "189", "isExpanded": false, "label": "143 PUSH1 0x00\n145 DUP1\n146 REVERT", "size": 150, "truncLabel": "143 PUSH1 0x00\n145 DUP1\n146 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "147 JUMPDEST\n148 PUSH2 0x00bf\n151 PUSH1 0x04\n153 DUP1\n154 DUP1\n155 CALLDATALOAD\n156 PUSH20 0xffffffff(...)\n177 AND\n178 SWAP1\n179 PUSH1 0x20\n181 ADD\n182 SWAP1\n183 SWAP2\n184 SWAP1\n185 POP\n186 POP\n187 PUSH2 0x01e3\n190 JUMP", "id": "190", "isExpanded": false, "label": "147 JUMPDEST\n148 PUSH2 0x00bf\n151 PUSH1 0x04\n153 DUP1\n154 DUP1\n155 CALLDATALOAD\n(click to expand +)", "size": 150, "truncLabel": "147 JUMPDEST\n148 PUSH2 0x00bf\n151 PUSH1 0x04\n153 DUP1\n154 DUP1\n155 CALLDATALOAD\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "483 JUMPDEST\n484 DUP1\n485 PUSH1 0x01\n487 PUSH1 0x00\n489 PUSH2 0x0100\n492 EXP\n493 DUP2\n494 SLOAD\n495 DUP2\n496 PUSH20 0xffffffff(...)\n517 MUL\n518 NOT\n519 AND\n520 SWAP1\n521 DUP4\n522 PUSH20 0xffffffff(...)\n543 AND\n544 MUL\n545 OR\n546 SWAP1\n547 SSTORE\n548 POP\n549 POP\n550 JUMP", "id": "191", "isExpanded": false, "label": "483 JUMPDEST\n484 DUP1\n485 PUSH1 0x01\n487 PUSH1 0x00\n489 PUSH2 0x0100\n492 EXP\n(click to expand +)", "size": 150, "truncLabel": "483 JUMPDEST\n484 DUP1\n485 PUSH1 0x01\n487 PUSH1 0x00\n489 PUSH2 0x0100\n492 EXP\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "191 JUMPDEST\n192 STOP", "id": "192", "isExpanded": false, "label": "191 JUMPDEST\n192 STOP", "size": 150, "truncLabel": "191 JUMPDEST\n192 STOP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "76 DUP1\n77 PUSH4 0x5a6814ec\n82 EQ\n83 PUSH2 0x0116\n86 JUMPI", "id": "193", "isExpanded": false, "label": "76 DUP1\n77 PUSH4 0x5a6814ec\n82 EQ\n83 PUSH2 0x0116\n86 JUMPI", "size": 150, "truncLabel": "76 DUP1\n77 PUSH4 0x5a6814ec\n82 EQ\n83 PUSH2 0x0116\n86 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "193 JUMPDEST\n194 CALLVALUE\n195 ISZERO\n196 PUSH2 0x00cc\n199 JUMPI", "id": "194", "isExpanded": false, "label": "193 JUMPDEST\n194 CALLVALUE\n195 ISZERO\n196 PUSH2 0x00cc\n199 JUMPI", "size": 150, "truncLabel": "193 JUMPDEST\n194 CALLVALUE\n195 ISZERO\n196 PUSH2 0x00cc\n199 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "200 PUSH1 0x00\n202 DUP1\n203 REVERT", "id": "195", "isExpanded": false, "label": "200 PUSH1 0x00\n202 DUP1\n203 REVERT", "size": 150, "truncLabel": "200 PUSH1 0x00\n202 DUP1\n203 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "204 JUMPDEST\n205 PUSH2 0x00d4\n208 PUSH2 0x0227\n211 JUMP", "id": "196", "isExpanded": false, "label": "204 JUMPDEST\n205 PUSH2 0x00d4\n208 PUSH2 0x0227\n211 JUMP", "size": 150, "truncLabel": "204 JUMPDEST\n205 PUSH2 0x00d4\n208 PUSH2 0x0227\n211 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "551 JUMPDEST\n552 PUSH1 0x00\n554 DUP1\n555 SWAP1\n556 SLOAD\n557 SWAP1\n558 PUSH2 0x0100\n561 EXP\n562 SWAP1\n563 DIV\n564 PUSH20 0xffffffff(...)\n585 AND\n586 DUP2\n587 JUMP", "id": "197", "isExpanded": false, "label": "551 JUMPDEST\n552 PUSH1 0x00\n554 DUP1\n555 SWAP1\n556 SLOAD\n557 SWAP1\n(click to expand +)", "size": 150, "truncLabel": "551 JUMPDEST\n552 PUSH1 0x00\n554 DUP1\n555 SWAP1\n556 SLOAD\n557 SWAP1\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "212 JUMPDEST\n213 PUSH1 0x40\n215 MLOAD\n216 DUP1\n217 DUP3\n218 PUSH20 0xffffffff(...)\n239 AND\n240 PUSH20 0xffffffff(...)\n261 AND\n262 DUP2\n263 MSTORE\n264 PUSH1 0x20\n266 ADD\n267 SWAP2\n268 POP\n269 POP\n270 PUSH1 0x40\n272 MLOAD\n273 DUP1\n274 SWAP2\n275 SUB\n276 SWAP1\n277 RETURN", "id": "198", "isExpanded": false, "label": "212 JUMPDEST\n213 PUSH1 0x40\n215 MLOAD\n216 DUP1\n217 DUP3\n218 PUSH20 0xffffffff(...)\n(click to expand +)", "size": 150, "truncLabel": "212 JUMPDEST\n213 PUSH1 0x40\n215 MLOAD\n216 DUP1\n217 DUP3\n218 PUSH20 0xffffffff(...)\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "87 DUP1\n88 PUSH4 0xb5d02c8a\n93 EQ\n94 PUSH2 0x012b\n97 JUMPI", "id": "199", "isExpanded": false, "label": "87 DUP1\n88 PUSH4 0xb5d02c8a\n93 EQ\n94 PUSH2 0x012b\n97 JUMPI", "size": 150, "truncLabel": "87 DUP1\n88 PUSH4 0xb5d02c8a\n93 EQ\n94 PUSH2 0x012b\n97 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "278 JUMPDEST\n279 CALLVALUE\n280 ISZERO\n281 PUSH2 0x0121\n284 JUMPI", "id": "200", "isExpanded": false, "label": "278 JUMPDEST\n279 CALLVALUE\n280 ISZERO\n281 PUSH2 0x0121\n284 JUMPI", "size": 150, "truncLabel": "278 JUMPDEST\n279 CALLVALUE\n280 ISZERO\n281 PUSH2 0x0121\n284 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "285 PUSH1 0x00\n287 DUP1\n288 REVERT", "id": "201", "isExpanded": false, "label": "285 PUSH1 0x00\n287 DUP1\n288 REVERT", "size": 150, "truncLabel": "285 PUSH1 0x00\n287 DUP1\n288 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "289 JUMPDEST\n290 PUSH2 0x0129\n293 PUSH2 0x024c\n296 JUMP", "id": "202", "isExpanded": false, "label": "289 JUMPDEST\n290 PUSH2 0x0129\n293 PUSH2 0x024c\n296 JUMP", "size": 150, "truncLabel": "289 JUMPDEST\n290 PUSH2 0x0129\n293 PUSH2 0x024c\n296 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "588 JUMPDEST\n589 PUSH1 0x00\n591 DUP1\n592 SWAP1\n593 SLOAD\n594 SWAP1\n595 PUSH2 0x0100\n598 EXP\n599 SWAP1\n600 DIV\n601 PUSH20 0xffffffff(...)\n622 AND\n623 PUSH20 0xffffffff(...)\n644 AND\n645 PUSH1 0x40\n647 MLOAD\n648 PUSH1 0x00\n650 PUSH1 0x40\n652 MLOAD\n653 DUP1\n654 DUP4\n655 SUB\n656 DUP2\n657 PUSH1 0x00\n659 DUP7\n660 GAS\n661 CALL\n662 SWAP2\n663 POP\n664 POP\n665 POP\n666 JUMP", "id": "203", "isExpanded": false, "label": "588 JUMPDEST\n589 PUSH1 0x00\n591 DUP1\n592 SWAP1\n593 SLOAD\n594 SWAP1\n(click to expand +)", "size": 150, "truncLabel": "588 JUMPDEST\n589 PUSH1 0x00\n591 DUP1\n592 SWAP1\n593 SLOAD\n594 SWAP1\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "297 JUMPDEST\n298 STOP", "id": "204", "isExpanded": false, "label": "297 JUMPDEST\n298 STOP", "size": 150, "truncLabel": "297 JUMPDEST\n298 STOP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "98 DUP1\n99 PUSH4 0xd24b08cc\n104 EQ\n105 PUSH2 0x0180\n108 JUMPI", "id": "205", "isExpanded": false, "label": "98 DUP1\n99 PUSH4 0xd24b08cc\n104 EQ\n105 PUSH2 0x0180\n108 JUMPI", "size": 150, "truncLabel": "98 DUP1\n99 PUSH4 0xd24b08cc\n104 EQ\n105 PUSH2 0x0180\n108 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "299 JUMPDEST\n300 CALLVALUE\n301 ISZERO\n302 PUSH2 0x0136\n305 JUMPI", "id": "206", "isExpanded": false, "label": "299 JUMPDEST\n300 CALLVALUE\n301 ISZERO\n302 PUSH2 0x0136\n305 JUMPI", "size": 150, "truncLabel": "299 JUMPDEST\n300 CALLVALUE\n301 ISZERO\n302 PUSH2 0x0136\n305 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "306 PUSH1 0x00\n308 DUP1\n309 REVERT", "id": "207", "isExpanded": false, "label": "306 PUSH1 0x00\n308 DUP1\n309 REVERT", "size": 150, "truncLabel": "306 PUSH1 0x00\n308 DUP1\n309 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "310 JUMPDEST\n311 PUSH2 0x013e\n314 PUSH2 0x029b\n317 JUMP", "id": "208", "isExpanded": false, "label": "310 JUMPDEST\n311 PUSH2 0x013e\n314 PUSH2 0x029b\n317 JUMP", "size": 150, "truncLabel": "310 JUMPDEST\n311 PUSH2 0x013e\n314 PUSH2 0x029b\n317 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "667 JUMPDEST\n668 PUSH1 0x01\n670 PUSH1 0x00\n672 SWAP1\n673 SLOAD\n674 SWAP1\n675 PUSH2 0x0100\n678 EXP\n679 SWAP1\n680 DIV\n681 PUSH20 0xffffffff(...)\n702 AND\n703 DUP2\n704 JUMP", "id": "209", "isExpanded": false, "label": "667 JUMPDEST\n668 PUSH1 0x01\n670 PUSH1 0x00\n672 SWAP1\n673 SLOAD\n674 SWAP1\n(click to expand +)", "size": 150, "truncLabel": "667 JUMPDEST\n668 PUSH1 0x01\n670 PUSH1 0x00\n672 SWAP1\n673 SLOAD\n674 SWAP1\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "318 JUMPDEST\n319 PUSH1 0x40\n321 MLOAD\n322 DUP1\n323 DUP3\n324 PUSH20 0xffffffff(...)\n345 AND\n346 PUSH20 0xffffffff(...)\n367 AND\n368 DUP2\n369 MSTORE\n370 PUSH1 0x20\n372 ADD\n373 SWAP2\n374 POP\n375 POP\n376 PUSH1 0x40\n378 MLOAD\n379 DUP1\n380 SWAP2\n381 SUB\n382 SWAP1\n383 RETURN", "id": "210", "isExpanded": false, "label": "318 JUMPDEST\n319 PUSH1 0x40\n321 MLOAD\n322 DUP1\n323 DUP3\n324 PUSH20 0xffffffff(...)\n(click to expand +)", "size": 150, "truncLabel": "318 JUMPDEST\n319 PUSH1 0x40\n321 MLOAD\n322 DUP1\n323 DUP3\n324 PUSH20 0xffffffff(...)\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "109 DUP1\n110 PUSH4 0xe11f493e\n115 EQ\n116 PUSH2 0x0195\n119 JUMPI", "id": "211", "isExpanded": false, "label": "109 DUP1\n110 PUSH4 0xe11f493e\n115 EQ\n116 PUSH2 0x0195\n119 JUMPI", "size": 150, "truncLabel": "109 DUP1\n110 PUSH4 0xe11f493e\n115 EQ\n116 PUSH2 0x0195\n119 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "384 JUMPDEST\n385 CALLVALUE\n386 ISZERO\n387 PUSH2 0x018b\n390 JUMPI", "id": "212", "isExpanded": false, "label": "384 JUMPDEST\n385 CALLVALUE\n386 ISZERO\n387 PUSH2 0x018b\n390 JUMPI", "size": 150, "truncLabel": "384 JUMPDEST\n385 CALLVALUE\n386 ISZERO\n387 PUSH2 0x018b\n390 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "391 PUSH1 0x00\n393 DUP1\n394 REVERT", "id": "213", "isExpanded": false, "label": "391 PUSH1 0x00\n393 DUP1\n394 REVERT", "size": 150, "truncLabel": "391 PUSH1 0x00\n393 DUP1\n394 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "395 JUMPDEST\n396 PUSH2 0x0193\n399 PUSH2 0x02c1\n402 JUMP", "id": "214", "isExpanded": false, "label": "395 JUMPDEST\n396 PUSH2 0x0193\n399 PUSH2 0x02c1\n402 JUMP", "size": 150, "truncLabel": "395 JUMPDEST\n396 PUSH2 0x0193\n399 PUSH2 0x02c1\n402 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "705 JUMPDEST\n706 PUSH1 0x01\n708 PUSH1 0x00\n710 SWAP1\n711 SLOAD\n712 SWAP1\n713 PUSH2 0x0100\n716 EXP\n717 SWAP1\n718 DIV\n719 PUSH20 0xffffffff(...)\n740 AND\n741 PUSH20 0xffffffff(...)\n762 AND\n763 PUSH1 0x40\n765 MLOAD\n766 PUSH1 0x00\n768 PUSH1 0x40\n770 MLOAD\n771 DUP1\n772 DUP4\n773 SUB\n774 DUP2\n775 PUSH1 0x00\n777 DUP7\n778 GAS\n779 CALL\n780 SWAP2\n781 POP\n782 POP\n783 POP\n784 JUMP", "id": "215", "isExpanded": false, "label": "705 JUMPDEST\n706 PUSH1 0x01\n708 PUSH1 0x00\n710 SWAP1\n711 SLOAD\n712 SWAP1\n(click to expand +)", "size": 150, "truncLabel": "705 JUMPDEST\n706 PUSH1 0x01\n708 PUSH1 0x00\n710 SWAP1\n711 SLOAD\n712 SWAP1\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "403 JUMPDEST\n404 STOP", "id": "216", "isExpanded": false, "label": "403 JUMPDEST\n404 STOP", "size": 150, "truncLabel": "403 JUMPDEST\n404 STOP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "120 DUP1\n121 PUSH4 0xe1d10f79\n126 EQ\n127 PUSH2 0x01aa\n130 JUMPI", "id": "217", "isExpanded": false, "label": "120 DUP1\n121 PUSH4 0xe1d10f79\n126 EQ\n127 PUSH2 0x01aa\n130 JUMPI", "size": 150, "truncLabel": "120 DUP1\n121 PUSH4 0xe1d10f79\n126 EQ\n127 PUSH2 0x01aa\n130 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "405 JUMPDEST\n406 CALLVALUE\n407 ISZERO\n408 PUSH2 0x01a0\n411 JUMPI", "id": "218", "isExpanded": false, "label": "405 JUMPDEST\n406 CALLVALUE\n407 ISZERO\n408 PUSH2 0x01a0\n411 JUMPI", "size": 150, "truncLabel": "405 JUMPDEST\n406 CALLVALUE\n407 ISZERO\n408 PUSH2 0x01a0\n411 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "412 PUSH1 0x00\n414 DUP1\n415 REVERT", "id": "219", "isExpanded": false, "label": "412 PUSH1 0x00\n414 DUP1\n415 REVERT", "size": 150, "truncLabel": "412 PUSH1 0x00\n414 DUP1\n415 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "416 JUMPDEST\n417 PUSH2 0x01a8\n420 PUSH2 0x0311\n423 JUMP", "id": "220", "isExpanded": false, "label": "416 JUMPDEST\n417 PUSH2 0x01a8\n420 PUSH2 0x0311\n423 JUMP", "size": 150, "truncLabel": "416 JUMPDEST\n417 PUSH2 0x01a8\n420 PUSH2 0x0311\n423 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "785 JUMPDEST\n786 PUSH1 0x00\n788 DUP1\n789 SWAP1\n790 SLOAD\n791 SWAP1\n792 PUSH2 0x0100\n795 EXP\n796 SWAP1\n797 DIV\n798 PUSH20 0xffffffff(...)\n819 AND\n820 PUSH20 0xffffffff(...)\n841 AND\n842 PUSH1 0x40\n844 MLOAD\n845 PUSH1 0x00\n847 PUSH1 0x40\n849 MLOAD\n850 DUP1\n851 DUP4\n852 SUB\n853 DUP2\n854 PUSH1 0x00\n856 DUP7\n857 GAS\n858 CALL\n859 SWAP2\n860 POP\n861 POP\n862 POP\n863 PUSH1 0x00\n865 PUSH1 0x02\n867 DUP2\n868 SWAP1\n869 SSTORE\n870 POP\n871 JUMP", "id": "221", "isExpanded": false, "label": "785 JUMPDEST\n786 PUSH1 0x00\n788 DUP1\n789 SWAP1\n790 SLOAD\n791 SWAP1\n(click to expand +)", "size": 150, "truncLabel": "785 JUMPDEST\n786 PUSH1 0x00\n788 DUP1\n789 SWAP1\n790 SLOAD\n791 SWAP1\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "424 JUMPDEST\n425 STOP", "id": "222", "isExpanded": false, "label": "424 JUMPDEST\n425 STOP", "size": 150, "truncLabel": "424 JUMPDEST\n425 STOP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "131 JUMPDEST\n132 PUSH1 0x00\n134 DUP1\n135 REVERT", "id": "223", "isExpanded": false, "label": "131 JUMPDEST\n132 PUSH1 0x00\n134 DUP1\n135 REVERT", "size": 150, "truncLabel": "131 JUMPDEST\n132 PUSH1 0x00\n134 DUP1\n135 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "426 JUMPDEST\n427 CALLVALUE\n428 ISZERO\n429 PUSH2 0x01b5\n432 JUMPI", "id": "224", "isExpanded": false, "label": "426 JUMPDEST\n427 CALLVALUE\n428 ISZERO\n429 PUSH2 0x01b5\n432 JUMPI", "size": 150, "truncLabel": "426 JUMPDEST\n427 CALLVALUE\n428 ISZERO\n429 PUSH2 0x01b5\n432 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "433 PUSH1 0x00\n435 DUP1\n436 REVERT", "id": "225", "isExpanded": false, "label": "433 PUSH1 0x00\n435 DUP1\n436 REVERT", "size": 150, "truncLabel": "433 PUSH1 0x00\n435 DUP1\n436 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "437 JUMPDEST\n438 PUSH2 0x01e1\n441 PUSH1 0x04\n443 DUP1\n444 DUP1\n445 CALLDATALOAD\n446 PUSH20 0xffffffff(...)\n467 AND\n468 SWAP1\n469 PUSH1 0x20\n471 ADD\n472 SWAP1\n473 SWAP2\n474 SWAP1\n475 POP\n476 POP\n477 PUSH2 0x0368\n480 JUMP", "id": "226", "isExpanded": false, "label": "437 JUMPDEST\n438 PUSH2 0x01e1\n441 PUSH1 0x04\n443 DUP1\n444 DUP1\n445 CALLDATALOAD\n(click to expand +)", "size": 150, "truncLabel": "437 JUMPDEST\n438 PUSH2 0x01e1\n441 PUSH1 0x04\n443 DUP1\n444 DUP1\n445 CALLDATALOAD\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "872 JUMPDEST\n873 DUP1\n874 PUSH20 0xffffffff(...)\n895 AND\n896 PUSH1 0x40\n898 MLOAD\n899 PUSH1 0x00\n901 PUSH1 0x40\n903 MLOAD\n904 DUP1\n905 DUP4\n906 SUB\n907 DUP2\n908 PUSH1 0x00\n910 DUP7\n911 GAS\n912 CALL\n913 SWAP2\n914 POP\n915 POP\n916 POP\n917 POP\n918 JUMP", "id": "227", "isExpanded": false, "label": "872 JUMPDEST\n873 DUP1\n874 PUSH20 0xffffffff(...)\n895 AND\n896 PUSH1 0x40\n898 MLOAD\n(click to expand +)", "size": 150, "truncLabel": "872 JUMPDEST\n873 DUP1\n874 PUSH20 0xffffffff(...)\n895 AND\n896 PUSH1 0x40\n898 MLOAD\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "481 JUMPDEST\n482 STOP", "id": "228", "isExpanded": false, "label": "481 JUMPDEST\n482 STOP", "size": 150, "truncLabel": "481 JUMPDEST\n482 STOP"}];
+        var edges = [{"arrows": "to", "from": "184", "label": "ULE(4, 9_calldatasize)", "smooth": {"type": "cubicBezier"}, "to": "185"}, {"arrows": "to", "from": "184", "label": "Not(ULE(4, 9_calldatasize))", "smooth": {"type": "cubicBezier"}, "to": "186"}, {"arrows": "to", "from": "185", "label": "Not(And(If(9_calldatasize \u003c= 3, 0, 9_calldata[3]) == 99,        If(9_calldatasize \u003c= 2, 0, 9_calldata[2]) == 0xb1,        If(9_calldatasize \u003c= 1, 0, 9_calldata[1]) == 0x76,        If(9_calldatasize \u003c= 0, 0, 9_calldata[0]) == 39))", "smooth": {"type": "cubicBezier"}, "to": "187"}, {"arrows": "to", "from": "185", "label": "And(If(9_calldatasize \u003c= 3, 0, 9_calldata[3]) == 99,    If(9_calldatasize \u003c= 2, 0, 9_calldata[2]) == 0xb1,    If(9_calldatasize \u003c= 1, 0, 9_calldata[1]) == 0x76,    If(9_calldatasize \u003c= 0, 0, 9_calldata[0]) == 39)", "smooth": {"type": "cubicBezier"}, "to": "188"}, {"arrows": "to", "from": "188", "label": "If(call_value9 == 0, 1, 0) == 0", "smooth": {"type": "cubicBezier"}, "to": "189"}, {"arrows": "to", "from": "188", "label": "Not(If(call_value9 == 0, 1, 0) == 0)", "smooth": {"type": "cubicBezier"}, "to": "190"}, {"arrows": "to", "from": "190", "label": "", "smooth": {"type": "cubicBezier"}, "to": "191"}, {"arrows": "to", "from": "191", "label": "", "smooth": {"type": "cubicBezier"}, "to": "192"}, {"arrows": "to", "from": "187", "label": "Not(And(If(9_calldatasize \u003c= 3, 0, 9_calldata[3]) == 60,        If(9_calldatasize \u003c= 2, 0, 9_calldata[2]) == 0xf6,        If(9_calldatasize \u003c= 1, 0, 9_calldata[1]) == 0x9b,        If(9_calldatasize \u003c= 0, 0, 9_calldata[0]) == 55))", "smooth": {"type": "cubicBezier"}, "to": "193"}, {"arrows": "to", "from": "187", "label": "And(If(9_calldatasize \u003c= 3, 0, 9_calldata[3]) == 60,    If(9_calldatasize \u003c= 2, 0, 9_calldata[2]) == 0xf6,    If(9_calldatasize \u003c= 1, 0, 9_calldata[1]) == 0x9b,    If(9_calldatasize \u003c= 0, 0, 9_calldata[0]) == 55)", "smooth": {"type": "cubicBezier"}, "to": "194"}, {"arrows": "to", "from": "194", "label": "If(call_value9 == 0, 1, 0) == 0", "smooth": {"type": "cubicBezier"}, "to": "195"}, {"arrows": "to", "from": "194", "label": "Not(If(call_value9 == 0, 1, 0) == 0)", "smooth": {"type": "cubicBezier"}, "to": "196"}, {"arrows": "to", "from": "196", "label": "", "smooth": {"type": "cubicBezier"}, "to": "197"}, {"arrows": "to", "from": "197", "label": "", "smooth": {"type": "cubicBezier"}, "to": "198"}, {"arrows": "to", "from": "193", "label": "Not(And(If(9_calldatasize \u003c= 3, 0, 9_calldata[3]) == 0xec,        If(9_calldatasize \u003c= 2, 0, 9_calldata[2]) == 20,        If(9_calldatasize \u003c= 1, 0, 9_calldata[1]) == 0x68,        If(9_calldatasize \u003c= 0, 0, 9_calldata[0]) == 90))", "smooth": {"type": "cubicBezier"}, "to": "199"}, {"arrows": "to", "from": "193", "label": "And(If(9_calldatasize \u003c= 3, 0, 9_calldata[3]) == 0xec,    If(9_calldatasize \u003c= 2, 0, 9_calldata[2]) == 20,    If(9_calldatasize \u003c= 1, 0, 9_calldata[1]) == 0x68,    If(9_calldatasize \u003c= 0, 0, 9_calldata[0]) == 90)", "smooth": {"type": "cubicBezier"}, "to": "200"}, {"arrows": "to", "from": "200", "label": "If(call_value9 == 0, 1, 0) == 0", "smooth": {"type": "cubicBezier"}, "to": "201"}, {"arrows": "to", "from": "200", "label": "Not(If(call_value9 == 0, 1, 0) == 0)", "smooth": {"type": "cubicBezier"}, "to": "202"}, {"arrows": "to", "from": "202", "label": "", "smooth": {"type": "cubicBezier"}, "to": "203"}, {"arrows": "to", "from": "203", "label": "", "smooth": {"type": "cubicBezier"}, "to": "204"}, {"arrows": "to", "from": "199", "label": "Not(And(If(9_calldatasize \u003c= 3, 0, 9_calldata[3]) == 0x8a,        If(9_calldatasize \u003c= 2, 0, 9_calldata[2]) == 44,        If(9_calldatasize \u003c= 1, 0, 9_calldata[1]) == 0xd0,        If(9_calldatasize \u003c= 0, 0, 9_calldata[0]) == 0xb5))", "smooth": {"type": "cubicBezier"}, "to": "205"}, {"arrows": "to", "from": "199", "label": "And(If(9_calldatasize \u003c= 3, 0, 9_calldata[3]) == 0x8a,    If(9_calldatasize \u003c= 2, 0, 9_calldata[2]) == 44,    If(9_calldatasize \u003c= 1, 0, 9_calldata[1]) == 0xd0,    If(9_calldatasize \u003c= 0, 0, 9_calldata[0]) == 0xb5)", "smooth": {"type": "cubicBezier"}, "to": "206"}, {"arrows": "to", "from": "206", "label": "If(call_value9 == 0, 1, 0) == 0", "smooth": {"type": "cubicBezier"}, "to": "207"}, {"arrows": "to", "from": "206", "label": "Not(If(call_value9 == 0, 1, 0) == 0)", "smooth": {"type": "cubicBezier"}, "to": "208"}, {"arrows": "to", "from": "208", "label": "", "smooth": {"type": "cubicBezier"}, "to": "209"}, {"arrows": "to", "from": "209", "label": "", "smooth": {"type": "cubicBezier"}, "to": "210"}, {"arrows": "to", "from": "205", "label": "Not(And(If(9_calldatasize \u003c= 3, 0, 9_calldata[3]) == 0xcc,        If(9_calldatasize \u003c= 2, 0, 9_calldata[2]) == 8,        If(9_calldatasize \u003c= 1, 0, 9_calldata[1]) == 75,        If(9_calldatasize \u003c= 0, 0, 9_calldata[0]) == 0xd2))", "smooth": {"type": "cubicBezier"}, "to": "211"}, {"arrows": "to", "from": "205", "label": "And(If(9_calldatasize \u003c= 3, 0, 9_calldata[3]) == 0xcc,    If(9_calldatasize \u003c= 2, 0, 9_calldata[2]) == 8,    If(9_calldatasize \u003c= 1, 0, 9_calldata[1]) == 75,    If(9_calldatasize \u003c= 0, 0, 9_calldata[0]) == 0xd2)", "smooth": {"type": "cubicBezier"}, "to": "212"}, {"arrows": "to", "from": "212", "label": "If(call_value9 == 0, 1, 0) == 0", "smooth": {"type": "cubicBezier"}, "to": "213"}, {"arrows": "to", "from": "212", "label": "Not(If(call_value9 == 0, 1, 0) == 0)", "smooth": {"type": "cubicBezier"}, "to": "214"}, {"arrows": "to", "from": "214", "label": "", "smooth": {"type": "cubicBezier"}, "to": "215"}, {"arrows": "to", "from": "215", "label": "", "smooth": {"type": "cubicBezier"}, "to": "216"}, {"arrows": "to", "from": "211", "label": "Not(And(If(9_calldatasize \u003c= 3, 0, 9_calldata[3]) == 62,        If(9_calldatasize \u003c= 2, 0, 9_calldata[2]) == 73,        If(9_calldatasize \u003c= 1, 0, 9_calldata[1]) == 31,        If(9_calldatasize \u003c= 0, 0, 9_calldata[0]) == 0xe1))", "smooth": {"type": "cubicBezier"}, "to": "217"}, {"arrows": "to", "from": "211", "label": "And(If(9_calldatasize \u003c= 3, 0, 9_calldata[3]) == 62,    If(9_calldatasize \u003c= 2, 0, 9_calldata[2]) == 73,    If(9_calldatasize \u003c= 1, 0, 9_calldata[1]) == 31,    If(9_calldatasize \u003c= 0, 0, 9_calldata[0]) == 0xe1)", "smooth": {"type": "cubicBezier"}, "to": "218"}, {"arrows": "to", "from": "218", "label": "If(call_value9 == 0, 1, 0) == 0", "smooth": {"type": "cubicBezier"}, "to": "219"}, {"arrows": "to", "from": "218", "label": "Not(If(call_value9 == 0, 1, 0) == 0)", "smooth": {"type": "cubicBezier"}, "to": "220"}, {"arrows": "to", "from": "220", "label": "", "smooth": {"type": "cubicBezier"}, "to": "221"}, {"arrows": "to", "from": "221", "label": "", "smooth": {"type": "cubicBezier"}, "to": "222"}, {"arrows": "to", "from": "217", "label": "Not(And(If(9_calldatasize \u003c= 3, 0, 9_calldata[3]) == 0x79,        If(9_calldatasize \u003c= 2, 0, 9_calldata[2]) == 15,        If(9_calldatasize \u003c= 1, 0, 9_calldata[1]) == 0xd1,        If(9_calldatasize \u003c= 0, 0, 9_calldata[0]) == 0xe1))", "smooth": {"type": "cubicBezier"}, "to": "223"}, {"arrows": "to", "from": "217", "label": "And(If(9_calldatasize \u003c= 3, 0, 9_calldata[3]) == 0x79,    If(9_calldatasize \u003c= 2, 0, 9_calldata[2]) == 15,    If(9_calldatasize \u003c= 1, 0, 9_calldata[1]) == 0xd1,    If(9_calldatasize \u003c= 0, 0, 9_calldata[0]) == 0xe1)", "smooth": {"type": "cubicBezier"}, "to": "224"}, {"arrows": "to", "from": "224", "label": "If(call_value9 == 0, 1, 0) == 0", "smooth": {"type": "cubicBezier"}, "to": "225"}, {"arrows": "to", "from": "224", "label": "Not(If(call_value9 == 0, 1, 0) == 0)", "smooth": {"type": "cubicBezier"}, "to": "226"}, {"arrows": "to", "from": "226", "label": "", "smooth": {"type": "cubicBezier"}, "to": "227"}, {"arrows": "to", "from": "227", "label": "", "smooth": {"type": "cubicBezier"}, "to": "228"}];
+    </script>
+</head>
+<body>
+<p>Mythril / Ethereum LASER Symbolic VM</p>
+<div id="mynetwork"></div>
+<script type="text/javascript">
+    var container = document.getElementById('mynetwork');
+
+    var nodesSet = new vis.DataSet(nodes);
+    var edgesSet = new vis.DataSet(edges);
+    var data = {'nodes': nodesSet, 'edges': edgesSet}
+
+    var gph = new vis.Network(container, data, options);
+    gph.on("click", function (params) {
+        // parse node id
+        var nodeID = params['nodes']['0'];
+        if (nodeID) {
+            var clickedNode = nodesSet.get(nodeID);
+
+            if(clickedNode.isExpanded) {
+                clickedNode.label = clickedNode.truncLabel;
+            }
+            else {
+                clickedNode.label = clickedNode.fullLabel;
+            }
+
+            clickedNode.isExpanded = !clickedNode.isExpanded;
+
+            nodesSet.update(clickedNode);
+        }
+    });
+</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/tests/testdata/outputs_expected/environments.sol.o.easm b/tests/testdata/outputs_expected/environments.sol.o.easm
new file mode 100644
index 0000000000000000000000000000000000000000..7a5b2043988a986e2395911df909da645dabeeb6
--- /dev/null
+++ b/tests/testdata/outputs_expected/environments.sol.o.easm
@@ -0,0 +1,259 @@
+0 PUSH1 0x80
+2 PUSH1 0x40
+4 MSTORE
+5 PUSH1 0x04
+7 CALLDATASIZE
+8 LT
+9 PUSH2 0x004c
+12 JUMPI
+13 PUSH1 0x00
+15 CALLDATALOAD
+16 PUSH29 0x0100000000000000000000000000000000000000000000000000000000
+46 SWAP1
+47 DIV
+48 PUSH4 0xffffffff
+53 AND
+54 DUP1
+55 PUSH4 0x06661abd
+60 EQ
+61 PUSH2 0x0051
+64 JUMPI
+65 DUP1
+66 PUSH4 0x83f12fec
+71 EQ
+72 PUSH2 0x007c
+75 JUMPI
+76 JUMPDEST
+77 PUSH1 0x00
+79 DUP1
+80 REVERT
+81 JUMPDEST
+82 CALLVALUE
+83 DUP1
+84 ISZERO
+85 PUSH2 0x005d
+88 JUMPI
+89 PUSH1 0x00
+91 DUP1
+92 REVERT
+93 JUMPDEST
+94 POP
+95 PUSH2 0x0066
+98 PUSH2 0x0104
+101 JUMP
+102 JUMPDEST
+103 PUSH1 0x40
+105 MLOAD
+106 DUP1
+107 DUP3
+108 DUP2
+109 MSTORE
+110 PUSH1 0x20
+112 ADD
+113 SWAP2
+114 POP
+115 POP
+116 PUSH1 0x40
+118 MLOAD
+119 DUP1
+120 SWAP2
+121 SUB
+122 SWAP1
+123 RETURN
+124 JUMPDEST
+125 CALLVALUE
+126 DUP1
+127 ISZERO
+128 PUSH2 0x0088
+131 JUMPI
+132 PUSH1 0x00
+134 DUP1
+135 REVERT
+136 JUMPDEST
+137 POP
+138 PUSH2 0x00ea
+141 PUSH1 0x04
+143 DUP1
+144 CALLDATASIZE
+145 SUB
+146 DUP2
+147 ADD
+148 SWAP1
+149 DUP1
+150 DUP1
+151 CALLDATALOAD
+152 SWAP1
+153 PUSH1 0x20
+155 ADD
+156 SWAP1
+157 DUP3
+158 ADD
+159 DUP1
+160 CALLDATALOAD
+161 SWAP1
+162 PUSH1 0x20
+164 ADD
+165 SWAP1
+166 DUP1
+167 DUP1
+168 PUSH1 0x20
+170 MUL
+171 PUSH1 0x20
+173 ADD
+174 PUSH1 0x40
+176 MLOAD
+177 SWAP1
+178 DUP2
+179 ADD
+180 PUSH1 0x40
+182 MSTORE
+183 DUP1
+184 SWAP4
+185 SWAP3
+186 SWAP2
+187 SWAP1
+188 DUP2
+189 DUP2
+190 MSTORE
+191 PUSH1 0x20
+193 ADD
+194 DUP4
+195 DUP4
+196 PUSH1 0x20
+198 MUL
+199 DUP1
+200 DUP3
+201 DUP5
+202 CALLDATACOPY
+203 DUP3
+204 ADD
+205 SWAP2
+206 POP
+207 POP
+208 POP
+209 POP
+210 POP
+211 POP
+212 SWAP2
+213 SWAP3
+214 SWAP2
+215 SWAP3
+216 SWAP1
+217 DUP1
+218 CALLDATALOAD
+219 SWAP1
+220 PUSH1 0x20
+222 ADD
+223 SWAP1
+224 SWAP3
+225 SWAP2
+226 SWAP1
+227 POP
+228 POP
+229 POP
+230 PUSH2 0x010a
+233 JUMP
+234 JUMPDEST
+235 PUSH1 0x40
+237 MLOAD
+238 DUP1
+239 DUP3
+240 ISZERO
+241 ISZERO
+242 ISZERO
+243 ISZERO
+244 DUP2
+245 MSTORE
+246 PUSH1 0x20
+248 ADD
+249 SWAP2
+250 POP
+251 POP
+252 PUSH1 0x40
+254 MLOAD
+255 DUP1
+256 SWAP2
+257 SUB
+258 SWAP1
+259 RETURN
+260 JUMPDEST
+261 PUSH1 0x00
+263 SLOAD
+264 DUP2
+265 JUMP
+266 JUMPDEST
+267 PUSH1 0x00
+269 DUP1
+270 PUSH1 0x00
+272 DUP5
+273 MLOAD
+274 SWAP2
+275 POP
+276 DUP4
+277 DUP3
+278 MUL
+279 SWAP1
+280 POP
+281 PUSH1 0x00
+283 DUP3
+284 GT
+285 DUP1
+286 ISZERO
+287 PUSH2 0x0129
+290 JUMPI
+291 POP
+292 PUSH1 0x14
+294 DUP3
+295 GT
+296 ISZERO
+297 JUMPDEST
+298 ISZERO
+299 ISZERO
+300 PUSH2 0x0134
+303 JUMPI
+304 PUSH1 0x00
+306 DUP1
+307 REVERT
+308 JUMPDEST
+309 DUP1
+310 PUSH1 0x01
+312 PUSH1 0x00
+314 CALLER
+315 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+336 AND
+337 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+358 AND
+359 DUP2
+360 MSTORE
+361 PUSH1 0x20
+363 ADD
+364 SWAP1
+365 DUP2
+366 MSTORE
+367 PUSH1 0x20
+369 ADD
+370 PUSH1 0x00
+372 SHA3
+373 PUSH1 0x00
+375 DUP3
+376 DUP3
+377 SLOAD
+378 SUB
+379 SWAP3
+380 POP
+381 POP
+382 DUP2
+383 SWAP1
+384 SSTORE
+385 POP
+386 PUSH1 0x01
+388 SWAP3
+389 POP
+390 POP
+391 POP
+392 SWAP3
+393 SWAP2
+394 POP
+395 POP
+396 JUMP
+397 STOP
diff --git a/tests/testdata/outputs_expected/environments.sol.o.graph.html b/tests/testdata/outputs_expected/environments.sol.o.graph.html
new file mode 100644
index 0000000000000000000000000000000000000000..14a02195cb200f3c840c352fea909feb69bd74e8
--- /dev/null
+++ b/tests/testdata/outputs_expected/environments.sol.o.graph.html
@@ -0,0 +1,62 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>Call Graph</title>
+    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.css" integrity="sha256-iq5ygGJ7021Pi7H5S+QAUXCPUfaBzfqeplbg/KlEssg=" crossorigin="anonymous" />
+    <script src="https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.js" integrity="sha256-JuQeAGbk9rG/EoRMixuy5X8syzICcvB0dj3KindZkY0=" crossorigin="anonymous"></script>
+
+    
+    <style type="text/css">
+        #mynetwork {
+          height: 100%;
+            background-color: #232625;
+        }
+        body {
+            background-color: #232625;
+            color: #ffffff;
+            font-size: 10px;
+        }
+        html, body {
+          height: 95%;
+        }
+    </style>
+    
+
+    <script>
+        var options = {"autoResize": true, "edges": {"font": {"align": "horizontal", "background": "none", "color": "#FFFFFF", "face": "arial", "multi": false, "strokeColor": "#ffffff", "strokeWidth": 0, "vadjust": 0}}, "height": "100%", "layout": {"hierarchical": {"blockShifting": true, "direction": "LR", "edgeMinimization": true, "enabled": true, "levelSeparation": 450, "nodeSpacing": 200, "parentCentralization": false, "sortMethod": "directed", "treeSpacing": 100}, "improvedLayout": true}, "manipulation": false, "nodes": {"borderWidth": 1, "borderWidthSelected": 2, "chosen": true, "color": "#000000", "font": {"align": "left", "color": "#FFFFFF"}, "shape": "box"}, "physics": {"enabled": false}, "width": "100%"};
+        var nodes = [{"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "0 PUSH1 0x80\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n9 PUSH2 0x004c\n12 JUMPI", "id": "65", "isExpanded": false, "label": "0 PUSH1 0x80\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n(click to expand +)", "size": 150, "truncLabel": "0 PUSH1 0x80\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x01000000(...)\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n53 AND\n54 DUP1\n55 PUSH4 0x06661abd\n60 EQ\n61 PUSH2 0x0051\n64 JUMPI", "id": "66", "isExpanded": false, "label": "13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x01000000(...)\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n(click to expand +)", "size": 150, "truncLabel": "13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x01000000(...)\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "76 JUMPDEST\n77 PUSH1 0x00\n79 DUP1\n80 REVERT", "id": "67", "isExpanded": false, "label": "76 JUMPDEST\n77 PUSH1 0x00\n79 DUP1\n80 REVERT", "size": 150, "truncLabel": "76 JUMPDEST\n77 PUSH1 0x00\n79 DUP1\n80 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "65 DUP1\n66 PUSH4 0x83f12fec\n71 EQ\n72 PUSH2 0x007c\n75 JUMPI", "id": "68", "isExpanded": false, "label": "65 DUP1\n66 PUSH4 0x83f12fec\n71 EQ\n72 PUSH2 0x007c\n75 JUMPI", "size": 150, "truncLabel": "65 DUP1\n66 PUSH4 0x83f12fec\n71 EQ\n72 PUSH2 0x007c\n75 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "81 JUMPDEST\n82 CALLVALUE\n83 DUP1\n84 ISZERO\n85 PUSH2 0x005d\n88 JUMPI", "id": "69", "isExpanded": false, "label": "81 JUMPDEST\n82 CALLVALUE\n83 DUP1\n84 ISZERO\n85 PUSH2 0x005d\n88 JUMPI", "size": 150, "truncLabel": "81 JUMPDEST\n82 CALLVALUE\n83 DUP1\n84 ISZERO\n85 PUSH2 0x005d\n88 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "89 PUSH1 0x00\n91 DUP1\n92 REVERT", "id": "70", "isExpanded": false, "label": "89 PUSH1 0x00\n91 DUP1\n92 REVERT", "size": 150, "truncLabel": "89 PUSH1 0x00\n91 DUP1\n92 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "93 JUMPDEST\n94 POP\n95 PUSH2 0x0066\n98 PUSH2 0x0104\n101 JUMP", "id": "71", "isExpanded": false, "label": "93 JUMPDEST\n94 POP\n95 PUSH2 0x0066\n98 PUSH2 0x0104\n101 JUMP", "size": 150, "truncLabel": "93 JUMPDEST\n94 POP\n95 PUSH2 0x0066\n98 PUSH2 0x0104\n101 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "260 JUMPDEST\n261 PUSH1 0x00\n263 SLOAD\n264 DUP2\n265 JUMP", "id": "72", "isExpanded": false, "label": "260 JUMPDEST\n261 PUSH1 0x00\n263 SLOAD\n264 DUP2\n265 JUMP", "size": 150, "truncLabel": "260 JUMPDEST\n261 PUSH1 0x00\n263 SLOAD\n264 DUP2\n265 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "102 JUMPDEST\n103 PUSH1 0x40\n105 MLOAD\n106 DUP1\n107 DUP3\n108 DUP2\n109 MSTORE\n110 PUSH1 0x20\n112 ADD\n113 SWAP2\n114 POP\n115 POP\n116 PUSH1 0x40\n118 MLOAD\n119 DUP1\n120 SWAP2\n121 SUB\n122 SWAP1\n123 RETURN", "id": "73", "isExpanded": false, "label": "102 JUMPDEST\n103 PUSH1 0x40\n105 MLOAD\n106 DUP1\n107 DUP3\n108 DUP2\n(click to expand +)", "size": 150, "truncLabel": "102 JUMPDEST\n103 PUSH1 0x40\n105 MLOAD\n106 DUP1\n107 DUP3\n108 DUP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "76 JUMPDEST\n77 PUSH1 0x00\n79 DUP1\n80 REVERT", "id": "74", "isExpanded": false, "label": "76 JUMPDEST\n77 PUSH1 0x00\n79 DUP1\n80 REVERT", "size": 150, "truncLabel": "76 JUMPDEST\n77 PUSH1 0x00\n79 DUP1\n80 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "124 JUMPDEST\n125 CALLVALUE\n126 DUP1\n127 ISZERO\n128 PUSH2 0x0088\n131 JUMPI", "id": "75", "isExpanded": false, "label": "124 JUMPDEST\n125 CALLVALUE\n126 DUP1\n127 ISZERO\n128 PUSH2 0x0088\n131 JUMPI", "size": 150, "truncLabel": "124 JUMPDEST\n125 CALLVALUE\n126 DUP1\n127 ISZERO\n128 PUSH2 0x0088\n131 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "132 PUSH1 0x00\n134 DUP1\n135 REVERT", "id": "76", "isExpanded": false, "label": "132 PUSH1 0x00\n134 DUP1\n135 REVERT", "size": 150, "truncLabel": "132 PUSH1 0x00\n134 DUP1\n135 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "136 JUMPDEST\n137 POP\n138 PUSH2 0x00ea\n141 PUSH1 0x04\n143 DUP1\n144 CALLDATASIZE\n145 SUB\n146 DUP2\n147 ADD\n148 SWAP1\n149 DUP1\n150 DUP1\n151 CALLDATALOAD\n152 SWAP1\n153 PUSH1 0x20\n155 ADD\n156 SWAP1\n157 DUP3\n158 ADD\n159 DUP1\n160 CALLDATALOAD\n161 SWAP1\n162 PUSH1 0x20\n164 ADD\n165 SWAP1\n166 DUP1\n167 DUP1\n168 PUSH1 0x20\n170 MUL\n171 PUSH1 0x20\n173 ADD\n174 PUSH1 0x40\n176 MLOAD\n177 SWAP1\n178 DUP2\n179 ADD\n180 PUSH1 0x40\n182 MSTORE\n183 DUP1\n184 SWAP4\n185 SWAP3\n186 SWAP2\n187 SWAP1\n188 DUP2\n189 DUP2\n190 MSTORE\n191 PUSH1 0x20\n193 ADD\n194 DUP4\n195 DUP4\n196 PUSH1 0x20\n198 MUL\n199 DUP1\n200 DUP3\n201 DUP5\n202 CALLDATACOPY\n203 DUP3\n204 ADD\n205 SWAP2\n206 POP\n207 POP\n208 POP\n209 POP\n210 POP\n211 POP\n212 SWAP2\n213 SWAP3\n214 SWAP2\n215 SWAP3\n216 SWAP1\n217 DUP1\n218 CALLDATALOAD\n219 SWAP1\n220 PUSH1 0x20\n222 ADD\n223 SWAP1\n224 SWAP3\n225 SWAP2\n226 SWAP1\n227 POP\n228 POP\n229 POP\n230 PUSH2 0x010a\n233 JUMP", "id": "77", "isExpanded": false, "label": "136 JUMPDEST\n137 POP\n138 PUSH2 0x00ea\n141 PUSH1 0x04\n143 DUP1\n144 CALLDATASIZE\n(click to expand +)", "size": 150, "truncLabel": "136 JUMPDEST\n137 POP\n138 PUSH2 0x00ea\n141 PUSH1 0x04\n143 DUP1\n144 CALLDATASIZE\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "266 JUMPDEST\n267 PUSH1 0x00\n269 DUP1\n270 PUSH1 0x00\n272 DUP5\n273 MLOAD\n274 SWAP2\n275 POP\n276 DUP4\n277 DUP3\n278 MUL\n279 SWAP1\n280 POP\n281 PUSH1 0x00\n283 DUP3\n284 GT\n285 DUP1\n286 ISZERO\n287 PUSH2 0x0129\n290 JUMPI", "id": "78", "isExpanded": false, "label": "266 JUMPDEST\n267 PUSH1 0x00\n269 DUP1\n270 PUSH1 0x00\n272 DUP5\n273 MLOAD\n(click to expand +)", "size": 150, "truncLabel": "266 JUMPDEST\n267 PUSH1 0x00\n269 DUP1\n270 PUSH1 0x00\n272 DUP5\n273 MLOAD\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "291 POP\n292 PUSH1 0x14\n294 DUP3\n295 GT\n296 ISZERO\n297 JUMPDEST\n298 ISZERO\n299 ISZERO\n300 PUSH2 0x0134\n303 JUMPI", "id": "79", "isExpanded": false, "label": "291 POP\n292 PUSH1 0x14\n294 DUP3\n295 GT\n296 ISZERO\n297 JUMPDEST\n(click to expand +)", "size": 150, "truncLabel": "291 POP\n292 PUSH1 0x14\n294 DUP3\n295 GT\n296 ISZERO\n297 JUMPDEST\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "297 JUMPDEST\n298 ISZERO\n299 ISZERO\n300 PUSH2 0x0134\n303 JUMPI", "id": "80", "isExpanded": false, "label": "297 JUMPDEST\n298 ISZERO\n299 ISZERO\n300 PUSH2 0x0134\n303 JUMPI", "size": 150, "truncLabel": "297 JUMPDEST\n298 ISZERO\n299 ISZERO\n300 PUSH2 0x0134\n303 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "304 PUSH1 0x00\n306 DUP1\n307 REVERT", "id": "81", "isExpanded": false, "label": "304 PUSH1 0x00\n306 DUP1\n307 REVERT", "size": 150, "truncLabel": "304 PUSH1 0x00\n306 DUP1\n307 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "308 JUMPDEST\n309 DUP1\n310 PUSH1 0x01\n312 PUSH1 0x00\n314 CALLER\n315 PUSH20 0xffffffff(...)\n336 AND\n337 PUSH20 0xffffffff(...)\n358 AND\n359 DUP2\n360 MSTORE\n361 PUSH1 0x20\n363 ADD\n364 SWAP1\n365 DUP2\n366 MSTORE\n367 PUSH1 0x20\n369 ADD\n370 PUSH1 0x00\n372 SHA3\n373 PUSH1 0x00\n375 DUP3\n376 DUP3\n377 SLOAD\n378 SUB\n379 SWAP3\n380 POP\n381 POP\n382 DUP2\n383 SWAP1\n384 SSTORE", "id": "82", "isExpanded": false, "label": "308 JUMPDEST\n309 DUP1\n310 PUSH1 0x01\n312 PUSH1 0x00\n314 CALLER\n315 PUSH20 0xffffffff(...)\n(click to expand +)", "size": 150, "truncLabel": "308 JUMPDEST\n309 DUP1\n310 PUSH1 0x01\n312 PUSH1 0x00\n314 CALLER\n315 PUSH20 0xffffffff(...)\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "385 POP\n386 PUSH1 0x01\n388 SWAP3\n389 POP\n390 POP\n391 POP\n392 SWAP3\n393 SWAP2\n394 POP\n395 POP\n396 JUMP", "id": "83", "isExpanded": false, "label": "385 POP\n386 PUSH1 0x01\n388 SWAP3\n389 POP\n390 POP\n391 POP\n(click to expand +)", "size": 150, "truncLabel": "385 POP\n386 PUSH1 0x01\n388 SWAP3\n389 POP\n390 POP\n391 POP\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "385 POP\n386 PUSH1 0x01\n388 SWAP3\n389 POP\n390 POP\n391 POP\n392 SWAP3\n393 SWAP2\n394 POP\n395 POP\n396 JUMP", "id": "84", "isExpanded": false, "label": "385 POP\n386 PUSH1 0x01\n388 SWAP3\n389 POP\n390 POP\n391 POP\n(click to expand +)", "size": 150, "truncLabel": "385 POP\n386 PUSH1 0x01\n388 SWAP3\n389 POP\n390 POP\n391 POP\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "234 JUMPDEST\n235 PUSH1 0x40\n237 MLOAD\n238 DUP1\n239 DUP3\n240 ISZERO\n241 ISZERO\n242 ISZERO\n243 ISZERO\n244 DUP2\n245 MSTORE\n246 PUSH1 0x20\n248 ADD\n249 SWAP2\n250 POP\n251 POP\n252 PUSH1 0x40\n254 MLOAD\n255 DUP1\n256 SWAP2\n257 SUB\n258 SWAP1\n259 RETURN", "id": "85", "isExpanded": false, "label": "234 JUMPDEST\n235 PUSH1 0x40\n237 MLOAD\n238 DUP1\n239 DUP3\n240 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "234 JUMPDEST\n235 PUSH1 0x40\n237 MLOAD\n238 DUP1\n239 DUP3\n240 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "234 JUMPDEST\n235 PUSH1 0x40\n237 MLOAD\n238 DUP1\n239 DUP3\n240 ISZERO\n241 ISZERO\n242 ISZERO\n243 ISZERO\n244 DUP2\n245 MSTORE\n246 PUSH1 0x20\n248 ADD\n249 SWAP2\n250 POP\n251 POP\n252 PUSH1 0x40\n254 MLOAD\n255 DUP1\n256 SWAP2\n257 SUB\n258 SWAP1\n259 RETURN", "id": "86", "isExpanded": false, "label": "234 JUMPDEST\n235 PUSH1 0x40\n237 MLOAD\n238 DUP1\n239 DUP3\n240 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "234 JUMPDEST\n235 PUSH1 0x40\n237 MLOAD\n238 DUP1\n239 DUP3\n240 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "304 PUSH1 0x00\n306 DUP1\n307 REVERT", "id": "87", "isExpanded": false, "label": "304 PUSH1 0x00\n306 DUP1\n307 REVERT", "size": 150, "truncLabel": "304 PUSH1 0x00\n306 DUP1\n307 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "308 JUMPDEST\n309 DUP1\n310 PUSH1 0x01\n312 PUSH1 0x00\n314 CALLER\n315 PUSH20 0xffffffff(...)\n336 AND\n337 PUSH20 0xffffffff(...)\n358 AND\n359 DUP2\n360 MSTORE\n361 PUSH1 0x20\n363 ADD\n364 SWAP1\n365 DUP2\n366 MSTORE\n367 PUSH1 0x20\n369 ADD\n370 PUSH1 0x00\n372 SHA3\n373 PUSH1 0x00\n375 DUP3\n376 DUP3\n377 SLOAD\n378 SUB\n379 SWAP3\n380 POP\n381 POP\n382 DUP2\n383 SWAP1\n384 SSTORE", "id": "88", "isExpanded": false, "label": "308 JUMPDEST\n309 DUP1\n310 PUSH1 0x01\n312 PUSH1 0x00\n314 CALLER\n315 PUSH20 0xffffffff(...)\n(click to expand +)", "size": 150, "truncLabel": "308 JUMPDEST\n309 DUP1\n310 PUSH1 0x01\n312 PUSH1 0x00\n314 CALLER\n315 PUSH20 0xffffffff(...)\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "385 POP\n386 PUSH1 0x01\n388 SWAP3\n389 POP\n390 POP\n391 POP\n392 SWAP3\n393 SWAP2\n394 POP\n395 POP\n396 JUMP", "id": "89", "isExpanded": false, "label": "385 POP\n386 PUSH1 0x01\n388 SWAP3\n389 POP\n390 POP\n391 POP\n(click to expand +)", "size": 150, "truncLabel": "385 POP\n386 PUSH1 0x01\n388 SWAP3\n389 POP\n390 POP\n391 POP\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "385 POP\n386 PUSH1 0x01\n388 SWAP3\n389 POP\n390 POP\n391 POP\n392 SWAP3\n393 SWAP2\n394 POP\n395 POP\n396 JUMP", "id": "90", "isExpanded": false, "label": "385 POP\n386 PUSH1 0x01\n388 SWAP3\n389 POP\n390 POP\n391 POP\n(click to expand +)", "size": 150, "truncLabel": "385 POP\n386 PUSH1 0x01\n388 SWAP3\n389 POP\n390 POP\n391 POP\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "234 JUMPDEST\n235 PUSH1 0x40\n237 MLOAD\n238 DUP1\n239 DUP3\n240 ISZERO\n241 ISZERO\n242 ISZERO\n243 ISZERO\n244 DUP2\n245 MSTORE\n246 PUSH1 0x20\n248 ADD\n249 SWAP2\n250 POP\n251 POP\n252 PUSH1 0x40\n254 MLOAD\n255 DUP1\n256 SWAP2\n257 SUB\n258 SWAP1\n259 RETURN", "id": "91", "isExpanded": false, "label": "234 JUMPDEST\n235 PUSH1 0x40\n237 MLOAD\n238 DUP1\n239 DUP3\n240 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "234 JUMPDEST\n235 PUSH1 0x40\n237 MLOAD\n238 DUP1\n239 DUP3\n240 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "234 JUMPDEST\n235 PUSH1 0x40\n237 MLOAD\n238 DUP1\n239 DUP3\n240 ISZERO\n241 ISZERO\n242 ISZERO\n243 ISZERO\n244 DUP2\n245 MSTORE\n246 PUSH1 0x20\n248 ADD\n249 SWAP2\n250 POP\n251 POP\n252 PUSH1 0x40\n254 MLOAD\n255 DUP1\n256 SWAP2\n257 SUB\n258 SWAP1\n259 RETURN", "id": "92", "isExpanded": false, "label": "234 JUMPDEST\n235 PUSH1 0x40\n237 MLOAD\n238 DUP1\n239 DUP3\n240 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "234 JUMPDEST\n235 PUSH1 0x40\n237 MLOAD\n238 DUP1\n239 DUP3\n240 ISZERO\n(click to expand +)"}];
+        var edges = [{"arrows": "to", "from": "65", "label": "ULE(4, 4_calldatasize)", "smooth": {"type": "cubicBezier"}, "to": "66"}, {"arrows": "to", "from": "65", "label": "Not(ULE(4, 4_calldatasize))", "smooth": {"type": "cubicBezier"}, "to": "67"}, {"arrows": "to", "from": "66", "label": "Not(And(4_calldata[3] == 0xbd,        4_calldata[2] == 26,        4_calldata[1] == 0x66,        4_calldata[0] == 6))", "smooth": {"type": "cubicBezier"}, "to": "68"}, {"arrows": "to", "from": "66", "label": "And(4_calldata[3] == 0xbd,    4_calldata[2] == 26,    4_calldata[1] == 0x66,    4_calldata[0] == 6)", "smooth": {"type": "cubicBezier"}, "to": "69"}, {"arrows": "to", "from": "69", "label": "Not(call_value4 == 0)", "smooth": {"type": "cubicBezier"}, "to": "70"}, {"arrows": "to", "from": "69", "label": "call_value4 == 0", "smooth": {"type": "cubicBezier"}, "to": "71"}, {"arrows": "to", "from": "71", "label": "", "smooth": {"type": "cubicBezier"}, "to": "72"}, {"arrows": "to", "from": "72", "label": "", "smooth": {"type": "cubicBezier"}, "to": "73"}, {"arrows": "to", "from": "68", "label": "Not(And(4_calldata[3] == 0xec,        4_calldata[2] == 47,        4_calldata[1] == 0xf1,        4_calldata[0] == 0x83))", "smooth": {"type": "cubicBezier"}, "to": "74"}, {"arrows": "to", "from": "68", "label": "And(4_calldata[3] == 0xec,    4_calldata[2] == 47,    4_calldata[1] == 0xf1,    4_calldata[0] == 0x83)", "smooth": {"type": "cubicBezier"}, "to": "75"}, {"arrows": "to", "from": "75", "label": "Not(call_value4 == 0)", "smooth": {"type": "cubicBezier"}, "to": "76"}, {"arrows": "to", "from": "75", "label": "call_value4 == 0", "smooth": {"type": "cubicBezier"}, "to": "77"}, {"arrows": "to", "from": "77", "label": "", "smooth": {"type": "cubicBezier"}, "to": "78"}, {"arrows": "to", "from": "78", "label": "Not(And(4_calldata[35 +          Concat(4_calldata[4],                 4_calldata[5],                 4_calldata[6],                 4_calldata[7],                 4_calldata[8],                 4_calldata[9],                 4_calldata[10],                 4_calldata[11],                 4_calldata[12],                 4_calldata[13],                 4_calldata[14],                 4_calldata[15],                 4_calldata[16],                 4_calldata[17],                 4_calldata[18],                 4_calldata[19],                 4_calldata[20],                 4_calldata[21],                 4_calldata[22],                 4_calldata[23],                 4_calldata[24],                 4_calldata[25],                 4_calldata[26],                 4_calldata[27],                 4_calldata[28],                 4_calldata[29],                 4_calldata[30],                 4_calldata[31],                 4_calldata[32],                 4_calldata[33],                 4_calldata[34],                 4_calldata[35])] ==        0,        4_calldata[34 +          Concat(4_calldata[4],                 4_calldata[5],                 4_calldata[6],                 4_calldata[7],                 4_calldata[8],                 4_calldata[9],                 4_calldata[10],                 4_calldata[11],                 4_calldata[12],                 4_calldata[13],                 4_calldata[14],                 4_calldata[15],                 4_calldata[16],                 4_calldata[17],                 4_calldata[18],                 4_calldata[19],                 4_calldata[20],                 4_calldata[21],                 4_calldata[22],                 4_calldata[23],                 4_calldata[24],                 4_calldata[25],                 4_calldata[26],                 4_calldata[27],                 4_calldata[28],                 4_calldata[29],                 4_calldata[30],                 4_calldata[31],                 4_calldata[32],                 4_calldata[33],                 4_calldata[34],                 4_calldata[35])] ==        0,        4_calldata[33 +          Concat(4_calldata[4],                 4_calldata[5],                 4_calldata[6],                 4_calldata[7],                 4_calldata[8],                 4_calldata[9],                 4_calldata[10],                 4_calldata[11],                 4_calldata[12],                 4_calldata[13],                 4_calldata[14],                 4_calldata[15],                 4_calldata[16],                 4_calldata[17],                 4_calldata[18],                 4_calldata[19],                 4_calldata[20],                 4_calldata[21],                 4_calldata[22],                 4_calldata[23],                 4_calldata[24],                 4_calldata[25],                 4_calldata[26],                 4_calldata[27],                 4_calldata[28],                 4_calldata[29],                 4_calldata[30],                 4_calldata[31],                 4_calldata[32],                 4_calldata[33],                 4_calldata[34],                 4_calldata[35])] ==        0,        4_calldata[32 +          Concat(4_calldata[4],                 4_calldata[5],                 4_calldata[6],                 4_calldata[7],                 4_calldata[8],                 4_calldata[9],                 4_calldata[10],                 4_calldata[11],                 4_calldata[12],                 4_calldata[13],                 4_calldata[14],                 4_calldata[15],                 4_calldata[16],                 4_calldata[17],                 4_calldata[18],                 4_calldata[19],                 4_calldata[20],                 4_calldata[21],                 4_calldata[22],                 4_calldata[23],                 4_calldata[24],                 4_calldata[25],                 4_calldata[26],                 4_calldata[27],                 4_calldata[28],                 4_calldata[29],                 4_calldata[30],                 4_calldata[31],                 4_calldata[32],                 4_calldata[33],                 4_calldata[34],                 4_calldata[35])] ==        0,        4_calldata[31 +          Concat(4_calldata[4],                 4_calldata[5],                 4_calldata[6],                 4_calldata[7],                 4_calldata[8],                 4_calldata[9],                 4_calldata[10],                 4_calldata[11],                 4_calldata[12],                 4_calldata[13],                 4_calldata[14],                 4_calldata[15],                 4_calldata[16],                 4_calldata[17],                 4_calldata[18],                 4_calldata[19],                 4_calldata[20],                 4_calldata[21],                 4_calldata[22],                 4_calldata[23],                 4_calldata[24],                 4_calldata[25],                 4_calldata[26],                 4_calldata[27],                 4_calldata[28],                 4_calldata[29],                 4_calldata[30],                 4_calldata[31],                 4_calldata[32],                 4_calldata[33],                 4_calldata[34],                 4_calldata[35])] ==        0,        4_calldata[30 +          Concat(4_calldata[4],                 4_calldata[5],                 4_calldata[6],                 4_calldata[7],                 4_calldata[8],                 4_calldata[9],                 4_calldata[10],                 4_calldata[11],                 4_calldata[12],                 4_calldata[13],                 4_calldata[14],                 4_calldata[15],                 4_calldata[16],                 4_calldata[17],                 4_calldata[18],                 4_calldata[19],                 4_calldata[20],                 4_calldata[21],                 4_calldata[22],                 4_calldata[23],                 4_calldata[24],                 4_calldata[25],                 4_calldata[26],                 4_calldata[27],                 4_calldata[28],                 4_calldata[29],                 4_calldata[30],                 4_calldata[31],                 4_calldata[32],...", "smooth": {"type": "cubicBezier"}, "to": "79"}, {"arrows": "to", "from": "78", "label": "And(4_calldata[35 +      Concat(4_calldata[4],             4_calldata[5],             4_calldata[6],             4_calldata[7],             4_calldata[8],             4_calldata[9],             4_calldata[10],             4_calldata[11],             4_calldata[12],             4_calldata[13],             4_calldata[14],             4_calldata[15],             4_calldata[16],             4_calldata[17],             4_calldata[18],             4_calldata[19],             4_calldata[20],             4_calldata[21],             4_calldata[22],             4_calldata[23],             4_calldata[24],             4_calldata[25],             4_calldata[26],             4_calldata[27],             4_calldata[28],             4_calldata[29],             4_calldata[30],             4_calldata[31],             4_calldata[32],             4_calldata[33],             4_calldata[34],             4_calldata[35])] ==    0,    4_calldata[34 +      Concat(4_calldata[4],             4_calldata[5],             4_calldata[6],             4_calldata[7],             4_calldata[8],             4_calldata[9],             4_calldata[10],             4_calldata[11],             4_calldata[12],             4_calldata[13],             4_calldata[14],             4_calldata[15],             4_calldata[16],             4_calldata[17],             4_calldata[18],             4_calldata[19],             4_calldata[20],             4_calldata[21],             4_calldata[22],             4_calldata[23],             4_calldata[24],             4_calldata[25],             4_calldata[26],             4_calldata[27],             4_calldata[28],             4_calldata[29],             4_calldata[30],             4_calldata[31],             4_calldata[32],             4_calldata[33],             4_calldata[34],             4_calldata[35])] ==    0,    4_calldata[33 +      Concat(4_calldata[4],             4_calldata[5],             4_calldata[6],             4_calldata[7],             4_calldata[8],             4_calldata[9],             4_calldata[10],             4_calldata[11],             4_calldata[12],             4_calldata[13],             4_calldata[14],             4_calldata[15],             4_calldata[16],             4_calldata[17],             4_calldata[18],             4_calldata[19],             4_calldata[20],             4_calldata[21],             4_calldata[22],             4_calldata[23],             4_calldata[24],             4_calldata[25],             4_calldata[26],             4_calldata[27],             4_calldata[28],             4_calldata[29],             4_calldata[30],             4_calldata[31],             4_calldata[32],             4_calldata[33],             4_calldata[34],             4_calldata[35])] ==    0,    4_calldata[32 +      Concat(4_calldata[4],             4_calldata[5],             4_calldata[6],             4_calldata[7],             4_calldata[8],             4_calldata[9],             4_calldata[10],             4_calldata[11],             4_calldata[12],             4_calldata[13],             4_calldata[14],             4_calldata[15],             4_calldata[16],             4_calldata[17],             4_calldata[18],             4_calldata[19],             4_calldata[20],             4_calldata[21],             4_calldata[22],             4_calldata[23],             4_calldata[24],             4_calldata[25],             4_calldata[26],             4_calldata[27],             4_calldata[28],             4_calldata[29],             4_calldata[30],             4_calldata[31],             4_calldata[32],             4_calldata[33],             4_calldata[34],             4_calldata[35])] ==    0,    4_calldata[31 +      Concat(4_calldata[4],             4_calldata[5],             4_calldata[6],             4_calldata[7],             4_calldata[8],             4_calldata[9],             4_calldata[10],             4_calldata[11],             4_calldata[12],             4_calldata[13],             4_calldata[14],             4_calldata[15],             4_calldata[16],             4_calldata[17],             4_calldata[18],             4_calldata[19],             4_calldata[20],             4_calldata[21],             4_calldata[22],             4_calldata[23],             4_calldata[24],             4_calldata[25],             4_calldata[26],             4_calldata[27],             4_calldata[28],             4_calldata[29],             4_calldata[30],             4_calldata[31],             4_calldata[32],             4_calldata[33],             4_calldata[34],             4_calldata[35])] ==    0,    4_calldata[30 +      Concat(4_calldata[4],             4_calldata[5],             4_calldata[6],             4_calldata[7],             4_calldata[8],             4_calldata[9],             4_calldata[10],             4_calldata[11],             4_calldata[12],             4_calldata[13],             4_calldata[14],             4_calldata[15],             4_calldata[16],             4_calldata[17],             4_calldata[18],             4_calldata[19],             4_calldata[20],             4_calldata[21],             4_calldata[22],             4_calldata[23],             4_calldata[24],             4_calldata[25],             4_calldata[26],             4_calldata[27],             4_calldata[28],             4_calldata[29],             4_calldata[30],             4_calldata[31],             4_calldata[32],...", "smooth": {"type": "cubicBezier"}, "to": "80"}, {"arrows": "to", "from": "80", "label": "And(4_calldata[35 +      Concat(4_calldata[4],             4_calldata[5],             4_calldata[6],             4_calldata[7],             4_calldata[8],             4_calldata[9],             4_calldata[10],             4_calldata[11],             4_calldata[12],             4_calldata[13],             4_calldata[14],             4_calldata[15],             4_calldata[16],             4_calldata[17],             4_calldata[18],             4_calldata[19],             4_calldata[20],             4_calldata[21],             4_calldata[22],             4_calldata[23],             4_calldata[24],             4_calldata[25],             4_calldata[26],             4_calldata[27],             4_calldata[28],             4_calldata[29],             4_calldata[30],             4_calldata[31],             4_calldata[32],             4_calldata[33],             4_calldata[34],             4_calldata[35])] ==    0,    4_calldata[34 +      Concat(4_calldata[4],             4_calldata[5],             4_calldata[6],             4_calldata[7],             4_calldata[8],             4_calldata[9],             4_calldata[10],             4_calldata[11],             4_calldata[12],             4_calldata[13],             4_calldata[14],             4_calldata[15],             4_calldata[16],             4_calldata[17],             4_calldata[18],             4_calldata[19],             4_calldata[20],             4_calldata[21],             4_calldata[22],             4_calldata[23],             4_calldata[24],             4_calldata[25],             4_calldata[26],             4_calldata[27],             4_calldata[28],             4_calldata[29],             4_calldata[30],             4_calldata[31],             4_calldata[32],             4_calldata[33],             4_calldata[34],             4_calldata[35])] ==    0,    4_calldata[33 +      Concat(4_calldata[4],             4_calldata[5],             4_calldata[6],             4_calldata[7],             4_calldata[8],             4_calldata[9],             4_calldata[10],             4_calldata[11],             4_calldata[12],             4_calldata[13],             4_calldata[14],             4_calldata[15],             4_calldata[16],             4_calldata[17],             4_calldata[18],             4_calldata[19],             4_calldata[20],             4_calldata[21],             4_calldata[22],             4_calldata[23],             4_calldata[24],             4_calldata[25],             4_calldata[26],             4_calldata[27],             4_calldata[28],             4_calldata[29],             4_calldata[30],             4_calldata[31],             4_calldata[32],             4_calldata[33],             4_calldata[34],             4_calldata[35])] ==    0,    4_calldata[32 +      Concat(4_calldata[4],             4_calldata[5],             4_calldata[6],             4_calldata[7],             4_calldata[8],             4_calldata[9],             4_calldata[10],             4_calldata[11],             4_calldata[12],             4_calldata[13],             4_calldata[14],             4_calldata[15],             4_calldata[16],             4_calldata[17],             4_calldata[18],             4_calldata[19],             4_calldata[20],             4_calldata[21],             4_calldata[22],             4_calldata[23],             4_calldata[24],             4_calldata[25],             4_calldata[26],             4_calldata[27],             4_calldata[28],             4_calldata[29],             4_calldata[30],             4_calldata[31],             4_calldata[32],             4_calldata[33],             4_calldata[34],             4_calldata[35])] ==    0,    4_calldata[31 +      Concat(4_calldata[4],             4_calldata[5],             4_calldata[6],             4_calldata[7],             4_calldata[8],             4_calldata[9],             4_calldata[10],             4_calldata[11],             4_calldata[12],             4_calldata[13],             4_calldata[14],             4_calldata[15],             4_calldata[16],             4_calldata[17],             4_calldata[18],             4_calldata[19],             4_calldata[20],             4_calldata[21],             4_calldata[22],             4_calldata[23],             4_calldata[24],             4_calldata[25],             4_calldata[26],             4_calldata[27],             4_calldata[28],             4_calldata[29],             4_calldata[30],             4_calldata[31],             4_calldata[32],             4_calldata[33],             4_calldata[34],             4_calldata[35])] ==    0,    4_calldata[30 +      Concat(4_calldata[4],             4_calldata[5],             4_calldata[6],             4_calldata[7],             4_calldata[8],             4_calldata[9],             4_calldata[10],             4_calldata[11],             4_calldata[12],             4_calldata[13],             4_calldata[14],             4_calldata[15],             4_calldata[16],             4_calldata[17],             4_calldata[18],             4_calldata[19],             4_calldata[20],             4_calldata[21],             4_calldata[22],             4_calldata[23],             4_calldata[24],             4_calldata[25],             4_calldata[26],             4_calldata[27],             4_calldata[28],             4_calldata[29],             4_calldata[30],             4_calldata[31],             4_calldata[32],...", "smooth": {"type": "cubicBezier"}, "to": "81"}, {"arrows": "to", "from": "80", "label": "Not(And(4_calldata[35 +          Concat(4_calldata[4],                 4_calldata[5],                 4_calldata[6],                 4_calldata[7],                 4_calldata[8],                 4_calldata[9],                 4_calldata[10],                 4_calldata[11],                 4_calldata[12],                 4_calldata[13],                 4_calldata[14],                 4_calldata[15],                 4_calldata[16],                 4_calldata[17],                 4_calldata[18],                 4_calldata[19],                 4_calldata[20],                 4_calldata[21],                 4_calldata[22],                 4_calldata[23],                 4_calldata[24],                 4_calldata[25],                 4_calldata[26],                 4_calldata[27],                 4_calldata[28],                 4_calldata[29],                 4_calldata[30],                 4_calldata[31],                 4_calldata[32],                 4_calldata[33],                 4_calldata[34],                 4_calldata[35])] ==        0,        4_calldata[34 +          Concat(4_calldata[4],                 4_calldata[5],                 4_calldata[6],                 4_calldata[7],                 4_calldata[8],                 4_calldata[9],                 4_calldata[10],                 4_calldata[11],                 4_calldata[12],                 4_calldata[13],                 4_calldata[14],                 4_calldata[15],                 4_calldata[16],                 4_calldata[17],                 4_calldata[18],                 4_calldata[19],                 4_calldata[20],                 4_calldata[21],                 4_calldata[22],                 4_calldata[23],                 4_calldata[24],                 4_calldata[25],                 4_calldata[26],                 4_calldata[27],                 4_calldata[28],                 4_calldata[29],                 4_calldata[30],                 4_calldata[31],                 4_calldata[32],                 4_calldata[33],                 4_calldata[34],                 4_calldata[35])] ==        0,        4_calldata[33 +          Concat(4_calldata[4],                 4_calldata[5],                 4_calldata[6],                 4_calldata[7],                 4_calldata[8],                 4_calldata[9],                 4_calldata[10],                 4_calldata[11],                 4_calldata[12],                 4_calldata[13],                 4_calldata[14],                 4_calldata[15],                 4_calldata[16],                 4_calldata[17],                 4_calldata[18],                 4_calldata[19],                 4_calldata[20],                 4_calldata[21],                 4_calldata[22],                 4_calldata[23],                 4_calldata[24],                 4_calldata[25],                 4_calldata[26],                 4_calldata[27],                 4_calldata[28],                 4_calldata[29],                 4_calldata[30],                 4_calldata[31],                 4_calldata[32],                 4_calldata[33],                 4_calldata[34],                 4_calldata[35])] ==        0,        4_calldata[32 +          Concat(4_calldata[4],                 4_calldata[5],                 4_calldata[6],                 4_calldata[7],                 4_calldata[8],                 4_calldata[9],                 4_calldata[10],                 4_calldata[11],                 4_calldata[12],                 4_calldata[13],                 4_calldata[14],                 4_calldata[15],                 4_calldata[16],                 4_calldata[17],                 4_calldata[18],                 4_calldata[19],                 4_calldata[20],                 4_calldata[21],                 4_calldata[22],                 4_calldata[23],                 4_calldata[24],                 4_calldata[25],                 4_calldata[26],                 4_calldata[27],                 4_calldata[28],                 4_calldata[29],                 4_calldata[30],                 4_calldata[31],                 4_calldata[32],                 4_calldata[33],                 4_calldata[34],                 4_calldata[35])] ==        0,        4_calldata[31 +          Concat(4_calldata[4],                 4_calldata[5],                 4_calldata[6],                 4_calldata[7],                 4_calldata[8],                 4_calldata[9],                 4_calldata[10],                 4_calldata[11],                 4_calldata[12],                 4_calldata[13],                 4_calldata[14],                 4_calldata[15],                 4_calldata[16],                 4_calldata[17],                 4_calldata[18],                 4_calldata[19],                 4_calldata[20],                 4_calldata[21],                 4_calldata[22],                 4_calldata[23],                 4_calldata[24],                 4_calldata[25],                 4_calldata[26],                 4_calldata[27],                 4_calldata[28],                 4_calldata[29],                 4_calldata[30],                 4_calldata[31],                 4_calldata[32],                 4_calldata[33],                 4_calldata[34],                 4_calldata[35])] ==        0,        4_calldata[30 +          Concat(4_calldata[4],                 4_calldata[5],                 4_calldata[6],                 4_calldata[7],                 4_calldata[8],                 4_calldata[9],                 4_calldata[10],                 4_calldata[11],                 4_calldata[12],                 4_calldata[13],                 4_calldata[14],                 4_calldata[15],                 4_calldata[16],                 4_calldata[17],                 4_calldata[18],                 4_calldata[19],                 4_calldata[20],                 4_calldata[21],                 4_calldata[22],                 4_calldata[23],                 4_calldata[24],                 4_calldata[25],                 4_calldata[26],                 4_calldata[27],                 4_calldata[28],                 4_calldata[29],                 4_calldata[30],                 4_calldata[31],                 4_calldata[32],...", "smooth": {"type": "cubicBezier"}, "to": "82"}, {"arrows": "to", "from": "82", "label": "True", "smooth": {"type": "cubicBezier"}, "to": "83"}, {"arrows": "to", "from": "82", "label": "False", "smooth": {"type": "cubicBezier"}, "to": "84"}, {"arrows": "to", "from": "84", "label": "", "smooth": {"type": "cubicBezier"}, "to": "85"}, {"arrows": "to", "from": "83", "label": "", "smooth": {"type": "cubicBezier"}, "to": "86"}, {"arrows": "to", "from": "79", "label": "Not(And(Extract(7,                5,                4_calldata[35 +                  Concat(4_calldata[4],                         4_calldata[5],                         4_calldata[6],                         4_calldata[7],                         4_calldata[8],                         4_calldata[9],                         4_calldata[10],                         4_calldata[11],                         4_calldata[12],                         4_calldata[13],                         4_calldata[14],                         4_calldata[15],                         4_calldata[16],                         4_calldata[17],                         4_calldata[18],                         4_calldata[19],                         4_calldata[20],                         4_calldata[21],                         4_calldata[22],                         4_calldata[23],                         4_calldata[24],                         4_calldata[25],                         4_calldata[26],                         4_calldata[27],                         4_calldata[28],                         4_calldata[29],                         4_calldata[30],                         4_calldata[31],                         4_calldata[32],                         4_calldata[33],                         4_calldata[34],                         4_calldata[35])]) ==        0,        4_calldata[34 +          Concat(4_calldata[4],                 4_calldata[5],                 4_calldata[6],                 4_calldata[7],                 4_calldata[8],                 4_calldata[9],                 4_calldata[10],                 4_calldata[11],                 4_calldata[12],                 4_calldata[13],                 4_calldata[14],                 4_calldata[15],                 4_calldata[16],                 4_calldata[17],                 4_calldata[18],                 4_calldata[19],                 4_calldata[20],                 4_calldata[21],                 4_calldata[22],                 4_calldata[23],                 4_calldata[24],                 4_calldata[25],                 4_calldata[26],                 4_calldata[27],                 4_calldata[28],                 4_calldata[29],                 4_calldata[30],                 4_calldata[31],                 4_calldata[32],                 4_calldata[33],                 4_calldata[34],                 4_calldata[35])] ==        0,        4_calldata[33 +          Concat(4_calldata[4],                 4_calldata[5],                 4_calldata[6],                 4_calldata[7],                 4_calldata[8],                 4_calldata[9],                 4_calldata[10],                 4_calldata[11],                 4_calldata[12],                 4_calldata[13],                 4_calldata[14],                 4_calldata[15],                 4_calldata[16],                 4_calldata[17],                 4_calldata[18],                 4_calldata[19],                 4_calldata[20],                 4_calldata[21],                 4_calldata[22],                 4_calldata[23],                 4_calldata[24],                 4_calldata[25],                 4_calldata[26],                 4_calldata[27],                 4_calldata[28],                 4_calldata[29],                 4_calldata[30],                 4_calldata[31],                 4_calldata[32],                 4_calldata[33],                 4_calldata[34],                 4_calldata[35])] ==        0,        4_calldata[32 +          Concat(4_calldata[4],                 4_calldata[5],                 4_calldata[6],                 4_calldata[7],                 4_calldata[8],                 4_calldata[9],                 4_calldata[10],                 4_calldata[11],                 4_calldata[12],                 4_calldata[13],                 4_calldata[14],                 4_calldata[15],                 4_calldata[16],                 4_calldata[17],                 4_calldata[18],                 4_calldata[19],                 4_calldata[20],                 4_calldata[21],                 4_calldata[22],                 4_calldata[23],                 4_calldata[24],                 4_calldata[25],                 4_calldata[26],                 4_calldata[27],                 4_calldata[28],                 4_calldata[29],                 4_calldata[30],                 4_calldata[31],                 4_calldata[32],                 4_calldata[33],                 4_calldata[34],                 4_calldata[35])] ==        0,        4_calldata[31 +          Concat(4_calldata[4],                 4_calldata[5],                 4_calldata[6],                 4_calldata[7],                 4_calldata[8],                 4_calldata[9],                 4_calldata[10],                 4_calldata[11],                 4_calldata[12],                 4_calldata[13],                 4_calldata[14],                 4_calldata[15],                 4_calldata[16],                 4_calldata[17],                 4_calldata[18],                 4_calldata[19],                 4_calldata[20],                 4_calldata[21],                 4_calldata[22],                 4_calldata[23],                 4_calldata[24],                 4_calldata[25],                 4_calldata[26],                 4_calldata[27],                 4_calldata[28],                 4_calldata[29],                 4_calldata[30],                 4_calldata[31],                 4_calldata[32],                 4_calldata[33],                 4_calldata[34],                 4_calldata[35])] ==        0,        4_calldata[30 +          Concat(4_calldata[4],                 4_calldata[5],                 4_calldata[6],                 4_calldata[7],                 4_calldata[8],                 4_calldata[9],                 4_calldata[10],                 4_calldata[11],                 4_calldata[12],                 4_calldata[13],                 4_calldata[14],                 4_calldata[15],                 4_calldata[16],                 4_calldata[17],                 4_calldata[18],                 4_calldata[19],                 4_calldata[20],                 4_calldata[21],                 4_calldata[22],                 4_calldata[23],                 4_calldata[24],                 4_calldata[25],                 4_calldata[26],                 4_calldata[27],                 4_calldata[28],                 4_calldata[29],                 4_calldata[30],...", "smooth": {"type": "cubicBezier"}, "to": "87"}, {"arrows": "to", "from": "79", "label": "And(Extract(7,            5,            4_calldata[35 +              Concat(4_calldata[4],                     4_calldata[5],                     4_calldata[6],                     4_calldata[7],                     4_calldata[8],                     4_calldata[9],                     4_calldata[10],                     4_calldata[11],                     4_calldata[12],                     4_calldata[13],                     4_calldata[14],                     4_calldata[15],                     4_calldata[16],                     4_calldata[17],                     4_calldata[18],                     4_calldata[19],                     4_calldata[20],                     4_calldata[21],                     4_calldata[22],                     4_calldata[23],                     4_calldata[24],                     4_calldata[25],                     4_calldata[26],                     4_calldata[27],                     4_calldata[28],                     4_calldata[29],                     4_calldata[30],                     4_calldata[31],                     4_calldata[32],                     4_calldata[33],                     4_calldata[34],                     4_calldata[35])]) ==    0,    4_calldata[34 +      Concat(4_calldata[4],             4_calldata[5],             4_calldata[6],             4_calldata[7],             4_calldata[8],             4_calldata[9],             4_calldata[10],             4_calldata[11],             4_calldata[12],             4_calldata[13],             4_calldata[14],             4_calldata[15],             4_calldata[16],             4_calldata[17],             4_calldata[18],             4_calldata[19],             4_calldata[20],             4_calldata[21],             4_calldata[22],             4_calldata[23],             4_calldata[24],             4_calldata[25],             4_calldata[26],             4_calldata[27],             4_calldata[28],             4_calldata[29],             4_calldata[30],             4_calldata[31],             4_calldata[32],             4_calldata[33],             4_calldata[34],             4_calldata[35])] ==    0,    4_calldata[33 +      Concat(4_calldata[4],             4_calldata[5],             4_calldata[6],             4_calldata[7],             4_calldata[8],             4_calldata[9],             4_calldata[10],             4_calldata[11],             4_calldata[12],             4_calldata[13],             4_calldata[14],             4_calldata[15],             4_calldata[16],             4_calldata[17],             4_calldata[18],             4_calldata[19],             4_calldata[20],             4_calldata[21],             4_calldata[22],             4_calldata[23],             4_calldata[24],             4_calldata[25],             4_calldata[26],             4_calldata[27],             4_calldata[28],             4_calldata[29],             4_calldata[30],             4_calldata[31],             4_calldata[32],             4_calldata[33],             4_calldata[34],             4_calldata[35])] ==    0,    4_calldata[32 +      Concat(4_calldata[4],             4_calldata[5],             4_calldata[6],             4_calldata[7],             4_calldata[8],             4_calldata[9],             4_calldata[10],             4_calldata[11],             4_calldata[12],             4_calldata[13],             4_calldata[14],             4_calldata[15],             4_calldata[16],             4_calldata[17],             4_calldata[18],             4_calldata[19],             4_calldata[20],             4_calldata[21],             4_calldata[22],             4_calldata[23],             4_calldata[24],             4_calldata[25],             4_calldata[26],             4_calldata[27],             4_calldata[28],             4_calldata[29],             4_calldata[30],             4_calldata[31],             4_calldata[32],             4_calldata[33],             4_calldata[34],             4_calldata[35])] ==    0,    4_calldata[31 +      Concat(4_calldata[4],             4_calldata[5],             4_calldata[6],             4_calldata[7],             4_calldata[8],             4_calldata[9],             4_calldata[10],             4_calldata[11],             4_calldata[12],             4_calldata[13],             4_calldata[14],             4_calldata[15],             4_calldata[16],             4_calldata[17],             4_calldata[18],             4_calldata[19],             4_calldata[20],             4_calldata[21],             4_calldata[22],             4_calldata[23],             4_calldata[24],             4_calldata[25],             4_calldata[26],             4_calldata[27],             4_calldata[28],             4_calldata[29],             4_calldata[30],             4_calldata[31],             4_calldata[32],             4_calldata[33],             4_calldata[34],             4_calldata[35])] ==    0,    4_calldata[30 +      Concat(4_calldata[4],             4_calldata[5],             4_calldata[6],             4_calldata[7],             4_calldata[8],             4_calldata[9],             4_calldata[10],             4_calldata[11],             4_calldata[12],             4_calldata[13],             4_calldata[14],             4_calldata[15],             4_calldata[16],             4_calldata[17],             4_calldata[18],             4_calldata[19],             4_calldata[20],             4_calldata[21],             4_calldata[22],             4_calldata[23],             4_calldata[24],             4_calldata[25],             4_calldata[26],             4_calldata[27],             4_calldata[28],             4_calldata[29],             4_calldata[30],...", "smooth": {"type": "cubicBezier"}, "to": "88"}, {"arrows": "to", "from": "88", "label": "True", "smooth": {"type": "cubicBezier"}, "to": "89"}, {"arrows": "to", "from": "88", "label": "False", "smooth": {"type": "cubicBezier"}, "to": "90"}, {"arrows": "to", "from": "90", "label": "", "smooth": {"type": "cubicBezier"}, "to": "91"}, {"arrows": "to", "from": "89", "label": "", "smooth": {"type": "cubicBezier"}, "to": "92"}];
+    </script>
+</head>
+<body>
+<p>Mythril / Ethereum LASER Symbolic VM</p>
+<div id="mynetwork"></div>
+<script type="text/javascript">
+    var container = document.getElementById('mynetwork');
+
+    var nodesSet = new vis.DataSet(nodes);
+    var edgesSet = new vis.DataSet(edges);
+    var data = {'nodes': nodesSet, 'edges': edgesSet}
+
+    var gph = new vis.Network(container, data, options);
+    gph.on("click", function (params) {
+        // parse node id
+        var nodeID = params['nodes']['0'];
+        if (nodeID) {
+            var clickedNode = nodesSet.get(nodeID);
+
+            if(clickedNode.isExpanded) {
+                clickedNode.label = clickedNode.truncLabel;
+            }
+            else {
+                clickedNode.label = clickedNode.fullLabel;
+            }
+
+            clickedNode.isExpanded = !clickedNode.isExpanded;
+
+            nodesSet.update(clickedNode);
+        }
+    });
+</script>
+</body>
+</html>
diff --git a/tests/testdata/outputs_expected/ether_send.sol.o.easm b/tests/testdata/outputs_expected/ether_send.sol.o.easm
new file mode 100644
index 0000000000000000000000000000000000000000..b0a5e256904eb06ddef9164663bfdbcf13b24237
--- /dev/null
+++ b/tests/testdata/outputs_expected/ether_send.sol.o.easm
@@ -0,0 +1,420 @@
+0 PUSH1 0x80
+2 PUSH1 0x40
+4 MSTORE
+5 PUSH1 0x04
+7 CALLDATASIZE
+8 LT
+9 PUSH2 0x0078
+12 JUMPI
+13 PUSH1 0x00
+15 CALLDATALOAD
+16 PUSH29 0x0100000000000000000000000000000000000000000000000000000000
+46 SWAP1
+47 DIV
+48 PUSH4 0xffffffff
+53 AND
+54 DUP1
+55 PUSH4 0x12065fe0
+60 EQ
+61 PUSH2 0x007d
+64 JUMPI
+65 DUP1
+66 PUSH4 0x27e235e3
+71 EQ
+72 PUSH2 0x00a8
+75 JUMPI
+76 DUP1
+77 PUSH4 0x56885cd8
+82 EQ
+83 PUSH2 0x00ff
+86 JUMPI
+87 DUP1
+88 PUSH4 0x6c343ffe
+93 EQ
+94 PUSH2 0x0116
+97 JUMPI
+98 DUP1
+99 PUSH4 0x8da5cb5b
+104 EQ
+105 PUSH2 0x012d
+108 JUMPI
+109 DUP1
+110 PUSH4 0xe8b5e51f
+115 EQ
+116 PUSH2 0x0184
+119 JUMPI
+120 JUMPDEST
+121 PUSH1 0x00
+123 DUP1
+124 REVERT
+125 JUMPDEST
+126 CALLVALUE
+127 DUP1
+128 ISZERO
+129 PUSH2 0x0089
+132 JUMPI
+133 PUSH1 0x00
+135 DUP1
+136 REVERT
+137 JUMPDEST
+138 POP
+139 PUSH2 0x0092
+142 PUSH2 0x018e
+145 JUMP
+146 JUMPDEST
+147 PUSH1 0x40
+149 MLOAD
+150 DUP1
+151 DUP3
+152 DUP2
+153 MSTORE
+154 PUSH1 0x20
+156 ADD
+157 SWAP2
+158 POP
+159 POP
+160 PUSH1 0x40
+162 MLOAD
+163 DUP1
+164 SWAP2
+165 SUB
+166 SWAP1
+167 RETURN
+168 JUMPDEST
+169 CALLVALUE
+170 DUP1
+171 ISZERO
+172 PUSH2 0x00b4
+175 JUMPI
+176 PUSH1 0x00
+178 DUP1
+179 REVERT
+180 JUMPDEST
+181 POP
+182 PUSH2 0x00e9
+185 PUSH1 0x04
+187 DUP1
+188 CALLDATASIZE
+189 SUB
+190 DUP2
+191 ADD
+192 SWAP1
+193 DUP1
+194 DUP1
+195 CALLDATALOAD
+196 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+217 AND
+218 SWAP1
+219 PUSH1 0x20
+221 ADD
+222 SWAP1
+223 SWAP3
+224 SWAP2
+225 SWAP1
+226 POP
+227 POP
+228 POP
+229 PUSH2 0x01d4
+232 JUMP
+233 JUMPDEST
+234 PUSH1 0x40
+236 MLOAD
+237 DUP1
+238 DUP3
+239 DUP2
+240 MSTORE
+241 PUSH1 0x20
+243 ADD
+244 SWAP2
+245 POP
+246 POP
+247 PUSH1 0x40
+249 MLOAD
+250 DUP1
+251 SWAP2
+252 SUB
+253 SWAP1
+254 RETURN
+255 JUMPDEST
+256 CALLVALUE
+257 DUP1
+258 ISZERO
+259 PUSH2 0x010b
+262 JUMPI
+263 PUSH1 0x00
+265 DUP1
+266 REVERT
+267 JUMPDEST
+268 POP
+269 PUSH2 0x0114
+272 PUSH2 0x01ec
+275 JUMP
+276 JUMPDEST
+277 STOP
+278 JUMPDEST
+279 CALLVALUE
+280 DUP1
+281 ISZERO
+282 PUSH2 0x0122
+285 JUMPI
+286 PUSH1 0x00
+288 DUP1
+289 REVERT
+290 JUMPDEST
+291 POP
+292 PUSH2 0x012b
+295 PUSH2 0x022f
+298 JUMP
+299 JUMPDEST
+300 STOP
+301 JUMPDEST
+302 CALLVALUE
+303 DUP1
+304 ISZERO
+305 PUSH2 0x0139
+308 JUMPI
+309 PUSH1 0x00
+311 DUP1
+312 REVERT
+313 JUMPDEST
+314 POP
+315 PUSH2 0x0142
+318 PUSH2 0x02eb
+321 JUMP
+322 JUMPDEST
+323 PUSH1 0x40
+325 MLOAD
+326 DUP1
+327 DUP3
+328 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+349 AND
+350 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+371 AND
+372 DUP2
+373 MSTORE
+374 PUSH1 0x20
+376 ADD
+377 SWAP2
+378 POP
+379 POP
+380 PUSH1 0x40
+382 MLOAD
+383 DUP1
+384 SWAP2
+385 SUB
+386 SWAP1
+387 RETURN
+388 JUMPDEST
+389 PUSH2 0x018c
+392 PUSH2 0x0311
+395 JUMP
+396 JUMPDEST
+397 STOP
+398 JUMPDEST
+399 PUSH1 0x00
+401 DUP1
+402 PUSH1 0x00
+404 CALLER
+405 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+426 AND
+427 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+448 AND
+449 DUP2
+450 MSTORE
+451 PUSH1 0x20
+453 ADD
+454 SWAP1
+455 DUP2
+456 MSTORE
+457 PUSH1 0x20
+459 ADD
+460 PUSH1 0x00
+462 SHA3
+463 SLOAD
+464 SWAP1
+465 POP
+466 SWAP1
+467 JUMP
+468 JUMPDEST
+469 PUSH1 0x00
+471 PUSH1 0x20
+473 MSTORE
+474 DUP1
+475 PUSH1 0x00
+477 MSTORE
+478 PUSH1 0x40
+480 PUSH1 0x00
+482 SHA3
+483 PUSH1 0x00
+485 SWAP2
+486 POP
+487 SWAP1
+488 POP
+489 SLOAD
+490 DUP2
+491 JUMP
+492 JUMPDEST
+493 CALLER
+494 PUSH1 0x01
+496 PUSH1 0x00
+498 PUSH2 0x0100
+501 EXP
+502 DUP2
+503 SLOAD
+504 DUP2
+505 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+526 MUL
+527 NOT
+528 AND
+529 SWAP1
+530 DUP4
+531 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+552 AND
+553 MUL
+554 OR
+555 SWAP1
+556 SSTORE
+557 POP
+558 JUMP
+559 JUMPDEST
+560 PUSH1 0x01
+562 PUSH1 0x00
+564 SWAP1
+565 SLOAD
+566 SWAP1
+567 PUSH2 0x0100
+570 EXP
+571 SWAP1
+572 DIV
+573 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+594 AND
+595 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+616 AND
+617 CALLER
+618 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+639 AND
+640 EQ
+641 ISZERO
+642 ISZERO
+643 PUSH2 0x028b
+646 JUMPI
+647 PUSH1 0x00
+649 DUP1
+650 REVERT
+651 JUMPDEST
+652 CALLER
+653 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+674 AND
+675 PUSH2 0x08fc
+678 ADDRESS
+679 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+700 AND
+701 BALANCE
+702 SWAP1
+703 DUP2
+704 ISZERO
+705 MUL
+706 SWAP1
+707 PUSH1 0x40
+709 MLOAD
+710 PUSH1 0x00
+712 PUSH1 0x40
+714 MLOAD
+715 DUP1
+716 DUP4
+717 SUB
+718 DUP2
+719 DUP6
+720 DUP9
+721 DUP9
+722 CALL
+723 SWAP4
+724 POP
+725 POP
+726 POP
+727 POP
+728 ISZERO
+729 DUP1
+730 ISZERO
+731 PUSH2 0x02e8
+734 JUMPI
+735 RETURNDATASIZE
+736 PUSH1 0x00
+738 DUP1
+739 RETURNDATACOPY
+740 RETURNDATASIZE
+741 PUSH1 0x00
+743 REVERT
+744 JUMPDEST
+745 POP
+746 JUMP
+747 JUMPDEST
+748 PUSH1 0x01
+750 PUSH1 0x00
+752 SWAP1
+753 SLOAD
+754 SWAP1
+755 PUSH2 0x0100
+758 EXP
+759 SWAP1
+760 DIV
+761 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+782 AND
+783 DUP2
+784 JUMP
+785 JUMPDEST
+786 PUSH1 0x02
+788 SLOAD
+789 CALLVALUE
+790 GT
+791 DUP1
+792 ISZERO
+793 PUSH2 0x0323
+796 JUMPI
+797 POP
+798 PUSH1 0x03
+800 SLOAD
+801 CALLVALUE
+802 LT
+803 JUMPDEST
+804 ISZERO
+805 ISZERO
+806 PUSH2 0x032e
+809 JUMPI
+810 PUSH1 0x00
+812 DUP1
+813 REVERT
+814 JUMPDEST
+815 CALLVALUE
+816 PUSH1 0x00
+818 DUP1
+819 CALLER
+820 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+841 AND
+842 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+863 AND
+864 DUP2
+865 MSTORE
+866 PUSH1 0x20
+868 ADD
+869 SWAP1
+870 DUP2
+871 MSTORE
+872 PUSH1 0x20
+874 ADD
+875 PUSH1 0x00
+877 SHA3
+878 PUSH1 0x00
+880 DUP3
+881 DUP3
+882 SLOAD
+883 ADD
+884 SWAP3
+885 POP
+886 POP
+887 DUP2
+888 SWAP1
+889 SSTORE
+890 POP
+891 JUMP
+892 STOP
diff --git a/tests/testdata/outputs_expected/ether_send.sol.o.graph.html b/tests/testdata/outputs_expected/ether_send.sol.o.graph.html
new file mode 100644
index 0000000000000000000000000000000000000000..b7ea6248a49fb6f95f306d6f60f1894a898c4e20
--- /dev/null
+++ b/tests/testdata/outputs_expected/ether_send.sol.o.graph.html
@@ -0,0 +1,62 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>Call Graph</title>
+    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.css" integrity="sha256-iq5ygGJ7021Pi7H5S+QAUXCPUfaBzfqeplbg/KlEssg=" crossorigin="anonymous" />
+    <script src="https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.js" integrity="sha256-JuQeAGbk9rG/EoRMixuy5X8syzICcvB0dj3KindZkY0=" crossorigin="anonymous"></script>
+
+    
+    <style type="text/css">
+        #mynetwork {
+          height: 100%;
+            background-color: #232625;
+        }
+        body {
+            background-color: #232625;
+            color: #ffffff;
+            font-size: 10px;
+        }
+        html, body {
+          height: 95%;
+        }
+    </style>
+    
+
+    <script>
+        var options = {"autoResize": true, "edges": {"font": {"align": "horizontal", "background": "none", "color": "#FFFFFF", "face": "arial", "multi": false, "strokeColor": "#ffffff", "strokeWidth": 0, "vadjust": 0}}, "height": "100%", "layout": {"hierarchical": {"blockShifting": true, "direction": "LR", "edgeMinimization": true, "enabled": true, "levelSeparation": 450, "nodeSpacing": 200, "parentCentralization": false, "sortMethod": "directed", "treeSpacing": 100}, "improvedLayout": true}, "manipulation": false, "nodes": {"borderWidth": 1, "borderWidthSelected": 2, "chosen": true, "color": "#000000", "font": {"align": "left", "color": "#FFFFFF"}, "shape": "box"}, "physics": {"enabled": false}, "width": "100%"};
+        var nodes = [{"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "0 PUSH1 0x80\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n9 PUSH2 0x0078\n12 JUMPI", "id": "77", "isExpanded": false, "label": "0 PUSH1 0x80\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n(click to expand +)", "size": 150, "truncLabel": "0 PUSH1 0x80\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x01000000(...)\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n53 AND\n54 DUP1\n55 PUSH4 0x12065fe0\n60 EQ\n61 PUSH2 0x007d\n64 JUMPI", "id": "78", "isExpanded": false, "label": "13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x01000000(...)\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n(click to expand +)", "size": 150, "truncLabel": "13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x01000000(...)\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "120 JUMPDEST\n121 PUSH1 0x00\n123 DUP1\n124 REVERT", "id": "79", "isExpanded": false, "label": "120 JUMPDEST\n121 PUSH1 0x00\n123 DUP1\n124 REVERT", "size": 150, "truncLabel": "120 JUMPDEST\n121 PUSH1 0x00\n123 DUP1\n124 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "65 DUP1\n66 PUSH4 0x27e235e3\n71 EQ\n72 PUSH2 0x00a8\n75 JUMPI", "id": "80", "isExpanded": false, "label": "65 DUP1\n66 PUSH4 0x27e235e3\n71 EQ\n72 PUSH2 0x00a8\n75 JUMPI", "size": 150, "truncLabel": "65 DUP1\n66 PUSH4 0x27e235e3\n71 EQ\n72 PUSH2 0x00a8\n75 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "125 JUMPDEST\n126 CALLVALUE\n127 DUP1\n128 ISZERO\n129 PUSH2 0x0089\n132 JUMPI", "id": "81", "isExpanded": false, "label": "125 JUMPDEST\n126 CALLVALUE\n127 DUP1\n128 ISZERO\n129 PUSH2 0x0089\n132 JUMPI", "size": 150, "truncLabel": "125 JUMPDEST\n126 CALLVALUE\n127 DUP1\n128 ISZERO\n129 PUSH2 0x0089\n132 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "133 PUSH1 0x00\n135 DUP1\n136 REVERT", "id": "82", "isExpanded": false, "label": "133 PUSH1 0x00\n135 DUP1\n136 REVERT", "size": 150, "truncLabel": "133 PUSH1 0x00\n135 DUP1\n136 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "137 JUMPDEST\n138 POP\n139 PUSH2 0x0092\n142 PUSH2 0x018e\n145 JUMP", "id": "83", "isExpanded": false, "label": "137 JUMPDEST\n138 POP\n139 PUSH2 0x0092\n142 PUSH2 0x018e\n145 JUMP", "size": 150, "truncLabel": "137 JUMPDEST\n138 POP\n139 PUSH2 0x0092\n142 PUSH2 0x018e\n145 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "398 JUMPDEST\n399 PUSH1 0x00\n401 DUP1\n402 PUSH1 0x00\n404 CALLER\n405 PUSH20 0xffffffff(...)\n426 AND\n427 PUSH20 0xffffffff(...)\n448 AND\n449 DUP2\n450 MSTORE\n451 PUSH1 0x20\n453 ADD\n454 SWAP1\n455 DUP2\n456 MSTORE\n457 PUSH1 0x20\n459 ADD\n460 PUSH1 0x00\n462 SHA3\n463 SLOAD\n464 SWAP1\n465 POP\n466 SWAP1\n467 JUMP", "id": "84", "isExpanded": false, "label": "398 JUMPDEST\n399 PUSH1 0x00\n401 DUP1\n402 PUSH1 0x00\n404 CALLER\n405 PUSH20 0xffffffff(...)\n(click to expand +)", "size": 150, "truncLabel": "398 JUMPDEST\n399 PUSH1 0x00\n401 DUP1\n402 PUSH1 0x00\n404 CALLER\n405 PUSH20 0xffffffff(...)\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "146 JUMPDEST\n147 PUSH1 0x40\n149 MLOAD\n150 DUP1\n151 DUP3\n152 DUP2\n153 MSTORE\n154 PUSH1 0x20\n156 ADD\n157 SWAP2\n158 POP\n159 POP\n160 PUSH1 0x40\n162 MLOAD\n163 DUP1\n164 SWAP2\n165 SUB\n166 SWAP1\n167 RETURN", "id": "85", "isExpanded": false, "label": "146 JUMPDEST\n147 PUSH1 0x40\n149 MLOAD\n150 DUP1\n151 DUP3\n152 DUP2\n(click to expand +)", "size": 150, "truncLabel": "146 JUMPDEST\n147 PUSH1 0x40\n149 MLOAD\n150 DUP1\n151 DUP3\n152 DUP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "76 DUP1\n77 PUSH4 0x56885cd8\n82 EQ\n83 PUSH2 0x00ff\n86 JUMPI", "id": "86", "isExpanded": false, "label": "76 DUP1\n77 PUSH4 0x56885cd8\n82 EQ\n83 PUSH2 0x00ff\n86 JUMPI", "size": 150, "truncLabel": "76 DUP1\n77 PUSH4 0x56885cd8\n82 EQ\n83 PUSH2 0x00ff\n86 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "168 JUMPDEST\n169 CALLVALUE\n170 DUP1\n171 ISZERO\n172 PUSH2 0x00b4\n175 JUMPI", "id": "87", "isExpanded": false, "label": "168 JUMPDEST\n169 CALLVALUE\n170 DUP1\n171 ISZERO\n172 PUSH2 0x00b4\n175 JUMPI", "size": 150, "truncLabel": "168 JUMPDEST\n169 CALLVALUE\n170 DUP1\n171 ISZERO\n172 PUSH2 0x00b4\n175 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "176 PUSH1 0x00\n178 DUP1\n179 REVERT", "id": "88", "isExpanded": false, "label": "176 PUSH1 0x00\n178 DUP1\n179 REVERT", "size": 150, "truncLabel": "176 PUSH1 0x00\n178 DUP1\n179 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "180 JUMPDEST\n181 POP\n182 PUSH2 0x00e9\n185 PUSH1 0x04\n187 DUP1\n188 CALLDATASIZE\n189 SUB\n190 DUP2\n191 ADD\n192 SWAP1\n193 DUP1\n194 DUP1\n195 CALLDATALOAD\n196 PUSH20 0xffffffff(...)\n217 AND\n218 SWAP1\n219 PUSH1 0x20\n221 ADD\n222 SWAP1\n223 SWAP3\n224 SWAP2\n225 SWAP1\n226 POP\n227 POP\n228 POP\n229 PUSH2 0x01d4\n232 JUMP", "id": "89", "isExpanded": false, "label": "180 JUMPDEST\n181 POP\n182 PUSH2 0x00e9\n185 PUSH1 0x04\n187 DUP1\n188 CALLDATASIZE\n(click to expand +)", "size": 150, "truncLabel": "180 JUMPDEST\n181 POP\n182 PUSH2 0x00e9\n185 PUSH1 0x04\n187 DUP1\n188 CALLDATASIZE\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "468 JUMPDEST\n469 PUSH1 0x00\n471 PUSH1 0x20\n473 MSTORE\n474 DUP1\n475 PUSH1 0x00\n477 MSTORE\n478 PUSH1 0x40\n480 PUSH1 0x00\n482 SHA3\n483 PUSH1 0x00\n485 SWAP2\n486 POP\n487 SWAP1\n488 POP\n489 SLOAD\n490 DUP2\n491 JUMP", "id": "90", "isExpanded": false, "label": "468 JUMPDEST\n469 PUSH1 0x00\n471 PUSH1 0x20\n473 MSTORE\n474 DUP1\n475 PUSH1 0x00\n(click to expand +)", "size": 150, "truncLabel": "468 JUMPDEST\n469 PUSH1 0x00\n471 PUSH1 0x20\n473 MSTORE\n474 DUP1\n475 PUSH1 0x00\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "233 JUMPDEST\n234 PUSH1 0x40\n236 MLOAD\n237 DUP1\n238 DUP3\n239 DUP2\n240 MSTORE\n241 PUSH1 0x20\n243 ADD\n244 SWAP2\n245 POP\n246 POP\n247 PUSH1 0x40\n249 MLOAD\n250 DUP1\n251 SWAP2\n252 SUB\n253 SWAP1\n254 RETURN", "id": "91", "isExpanded": false, "label": "233 JUMPDEST\n234 PUSH1 0x40\n236 MLOAD\n237 DUP1\n238 DUP3\n239 DUP2\n(click to expand +)", "size": 150, "truncLabel": "233 JUMPDEST\n234 PUSH1 0x40\n236 MLOAD\n237 DUP1\n238 DUP3\n239 DUP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "87 DUP1\n88 PUSH4 0x6c343ffe\n93 EQ\n94 PUSH2 0x0116\n97 JUMPI", "id": "92", "isExpanded": false, "label": "87 DUP1\n88 PUSH4 0x6c343ffe\n93 EQ\n94 PUSH2 0x0116\n97 JUMPI", "size": 150, "truncLabel": "87 DUP1\n88 PUSH4 0x6c343ffe\n93 EQ\n94 PUSH2 0x0116\n97 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "255 JUMPDEST\n256 CALLVALUE\n257 DUP1\n258 ISZERO\n259 PUSH2 0x010b\n262 JUMPI", "id": "93", "isExpanded": false, "label": "255 JUMPDEST\n256 CALLVALUE\n257 DUP1\n258 ISZERO\n259 PUSH2 0x010b\n262 JUMPI", "size": 150, "truncLabel": "255 JUMPDEST\n256 CALLVALUE\n257 DUP1\n258 ISZERO\n259 PUSH2 0x010b\n262 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "263 PUSH1 0x00\n265 DUP1\n266 REVERT", "id": "94", "isExpanded": false, "label": "263 PUSH1 0x00\n265 DUP1\n266 REVERT", "size": 150, "truncLabel": "263 PUSH1 0x00\n265 DUP1\n266 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "267 JUMPDEST\n268 POP\n269 PUSH2 0x0114\n272 PUSH2 0x01ec\n275 JUMP", "id": "95", "isExpanded": false, "label": "267 JUMPDEST\n268 POP\n269 PUSH2 0x0114\n272 PUSH2 0x01ec\n275 JUMP", "size": 150, "truncLabel": "267 JUMPDEST\n268 POP\n269 PUSH2 0x0114\n272 PUSH2 0x01ec\n275 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "492 JUMPDEST\n493 CALLER\n494 PUSH1 0x01\n496 PUSH1 0x00\n498 PUSH2 0x0100\n501 EXP\n502 DUP2\n503 SLOAD\n504 DUP2\n505 PUSH20 0xffffffff(...)\n526 MUL\n527 NOT\n528 AND\n529 SWAP1\n530 DUP4\n531 PUSH20 0xffffffff(...)\n552 AND\n553 MUL\n554 OR\n555 SWAP1\n556 SSTORE\n557 POP\n558 JUMP", "id": "96", "isExpanded": false, "label": "492 JUMPDEST\n493 CALLER\n494 PUSH1 0x01\n496 PUSH1 0x00\n498 PUSH2 0x0100\n501 EXP\n(click to expand +)", "size": 150, "truncLabel": "492 JUMPDEST\n493 CALLER\n494 PUSH1 0x01\n496 PUSH1 0x00\n498 PUSH2 0x0100\n501 EXP\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "276 JUMPDEST\n277 STOP", "id": "97", "isExpanded": false, "label": "276 JUMPDEST\n277 STOP", "size": 150, "truncLabel": "276 JUMPDEST\n277 STOP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "98 DUP1\n99 PUSH4 0x8da5cb5b\n104 EQ\n105 PUSH2 0x012d\n108 JUMPI", "id": "98", "isExpanded": false, "label": "98 DUP1\n99 PUSH4 0x8da5cb5b\n104 EQ\n105 PUSH2 0x012d\n108 JUMPI", "size": 150, "truncLabel": "98 DUP1\n99 PUSH4 0x8da5cb5b\n104 EQ\n105 PUSH2 0x012d\n108 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "278 JUMPDEST\n279 CALLVALUE\n280 DUP1\n281 ISZERO\n282 PUSH2 0x0122\n285 JUMPI", "id": "99", "isExpanded": false, "label": "278 JUMPDEST\n279 CALLVALUE\n280 DUP1\n281 ISZERO\n282 PUSH2 0x0122\n285 JUMPI", "size": 150, "truncLabel": "278 JUMPDEST\n279 CALLVALUE\n280 DUP1\n281 ISZERO\n282 PUSH2 0x0122\n285 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "286 PUSH1 0x00\n288 DUP1\n289 REVERT", "id": "100", "isExpanded": false, "label": "286 PUSH1 0x00\n288 DUP1\n289 REVERT", "size": 150, "truncLabel": "286 PUSH1 0x00\n288 DUP1\n289 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "290 JUMPDEST\n291 POP\n292 PUSH2 0x012b\n295 PUSH2 0x022f\n298 JUMP", "id": "101", "isExpanded": false, "label": "290 JUMPDEST\n291 POP\n292 PUSH2 0x012b\n295 PUSH2 0x022f\n298 JUMP", "size": 150, "truncLabel": "290 JUMPDEST\n291 POP\n292 PUSH2 0x012b\n295 PUSH2 0x022f\n298 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "559 JUMPDEST\n560 PUSH1 0x01\n562 PUSH1 0x00\n564 SWAP1\n565 SLOAD\n566 SWAP1\n567 PUSH2 0x0100\n570 EXP\n571 SWAP1\n572 DIV\n573 PUSH20 0xffffffff(...)\n594 AND\n595 PUSH20 0xffffffff(...)\n616 AND\n617 CALLER\n618 PUSH20 0xffffffff(...)\n639 AND\n640 EQ\n641 ISZERO\n642 ISZERO\n643 PUSH2 0x028b\n646 JUMPI", "id": "102", "isExpanded": false, "label": "559 JUMPDEST\n560 PUSH1 0x01\n562 PUSH1 0x00\n564 SWAP1\n565 SLOAD\n566 SWAP1\n(click to expand +)", "size": 150, "truncLabel": "559 JUMPDEST\n560 PUSH1 0x01\n562 PUSH1 0x00\n564 SWAP1\n565 SLOAD\n566 SWAP1\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "647 PUSH1 0x00\n649 DUP1\n650 REVERT", "id": "103", "isExpanded": false, "label": "647 PUSH1 0x00\n649 DUP1\n650 REVERT", "size": 150, "truncLabel": "647 PUSH1 0x00\n649 DUP1\n650 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "651 JUMPDEST\n652 CALLER\n653 PUSH20 0xffffffff(...)\n674 AND\n675 PUSH2 0x08fc\n678 ADDRESS\n679 PUSH20 0xffffffff(...)\n700 AND\n701 BALANCE\n702 SWAP1\n703 DUP2\n704 ISZERO\n705 MUL\n706 SWAP1\n707 PUSH1 0x40\n709 MLOAD\n710 PUSH1 0x00\n712 PUSH1 0x40\n714 MLOAD\n715 DUP1\n716 DUP4\n717 SUB\n718 DUP2\n719 DUP6\n720 DUP9\n721 DUP9\n722 CALL\n723 SWAP4\n724 POP\n725 POP\n726 POP\n727 POP\n728 ISZERO\n729 DUP1\n730 ISZERO\n731 PUSH2 0x02e8\n734 JUMPI", "id": "104", "isExpanded": false, "label": "651 JUMPDEST\n652 CALLER\n653 PUSH20 0xffffffff(...)\n674 AND\n675 PUSH2 0x08fc\n678 ADDRESS\n(click to expand +)", "size": 150, "truncLabel": "651 JUMPDEST\n652 CALLER\n653 PUSH20 0xffffffff(...)\n674 AND\n675 PUSH2 0x08fc\n678 ADDRESS\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "735 RETURNDATASIZE\n736 PUSH1 0x00\n738 DUP1\n739 RETURNDATACOPY\n740 RETURNDATASIZE\n741 PUSH1 0x00\n743 REVERT", "id": "105", "isExpanded": false, "label": "735 RETURNDATASIZE\n736 PUSH1 0x00\n738 DUP1\n739 RETURNDATACOPY\n740 RETURNDATASIZE\n741 PUSH1 0x00\n(click to expand +)", "size": 150, "truncLabel": "735 RETURNDATASIZE\n736 PUSH1 0x00\n738 DUP1\n739 RETURNDATACOPY\n740 RETURNDATASIZE\n741 PUSH1 0x00\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "744 JUMPDEST\n745 POP\n746 JUMP", "id": "106", "isExpanded": false, "label": "744 JUMPDEST\n745 POP\n746 JUMP", "size": 150, "truncLabel": "744 JUMPDEST\n745 POP\n746 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "299 JUMPDEST\n300 STOP", "id": "107", "isExpanded": false, "label": "299 JUMPDEST\n300 STOP", "size": 150, "truncLabel": "299 JUMPDEST\n300 STOP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "109 DUP1\n110 PUSH4 0xe8b5e51f\n115 EQ\n116 PUSH2 0x0184\n119 JUMPI", "id": "108", "isExpanded": false, "label": "109 DUP1\n110 PUSH4 0xe8b5e51f\n115 EQ\n116 PUSH2 0x0184\n119 JUMPI", "size": 150, "truncLabel": "109 DUP1\n110 PUSH4 0xe8b5e51f\n115 EQ\n116 PUSH2 0x0184\n119 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "301 JUMPDEST\n302 CALLVALUE\n303 DUP1\n304 ISZERO\n305 PUSH2 0x0139\n308 JUMPI", "id": "109", "isExpanded": false, "label": "301 JUMPDEST\n302 CALLVALUE\n303 DUP1\n304 ISZERO\n305 PUSH2 0x0139\n308 JUMPI", "size": 150, "truncLabel": "301 JUMPDEST\n302 CALLVALUE\n303 DUP1\n304 ISZERO\n305 PUSH2 0x0139\n308 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "309 PUSH1 0x00\n311 DUP1\n312 REVERT", "id": "110", "isExpanded": false, "label": "309 PUSH1 0x00\n311 DUP1\n312 REVERT", "size": 150, "truncLabel": "309 PUSH1 0x00\n311 DUP1\n312 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "313 JUMPDEST\n314 POP\n315 PUSH2 0x0142\n318 PUSH2 0x02eb\n321 JUMP", "id": "111", "isExpanded": false, "label": "313 JUMPDEST\n314 POP\n315 PUSH2 0x0142\n318 PUSH2 0x02eb\n321 JUMP", "size": 150, "truncLabel": "313 JUMPDEST\n314 POP\n315 PUSH2 0x0142\n318 PUSH2 0x02eb\n321 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "747 JUMPDEST\n748 PUSH1 0x01\n750 PUSH1 0x00\n752 SWAP1\n753 SLOAD\n754 SWAP1\n755 PUSH2 0x0100\n758 EXP\n759 SWAP1\n760 DIV\n761 PUSH20 0xffffffff(...)\n782 AND\n783 DUP2\n784 JUMP", "id": "112", "isExpanded": false, "label": "747 JUMPDEST\n748 PUSH1 0x01\n750 PUSH1 0x00\n752 SWAP1\n753 SLOAD\n754 SWAP1\n(click to expand +)", "size": 150, "truncLabel": "747 JUMPDEST\n748 PUSH1 0x01\n750 PUSH1 0x00\n752 SWAP1\n753 SLOAD\n754 SWAP1\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "322 JUMPDEST\n323 PUSH1 0x40\n325 MLOAD\n326 DUP1\n327 DUP3\n328 PUSH20 0xffffffff(...)\n349 AND\n350 PUSH20 0xffffffff(...)\n371 AND\n372 DUP2\n373 MSTORE\n374 PUSH1 0x20\n376 ADD\n377 SWAP2\n378 POP\n379 POP\n380 PUSH1 0x40\n382 MLOAD\n383 DUP1\n384 SWAP2\n385 SUB\n386 SWAP1\n387 RETURN", "id": "113", "isExpanded": false, "label": "322 JUMPDEST\n323 PUSH1 0x40\n325 MLOAD\n326 DUP1\n327 DUP3\n328 PUSH20 0xffffffff(...)\n(click to expand +)", "size": 150, "truncLabel": "322 JUMPDEST\n323 PUSH1 0x40\n325 MLOAD\n326 DUP1\n327 DUP3\n328 PUSH20 0xffffffff(...)\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "120 JUMPDEST\n121 PUSH1 0x00\n123 DUP1\n124 REVERT", "id": "114", "isExpanded": false, "label": "120 JUMPDEST\n121 PUSH1 0x00\n123 DUP1\n124 REVERT", "size": 150, "truncLabel": "120 JUMPDEST\n121 PUSH1 0x00\n123 DUP1\n124 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "388 JUMPDEST\n389 PUSH2 0x018c\n392 PUSH2 0x0311\n395 JUMP", "id": "115", "isExpanded": false, "label": "388 JUMPDEST\n389 PUSH2 0x018c\n392 PUSH2 0x0311\n395 JUMP", "size": 150, "truncLabel": "388 JUMPDEST\n389 PUSH2 0x018c\n392 PUSH2 0x0311\n395 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "785 JUMPDEST\n786 PUSH1 0x02\n788 SLOAD\n789 CALLVALUE\n790 GT\n791 DUP1\n792 ISZERO\n793 PUSH2 0x0323\n796 JUMPI", "id": "116", "isExpanded": false, "label": "785 JUMPDEST\n786 PUSH1 0x02\n788 SLOAD\n789 CALLVALUE\n790 GT\n791 DUP1\n(click to expand +)", "size": 150, "truncLabel": "785 JUMPDEST\n786 PUSH1 0x02\n788 SLOAD\n789 CALLVALUE\n790 GT\n791 DUP1\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "797 POP\n798 PUSH1 0x03\n800 SLOAD\n801 CALLVALUE\n802 LT\n803 JUMPDEST\n804 ISZERO\n805 ISZERO\n806 PUSH2 0x032e\n809 JUMPI", "id": "117", "isExpanded": false, "label": "797 POP\n798 PUSH1 0x03\n800 SLOAD\n801 CALLVALUE\n802 LT\n803 JUMPDEST\n(click to expand +)", "size": 150, "truncLabel": "797 POP\n798 PUSH1 0x03\n800 SLOAD\n801 CALLVALUE\n802 LT\n803 JUMPDEST\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "803 JUMPDEST\n804 ISZERO\n805 ISZERO\n806 PUSH2 0x032e\n809 JUMPI", "id": "118", "isExpanded": false, "label": "803 JUMPDEST\n804 ISZERO\n805 ISZERO\n806 PUSH2 0x032e\n809 JUMPI", "size": 150, "truncLabel": "803 JUMPDEST\n804 ISZERO\n805 ISZERO\n806 PUSH2 0x032e\n809 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "810 PUSH1 0x00\n812 DUP1\n813 REVERT", "id": "119", "isExpanded": false, "label": "810 PUSH1 0x00\n812 DUP1\n813 REVERT", "size": 150, "truncLabel": "810 PUSH1 0x00\n812 DUP1\n813 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "810 PUSH1 0x00\n812 DUP1\n813 REVERT", "id": "120", "isExpanded": false, "label": "810 PUSH1 0x00\n812 DUP1\n813 REVERT", "size": 150, "truncLabel": "810 PUSH1 0x00\n812 DUP1\n813 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "814 JUMPDEST\n815 CALLVALUE\n816 PUSH1 0x00\n818 DUP1\n819 CALLER\n820 PUSH20 0xffffffff(...)\n841 AND\n842 PUSH20 0xffffffff(...)\n863 AND\n864 DUP2\n865 MSTORE\n866 PUSH1 0x20\n868 ADD\n869 SWAP1\n870 DUP2\n871 MSTORE\n872 PUSH1 0x20\n874 ADD\n875 PUSH1 0x00\n877 SHA3\n878 PUSH1 0x00\n880 DUP3\n881 DUP3\n882 SLOAD\n883 ADD\n884 SWAP3\n885 POP\n886 POP\n887 DUP2\n888 SWAP1\n889 SSTORE\n890 POP\n891 JUMP", "id": "121", "isExpanded": false, "label": "814 JUMPDEST\n815 CALLVALUE\n816 PUSH1 0x00\n818 DUP1\n819 CALLER\n820 PUSH20 0xffffffff(...)\n(click to expand +)", "size": 150, "truncLabel": "814 JUMPDEST\n815 CALLVALUE\n816 PUSH1 0x00\n818 DUP1\n819 CALLER\n820 PUSH20 0xffffffff(...)\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "396 JUMPDEST\n397 STOP", "id": "122", "isExpanded": false, "label": "396 JUMPDEST\n397 STOP", "size": 150, "truncLabel": "396 JUMPDEST\n397 STOP"}];
+        var edges = [{"arrows": "to", "from": "77", "label": "ULE(4, 6_calldatasize)", "smooth": {"type": "cubicBezier"}, "to": "78"}, {"arrows": "to", "from": "77", "label": "Not(ULE(4, 6_calldatasize))", "smooth": {"type": "cubicBezier"}, "to": "79"}, {"arrows": "to", "from": "78", "label": "Not(And(If(6_calldatasize \u003c= 3, 0, 6_calldata[3]) == 0xe0,        If(6_calldatasize \u003c= 2, 0, 6_calldata[2]) == 95,        If(6_calldatasize \u003c= 1, 0, 6_calldata[1]) == 6,        If(6_calldatasize \u003c= 0, 0, 6_calldata[0]) == 18))", "smooth": {"type": "cubicBezier"}, "to": "80"}, {"arrows": "to", "from": "78", "label": "And(If(6_calldatasize \u003c= 3, 0, 6_calldata[3]) == 0xe0,    If(6_calldatasize \u003c= 2, 0, 6_calldata[2]) == 95,    If(6_calldatasize \u003c= 1, 0, 6_calldata[1]) == 6,    If(6_calldatasize \u003c= 0, 0, 6_calldata[0]) == 18)", "smooth": {"type": "cubicBezier"}, "to": "81"}, {"arrows": "to", "from": "81", "label": "If(call_value6 == 0, 1, 0) == 0", "smooth": {"type": "cubicBezier"}, "to": "82"}, {"arrows": "to", "from": "81", "label": "Not(If(call_value6 == 0, 1, 0) == 0)", "smooth": {"type": "cubicBezier"}, "to": "83"}, {"arrows": "to", "from": "83", "label": "", "smooth": {"type": "cubicBezier"}, "to": "84"}, {"arrows": "to", "from": "84", "label": "", "smooth": {"type": "cubicBezier"}, "to": "85"}, {"arrows": "to", "from": "80", "label": "Not(And(If(6_calldatasize \u003c= 3, 0, 6_calldata[3]) == 0xe3,        If(6_calldatasize \u003c= 2, 0, 6_calldata[2]) == 53,        If(6_calldatasize \u003c= 1, 0, 6_calldata[1]) == 0xe2,        If(6_calldatasize \u003c= 0, 0, 6_calldata[0]) == 39))", "smooth": {"type": "cubicBezier"}, "to": "86"}, {"arrows": "to", "from": "80", "label": "And(If(6_calldatasize \u003c= 3, 0, 6_calldata[3]) == 0xe3,    If(6_calldatasize \u003c= 2, 0, 6_calldata[2]) == 53,    If(6_calldatasize \u003c= 1, 0, 6_calldata[1]) == 0xe2,    If(6_calldatasize \u003c= 0, 0, 6_calldata[0]) == 39)", "smooth": {"type": "cubicBezier"}, "to": "87"}, {"arrows": "to", "from": "87", "label": "If(call_value6 == 0, 1, 0) == 0", "smooth": {"type": "cubicBezier"}, "to": "88"}, {"arrows": "to", "from": "87", "label": "Not(If(call_value6 == 0, 1, 0) == 0)", "smooth": {"type": "cubicBezier"}, "to": "89"}, {"arrows": "to", "from": "89", "label": "", "smooth": {"type": "cubicBezier"}, "to": "90"}, {"arrows": "to", "from": "90", "label": "", "smooth": {"type": "cubicBezier"}, "to": "91"}, {"arrows": "to", "from": "86", "label": "Not(And(If(6_calldatasize \u003c= 3, 0, 6_calldata[3]) == 0xd8,        If(6_calldatasize \u003c= 2, 0, 6_calldata[2]) == 92,        If(6_calldatasize \u003c= 1, 0, 6_calldata[1]) == 0x88,        If(6_calldatasize \u003c= 0, 0, 6_calldata[0]) == 86))", "smooth": {"type": "cubicBezier"}, "to": "92"}, {"arrows": "to", "from": "86", "label": "And(If(6_calldatasize \u003c= 3, 0, 6_calldata[3]) == 0xd8,    If(6_calldatasize \u003c= 2, 0, 6_calldata[2]) == 92,    If(6_calldatasize \u003c= 1, 0, 6_calldata[1]) == 0x88,    If(6_calldatasize \u003c= 0, 0, 6_calldata[0]) == 86)", "smooth": {"type": "cubicBezier"}, "to": "93"}, {"arrows": "to", "from": "93", "label": "If(call_value6 == 0, 1, 0) == 0", "smooth": {"type": "cubicBezier"}, "to": "94"}, {"arrows": "to", "from": "93", "label": "Not(If(call_value6 == 0, 1, 0) == 0)", "smooth": {"type": "cubicBezier"}, "to": "95"}, {"arrows": "to", "from": "95", "label": "", "smooth": {"type": "cubicBezier"}, "to": "96"}, {"arrows": "to", "from": "96", "label": "", "smooth": {"type": "cubicBezier"}, "to": "97"}, {"arrows": "to", "from": "92", "label": "Not(And(If(6_calldatasize \u003c= 3, 0, 6_calldata[3]) == 0xfe,        If(6_calldatasize \u003c= 2, 0, 6_calldata[2]) == 63,        If(6_calldatasize \u003c= 1, 0, 6_calldata[1]) == 52,        If(6_calldatasize \u003c= 0, 0, 6_calldata[0]) == 0x6c))", "smooth": {"type": "cubicBezier"}, "to": "98"}, {"arrows": "to", "from": "92", "label": "And(If(6_calldatasize \u003c= 3, 0, 6_calldata[3]) == 0xfe,    If(6_calldatasize \u003c= 2, 0, 6_calldata[2]) == 63,    If(6_calldatasize \u003c= 1, 0, 6_calldata[1]) == 52,    If(6_calldatasize \u003c= 0, 0, 6_calldata[0]) == 0x6c)", "smooth": {"type": "cubicBezier"}, "to": "99"}, {"arrows": "to", "from": "99", "label": "If(call_value6 == 0, 1, 0) == 0", "smooth": {"type": "cubicBezier"}, "to": "100"}, {"arrows": "to", "from": "99", "label": "Not(If(call_value6 == 0, 1, 0) == 0)", "smooth": {"type": "cubicBezier"}, "to": "101"}, {"arrows": "to", "from": "101", "label": "", "smooth": {"type": "cubicBezier"}, "to": "102"}, {"arrows": "to", "from": "102", "label": "If(If(Extract(0x9f, 0, sender_6) ==      Extract(0x9f, 0, storage_1_0),      0,      1) ==   0,   1,   0) ==0", "smooth": {"type": "cubicBezier"}, "to": "103"}, {"arrows": "to", "from": "102", "label": "Not(If(If(Extract(0x9f, 0, sender_6) ==          Extract(0x9f, 0, storage_1_0),          0,          1) ==       0,       1,       0) ==    0)", "smooth": {"type": "cubicBezier"}, "to": "104"}, {"arrows": "to", "from": "104", "label": "If(If(6_retval_722 == 0, 1, 0) == 0, 1, 0) == 0", "smooth": {"type": "cubicBezier"}, "to": "105"}, {"arrows": "to", "from": "104", "label": "Not(If(If(6_retval_722 == 0, 1, 0) == 0, 1, 0) == 0)", "smooth": {"type": "cubicBezier"}, "to": "106"}, {"arrows": "to", "from": "106", "label": "", "smooth": {"type": "cubicBezier"}, "to": "107"}, {"arrows": "to", "from": "98", "label": "Not(And(If(6_calldatasize \u003c= 3, 0, 6_calldata[3]) == 91,        If(6_calldatasize \u003c= 2, 0, 6_calldata[2]) == 0xcb,        If(6_calldatasize \u003c= 1, 0, 6_calldata[1]) == 0xa5,        If(6_calldatasize \u003c= 0, 0, 6_calldata[0]) == 0x8d))", "smooth": {"type": "cubicBezier"}, "to": "108"}, {"arrows": "to", "from": "98", "label": "And(If(6_calldatasize \u003c= 3, 0, 6_calldata[3]) == 91,    If(6_calldatasize \u003c= 2, 0, 6_calldata[2]) == 0xcb,    If(6_calldatasize \u003c= 1, 0, 6_calldata[1]) == 0xa5,    If(6_calldatasize \u003c= 0, 0, 6_calldata[0]) == 0x8d)", "smooth": {"type": "cubicBezier"}, "to": "109"}, {"arrows": "to", "from": "109", "label": "If(call_value6 == 0, 1, 0) == 0", "smooth": {"type": "cubicBezier"}, "to": "110"}, {"arrows": "to", "from": "109", "label": "Not(If(call_value6 == 0, 1, 0) == 0)", "smooth": {"type": "cubicBezier"}, "to": "111"}, {"arrows": "to", "from": "111", "label": "", "smooth": {"type": "cubicBezier"}, "to": "112"}, {"arrows": "to", "from": "112", "label": "", "smooth": {"type": "cubicBezier"}, "to": "113"}, {"arrows": "to", "from": "108", "label": "Not(And(If(6_calldatasize \u003c= 3, 0, 6_calldata[3]) == 31,        If(6_calldatasize \u003c= 2, 0, 6_calldata[2]) == 0xe5,        If(6_calldatasize \u003c= 1, 0, 6_calldata[1]) == 0xb5,        If(6_calldatasize \u003c= 0, 0, 6_calldata[0]) == 0xe8))", "smooth": {"type": "cubicBezier"}, "to": "114"}, {"arrows": "to", "from": "108", "label": "And(If(6_calldatasize \u003c= 3, 0, 6_calldata[3]) == 31,    If(6_calldatasize \u003c= 2, 0, 6_calldata[2]) == 0xe5,    If(6_calldatasize \u003c= 1, 0, 6_calldata[1]) == 0xb5,    If(6_calldatasize \u003c= 0, 0, 6_calldata[0]) == 0xe8)", "smooth": {"type": "cubicBezier"}, "to": "115"}, {"arrows": "to", "from": "115", "label": "", "smooth": {"type": "cubicBezier"}, "to": "116"}, {"arrows": "to", "from": "116", "label": "If(ULE(call_value6, storage_2_0), 1, 0) == 0", "smooth": {"type": "cubicBezier"}, "to": "117"}, {"arrows": "to", "from": "116", "label": "Not(If(ULE(call_value6, storage_2_0), 1, 0) == 0)", "smooth": {"type": "cubicBezier"}, "to": "118"}, {"arrows": "to", "from": "118", "label": "If(If(ULE(call_value6, storage_2_0), 1, 0) == 0, 1, 0) == 0", "smooth": {"type": "cubicBezier"}, "to": "119"}, {"arrows": "to", "from": "117", "label": "If(If(ULE(storage_3_0, call_value6), 1, 0) == 0, 1, 0) == 0", "smooth": {"type": "cubicBezier"}, "to": "120"}, {"arrows": "to", "from": "117", "label": "Not(If(If(ULE(storage_3_0, call_value6), 1, 0) == 0, 1, 0) ==    0)", "smooth": {"type": "cubicBezier"}, "to": "121"}, {"arrows": "to", "from": "121", "label": "", "smooth": {"type": "cubicBezier"}, "to": "122"}];
+    </script>
+</head>
+<body>
+<p>Mythril / Ethereum LASER Symbolic VM</p>
+<div id="mynetwork"></div>
+<script type="text/javascript">
+    var container = document.getElementById('mynetwork');
+
+    var nodesSet = new vis.DataSet(nodes);
+    var edgesSet = new vis.DataSet(edges);
+    var data = {'nodes': nodesSet, 'edges': edgesSet}
+
+    var gph = new vis.Network(container, data, options);
+    gph.on("click", function (params) {
+        // parse node id
+        var nodeID = params['nodes']['0'];
+        if (nodeID) {
+            var clickedNode = nodesSet.get(nodeID);
+
+            if(clickedNode.isExpanded) {
+                clickedNode.label = clickedNode.truncLabel;
+            }
+            else {
+                clickedNode.label = clickedNode.fullLabel;
+            }
+
+            clickedNode.isExpanded = !clickedNode.isExpanded;
+
+            nodesSet.update(clickedNode);
+        }
+    });
+</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/tests/testdata/outputs_expected/exceptions.sol.o.easm b/tests/testdata/outputs_expected/exceptions.sol.o.easm
new file mode 100644
index 0000000000000000000000000000000000000000..ef83a75cb6fa515a8acce715e99b8fbf185e33c9
--- /dev/null
+++ b/tests/testdata/outputs_expected/exceptions.sol.o.easm
@@ -0,0 +1,392 @@
+0 PUSH1 0x60
+2 PUSH1 0x40
+4 MSTORE
+5 PUSH1 0x04
+7 CALLDATASIZE
+8 LT
+9 PUSH2 0x008e
+12 JUMPI
+13 PUSH1 0x00
+15 CALLDATALOAD
+16 PUSH29 0x0100000000000000000000000000000000000000000000000000000000
+46 SWAP1
+47 DIV
+48 PUSH4 0xffffffff
+53 AND
+54 DUP1
+55 PUSH4 0x01d4277c
+60 EQ
+61 PUSH2 0x0093
+64 JUMPI
+65 DUP1
+66 PUSH4 0x546455b5
+71 EQ
+72 PUSH2 0x00b6
+75 JUMPI
+76 DUP1
+77 PUSH4 0x78375f14
+82 EQ
+83 PUSH2 0x00d9
+86 JUMPI
+87 DUP1
+88 PUSH4 0x92dd38ea
+93 EQ
+94 PUSH2 0x00fc
+97 JUMPI
+98 DUP1
+99 PUSH4 0xa08299f1
+104 EQ
+105 PUSH2 0x011f
+108 JUMPI
+109 DUP1
+110 PUSH4 0xb34c3610
+115 EQ
+116 PUSH2 0x0142
+119 JUMPI
+120 DUP1
+121 PUSH4 0xb630d706
+126 EQ
+127 PUSH2 0x0157
+130 JUMPI
+131 DUP1
+132 PUSH4 0xf44f13d8
+137 EQ
+138 PUSH2 0x017a
+141 JUMPI
+142 JUMPDEST
+143 PUSH1 0x00
+145 DUP1
+146 REVERT
+147 JUMPDEST
+148 CALLVALUE
+149 ISZERO
+150 PUSH2 0x009e
+153 JUMPI
+154 PUSH1 0x00
+156 DUP1
+157 REVERT
+158 JUMPDEST
+159 PUSH2 0x00b4
+162 PUSH1 0x04
+164 DUP1
+165 DUP1
+166 CALLDATALOAD
+167 SWAP1
+168 PUSH1 0x20
+170 ADD
+171 SWAP1
+172 SWAP2
+173 SWAP1
+174 POP
+175 POP
+176 PUSH2 0x018f
+179 JUMP
+180 JUMPDEST
+181 STOP
+182 JUMPDEST
+183 CALLVALUE
+184 ISZERO
+185 PUSH2 0x00c1
+188 JUMPI
+189 PUSH1 0x00
+191 DUP1
+192 REVERT
+193 JUMPDEST
+194 PUSH2 0x00d7
+197 PUSH1 0x04
+199 DUP1
+200 DUP1
+201 CALLDATALOAD
+202 SWAP1
+203 PUSH1 0x20
+205 ADD
+206 SWAP1
+207 SWAP2
+208 SWAP1
+209 POP
+210 POP
+211 PUSH2 0x01b2
+214 JUMP
+215 JUMPDEST
+216 STOP
+217 JUMPDEST
+218 CALLVALUE
+219 ISZERO
+220 PUSH2 0x00e4
+223 JUMPI
+224 PUSH1 0x00
+226 DUP1
+227 REVERT
+228 JUMPDEST
+229 PUSH2 0x00fa
+232 PUSH1 0x04
+234 DUP1
+235 DUP1
+236 CALLDATALOAD
+237 SWAP1
+238 PUSH1 0x20
+240 ADD
+241 SWAP1
+242 SWAP2
+243 SWAP1
+244 POP
+245 POP
+246 PUSH2 0x01c2
+249 JUMP
+250 JUMPDEST
+251 STOP
+252 JUMPDEST
+253 CALLVALUE
+254 ISZERO
+255 PUSH2 0x0107
+258 JUMPI
+259 PUSH1 0x00
+261 DUP1
+262 REVERT
+263 JUMPDEST
+264 PUSH2 0x011d
+267 PUSH1 0x04
+269 DUP1
+270 DUP1
+271 CALLDATALOAD
+272 SWAP1
+273 PUSH1 0x20
+275 ADD
+276 SWAP1
+277 SWAP2
+278 SWAP1
+279 POP
+280 POP
+281 PUSH2 0x01d5
+284 JUMP
+285 JUMPDEST
+286 STOP
+287 JUMPDEST
+288 CALLVALUE
+289 ISZERO
+290 PUSH2 0x012a
+293 JUMPI
+294 PUSH1 0x00
+296 DUP1
+297 REVERT
+298 JUMPDEST
+299 PUSH2 0x0140
+302 PUSH1 0x04
+304 DUP1
+305 DUP1
+306 CALLDATALOAD
+307 SWAP1
+308 PUSH1 0x20
+310 ADD
+311 SWAP1
+312 SWAP2
+313 SWAP1
+314 POP
+315 POP
+316 PUSH2 0x01ed
+319 JUMP
+320 JUMPDEST
+321 STOP
+322 JUMPDEST
+323 CALLVALUE
+324 ISZERO
+325 PUSH2 0x014d
+328 JUMPI
+329 PUSH1 0x00
+331 DUP1
+332 REVERT
+333 JUMPDEST
+334 PUSH2 0x0155
+337 PUSH2 0x0202
+340 JUMP
+341 JUMPDEST
+342 STOP
+343 JUMPDEST
+344 CALLVALUE
+345 ISZERO
+346 PUSH2 0x0162
+349 JUMPI
+350 PUSH1 0x00
+352 DUP1
+353 REVERT
+354 JUMPDEST
+355 PUSH2 0x0178
+358 PUSH1 0x04
+360 DUP1
+361 DUP1
+362 CALLDATALOAD
+363 SWAP1
+364 PUSH1 0x20
+366 ADD
+367 SWAP1
+368 SWAP2
+369 SWAP1
+370 POP
+371 POP
+372 PUSH2 0x0217
+375 JUMP
+376 JUMPDEST
+377 STOP
+378 JUMPDEST
+379 CALLVALUE
+380 ISZERO
+381 PUSH2 0x0185
+384 JUMPI
+385 PUSH1 0x00
+387 DUP1
+388 REVERT
+389 JUMPDEST
+390 PUSH2 0x018d
+393 PUSH2 0x0235
+396 JUMP
+397 JUMPDEST
+398 STOP
+399 JUMPDEST
+400 PUSH1 0x00
+402 PUSH1 0x08
+404 DUP3
+405 LT
+406 ISZERO
+407 PUSH2 0x01ae
+410 JUMPI
+411 PUSH1 0x00
+413 DUP3
+414 PUSH1 0x08
+416 DUP2
+417 LT
+418 ISZERO
+419 ISZERO
+420 PUSH2 0x01a9
+423 JUMPI
+424 ASSERT_FAIL
+425 JUMPDEST
+426 ADD
+427 SLOAD
+428 SWAP1
+429 POP
+430 JUMPDEST
+431 POP
+432 POP
+433 JUMP
+434 JUMPDEST
+435 PUSH1 0x17
+437 DUP2
+438 EQ
+439 ISZERO
+440 ISZERO
+441 ISZERO
+442 PUSH2 0x01bf
+445 JUMPI
+446 ASSERT_FAIL
+447 JUMPDEST
+448 POP
+449 JUMP
+450 JUMPDEST
+451 PUSH1 0x17
+453 DUP2
+454 EQ
+455 ISZERO
+456 ISZERO
+457 ISZERO
+458 PUSH2 0x01d2
+461 JUMPI
+462 PUSH1 0x00
+464 DUP1
+465 REVERT
+466 JUMPDEST
+467 POP
+468 JUMP
+469 JUMPDEST
+470 PUSH1 0x00
+472 DUP1
+473 DUP3
+474 PUSH1 0x08
+476 DUP2
+477 LT
+478 ISZERO
+479 ISZERO
+480 PUSH2 0x01e5
+483 JUMPI
+484 ASSERT_FAIL
+485 JUMPDEST
+486 ADD
+487 SLOAD
+488 SWAP1
+489 POP
+490 POP
+491 POP
+492 JUMP
+493 JUMPDEST
+494 PUSH1 0x00
+496 DUP2
+497 PUSH1 0x01
+499 DUP2
+500 ISZERO
+501 ISZERO
+502 PUSH2 0x01fb
+505 JUMPI
+506 ASSERT_FAIL
+507 JUMPDEST
+508 DIV
+509 SWAP1
+510 POP
+511 POP
+512 POP
+513 JUMP
+514 JUMPDEST
+515 PUSH1 0x00
+517 PUSH1 0x01
+519 SWAP1
+520 POP
+521 PUSH1 0x00
+523 DUP2
+524 EQ
+525 ISZERO
+526 ISZERO
+527 PUSH2 0x0214
+530 JUMPI
+531 ASSERT_FAIL
+532 JUMPDEST
+533 POP
+534 JUMP
+535 JUMPDEST
+536 PUSH1 0x00
+538 DUP1
+539 DUP3
+540 GT
+541 ISZERO
+542 PUSH2 0x0231
+545 JUMPI
+546 DUP2
+547 PUSH1 0x01
+549 DUP2
+550 ISZERO
+551 ISZERO
+552 PUSH2 0x022d
+555 JUMPI
+556 ASSERT_FAIL
+557 JUMPDEST
+558 DIV
+559 SWAP1
+560 POP
+561 JUMPDEST
+562 POP
+563 POP
+564 JUMP
+565 JUMPDEST
+566 PUSH1 0x00
+568 PUSH1 0x01
+570 SWAP1
+571 POP
+572 PUSH1 0x00
+574 DUP2
+575 GT
+576 ISZERO
+577 ISZERO
+578 PUSH2 0x0247
+581 JUMPI
+582 ASSERT_FAIL
+583 JUMPDEST
+584 POP
+585 JUMP
+586 STOP
diff --git a/tests/testdata/outputs_expected/exceptions.sol.o.graph.html b/tests/testdata/outputs_expected/exceptions.sol.o.graph.html
new file mode 100644
index 0000000000000000000000000000000000000000..874f4164af2f1050402aedbee3d4dc2b019fa42b
--- /dev/null
+++ b/tests/testdata/outputs_expected/exceptions.sol.o.graph.html
@@ -0,0 +1,62 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>Call Graph</title>
+    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.css" integrity="sha256-iq5ygGJ7021Pi7H5S+QAUXCPUfaBzfqeplbg/KlEssg=" crossorigin="anonymous" />
+    <script src="https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.js" integrity="sha256-JuQeAGbk9rG/EoRMixuy5X8syzICcvB0dj3KindZkY0=" crossorigin="anonymous"></script>
+
+    
+    <style type="text/css">
+        #mynetwork {
+          height: 100%;
+            background-color: #232625;
+        }
+        body {
+            background-color: #232625;
+            color: #ffffff;
+            font-size: 10px;
+        }
+        html, body {
+          height: 95%;
+        }
+    </style>
+    
+
+    <script>
+        var options = {"autoResize": true, "edges": {"font": {"align": "horizontal", "background": "none", "color": "#FFFFFF", "face": "arial", "multi": false, "strokeColor": "#ffffff", "strokeWidth": 0, "vadjust": 0}}, "height": "100%", "layout": {"hierarchical": {"blockShifting": true, "direction": "LR", "edgeMinimization": true, "enabled": true, "levelSeparation": 450, "nodeSpacing": 200, "parentCentralization": false, "sortMethod": "directed", "treeSpacing": 100}, "improvedLayout": true}, "manipulation": false, "nodes": {"borderWidth": 1, "borderWidthSelected": 2, "chosen": true, "color": "#000000", "font": {"align": "left", "color": "#FFFFFF"}, "shape": "box"}, "physics": {"enabled": false}, "width": "100%"};
+        var nodes = [{"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n9 PUSH2 0x008e\n12 JUMPI", "id": "336", "isExpanded": false, "label": "0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n(click to expand +)", "size": 150, "truncLabel": "0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x01000000(...)\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n53 AND\n54 DUP1\n55 PUSH4 0x01d4277c\n60 EQ\n61 PUSH2 0x0093\n64 JUMPI", "id": "337", "isExpanded": false, "label": "13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x01000000(...)\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n(click to expand +)", "size": 150, "truncLabel": "13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x01000000(...)\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "142 JUMPDEST\n143 PUSH1 0x00\n145 DUP1\n146 REVERT", "id": "338", "isExpanded": false, "label": "142 JUMPDEST\n143 PUSH1 0x00\n145 DUP1\n146 REVERT", "size": 150, "truncLabel": "142 JUMPDEST\n143 PUSH1 0x00\n145 DUP1\n146 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "65 DUP1\n66 PUSH4 0x546455b5\n71 EQ\n72 PUSH2 0x00b6\n75 JUMPI", "id": "339", "isExpanded": false, "label": "65 DUP1\n66 PUSH4 0x546455b5\n71 EQ\n72 PUSH2 0x00b6\n75 JUMPI", "size": 150, "truncLabel": "65 DUP1\n66 PUSH4 0x546455b5\n71 EQ\n72 PUSH2 0x00b6\n75 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "147 JUMPDEST\n148 CALLVALUE\n149 ISZERO\n150 PUSH2 0x009e\n153 JUMPI", "id": "340", "isExpanded": false, "label": "147 JUMPDEST\n148 CALLVALUE\n149 ISZERO\n150 PUSH2 0x009e\n153 JUMPI", "size": 150, "truncLabel": "147 JUMPDEST\n148 CALLVALUE\n149 ISZERO\n150 PUSH2 0x009e\n153 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "154 PUSH1 0x00\n156 DUP1\n157 REVERT", "id": "341", "isExpanded": false, "label": "154 PUSH1 0x00\n156 DUP1\n157 REVERT", "size": 150, "truncLabel": "154 PUSH1 0x00\n156 DUP1\n157 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "158 JUMPDEST\n159 PUSH2 0x00b4\n162 PUSH1 0x04\n164 DUP1\n165 DUP1\n166 CALLDATALOAD\n167 SWAP1\n168 PUSH1 0x20\n170 ADD\n171 SWAP1\n172 SWAP2\n173 SWAP1\n174 POP\n175 POP\n176 PUSH2 0x018f\n179 JUMP", "id": "342", "isExpanded": false, "label": "158 JUMPDEST\n159 PUSH2 0x00b4\n162 PUSH1 0x04\n164 DUP1\n165 DUP1\n166 CALLDATALOAD\n(click to expand +)", "size": 150, "truncLabel": "158 JUMPDEST\n159 PUSH2 0x00b4\n162 PUSH1 0x04\n164 DUP1\n165 DUP1\n166 CALLDATALOAD\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "399 JUMPDEST\n400 PUSH1 0x00\n402 PUSH1 0x08\n404 DUP3\n405 LT\n406 ISZERO\n407 PUSH2 0x01ae\n410 JUMPI", "id": "343", "isExpanded": false, "label": "399 JUMPDEST\n400 PUSH1 0x00\n402 PUSH1 0x08\n404 DUP3\n405 LT\n406 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "399 JUMPDEST\n400 PUSH1 0x00\n402 PUSH1 0x08\n404 DUP3\n405 LT\n406 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "411 PUSH1 0x00\n413 DUP3\n414 PUSH1 0x08\n416 DUP2\n417 LT\n418 ISZERO\n419 ISZERO\n420 PUSH2 0x01a9\n423 JUMPI", "id": "344", "isExpanded": false, "label": "411 PUSH1 0x00\n413 DUP3\n414 PUSH1 0x08\n416 DUP2\n417 LT\n418 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "411 PUSH1 0x00\n413 DUP3\n414 PUSH1 0x08\n416 DUP2\n417 LT\n418 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "430 JUMPDEST\n431 POP\n432 POP\n433 JUMP", "id": "345", "isExpanded": false, "label": "430 JUMPDEST\n431 POP\n432 POP\n433 JUMP", "size": 150, "truncLabel": "430 JUMPDEST\n431 POP\n432 POP\n433 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "180 JUMPDEST\n181 STOP", "id": "346", "isExpanded": false, "label": "180 JUMPDEST\n181 STOP", "size": 150, "truncLabel": "180 JUMPDEST\n181 STOP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "424 ASSERT_FAIL", "id": "347", "isExpanded": false, "label": "424 ASSERT_FAIL", "size": 150, "truncLabel": "424 ASSERT_FAIL"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "425 JUMPDEST\n426 ADD\n427 SLOAD\n428 SWAP1\n429 POP\n430 JUMPDEST\n431 POP\n432 POP\n433 JUMP", "id": "348", "isExpanded": false, "label": "425 JUMPDEST\n426 ADD\n427 SLOAD\n428 SWAP1\n429 POP\n430 JUMPDEST\n(click to expand +)", "size": 150, "truncLabel": "425 JUMPDEST\n426 ADD\n427 SLOAD\n428 SWAP1\n429 POP\n430 JUMPDEST\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "180 JUMPDEST\n181 STOP", "id": "349", "isExpanded": false, "label": "180 JUMPDEST\n181 STOP", "size": 150, "truncLabel": "180 JUMPDEST\n181 STOP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "76 DUP1\n77 PUSH4 0x78375f14\n82 EQ\n83 PUSH2 0x00d9\n86 JUMPI", "id": "350", "isExpanded": false, "label": "76 DUP1\n77 PUSH4 0x78375f14\n82 EQ\n83 PUSH2 0x00d9\n86 JUMPI", "size": 150, "truncLabel": "76 DUP1\n77 PUSH4 0x78375f14\n82 EQ\n83 PUSH2 0x00d9\n86 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "182 JUMPDEST\n183 CALLVALUE\n184 ISZERO\n185 PUSH2 0x00c1\n188 JUMPI", "id": "351", "isExpanded": false, "label": "182 JUMPDEST\n183 CALLVALUE\n184 ISZERO\n185 PUSH2 0x00c1\n188 JUMPI", "size": 150, "truncLabel": "182 JUMPDEST\n183 CALLVALUE\n184 ISZERO\n185 PUSH2 0x00c1\n188 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "189 PUSH1 0x00\n191 DUP1\n192 REVERT", "id": "352", "isExpanded": false, "label": "189 PUSH1 0x00\n191 DUP1\n192 REVERT", "size": 150, "truncLabel": "189 PUSH1 0x00\n191 DUP1\n192 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "193 JUMPDEST\n194 PUSH2 0x00d7\n197 PUSH1 0x04\n199 DUP1\n200 DUP1\n201 CALLDATALOAD\n202 SWAP1\n203 PUSH1 0x20\n205 ADD\n206 SWAP1\n207 SWAP2\n208 SWAP1\n209 POP\n210 POP\n211 PUSH2 0x01b2\n214 JUMP", "id": "353", "isExpanded": false, "label": "193 JUMPDEST\n194 PUSH2 0x00d7\n197 PUSH1 0x04\n199 DUP1\n200 DUP1\n201 CALLDATALOAD\n(click to expand +)", "size": 150, "truncLabel": "193 JUMPDEST\n194 PUSH2 0x00d7\n197 PUSH1 0x04\n199 DUP1\n200 DUP1\n201 CALLDATALOAD\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "434 JUMPDEST\n435 PUSH1 0x17\n437 DUP2\n438 EQ\n439 ISZERO\n440 ISZERO\n441 ISZERO\n442 PUSH2 0x01bf\n445 JUMPI", "id": "354", "isExpanded": false, "label": "434 JUMPDEST\n435 PUSH1 0x17\n437 DUP2\n438 EQ\n439 ISZERO\n440 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "434 JUMPDEST\n435 PUSH1 0x17\n437 DUP2\n438 EQ\n439 ISZERO\n440 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "446 ASSERT_FAIL", "id": "355", "isExpanded": false, "label": "446 ASSERT_FAIL", "size": 150, "truncLabel": "446 ASSERT_FAIL"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "447 JUMPDEST\n448 POP\n449 JUMP", "id": "356", "isExpanded": false, "label": "447 JUMPDEST\n448 POP\n449 JUMP", "size": 150, "truncLabel": "447 JUMPDEST\n448 POP\n449 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "215 JUMPDEST\n216 STOP", "id": "357", "isExpanded": false, "label": "215 JUMPDEST\n216 STOP", "size": 150, "truncLabel": "215 JUMPDEST\n216 STOP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "87 DUP1\n88 PUSH4 0x92dd38ea\n93 EQ\n94 PUSH2 0x00fc\n97 JUMPI", "id": "358", "isExpanded": false, "label": "87 DUP1\n88 PUSH4 0x92dd38ea\n93 EQ\n94 PUSH2 0x00fc\n97 JUMPI", "size": 150, "truncLabel": "87 DUP1\n88 PUSH4 0x92dd38ea\n93 EQ\n94 PUSH2 0x00fc\n97 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "217 JUMPDEST\n218 CALLVALUE\n219 ISZERO\n220 PUSH2 0x00e4\n223 JUMPI", "id": "359", "isExpanded": false, "label": "217 JUMPDEST\n218 CALLVALUE\n219 ISZERO\n220 PUSH2 0x00e4\n223 JUMPI", "size": 150, "truncLabel": "217 JUMPDEST\n218 CALLVALUE\n219 ISZERO\n220 PUSH2 0x00e4\n223 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "224 PUSH1 0x00\n226 DUP1\n227 REVERT", "id": "360", "isExpanded": false, "label": "224 PUSH1 0x00\n226 DUP1\n227 REVERT", "size": 150, "truncLabel": "224 PUSH1 0x00\n226 DUP1\n227 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "228 JUMPDEST\n229 PUSH2 0x00fa\n232 PUSH1 0x04\n234 DUP1\n235 DUP1\n236 CALLDATALOAD\n237 SWAP1\n238 PUSH1 0x20\n240 ADD\n241 SWAP1\n242 SWAP2\n243 SWAP1\n244 POP\n245 POP\n246 PUSH2 0x01c2\n249 JUMP", "id": "361", "isExpanded": false, "label": "228 JUMPDEST\n229 PUSH2 0x00fa\n232 PUSH1 0x04\n234 DUP1\n235 DUP1\n236 CALLDATALOAD\n(click to expand +)", "size": 150, "truncLabel": "228 JUMPDEST\n229 PUSH2 0x00fa\n232 PUSH1 0x04\n234 DUP1\n235 DUP1\n236 CALLDATALOAD\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "450 JUMPDEST\n451 PUSH1 0x17\n453 DUP2\n454 EQ\n455 ISZERO\n456 ISZERO\n457 ISZERO\n458 PUSH2 0x01d2\n461 JUMPI", "id": "362", "isExpanded": false, "label": "450 JUMPDEST\n451 PUSH1 0x17\n453 DUP2\n454 EQ\n455 ISZERO\n456 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "450 JUMPDEST\n451 PUSH1 0x17\n453 DUP2\n454 EQ\n455 ISZERO\n456 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "462 PUSH1 0x00\n464 DUP1\n465 REVERT", "id": "363", "isExpanded": false, "label": "462 PUSH1 0x00\n464 DUP1\n465 REVERT", "size": 150, "truncLabel": "462 PUSH1 0x00\n464 DUP1\n465 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "466 JUMPDEST\n467 POP\n468 JUMP", "id": "364", "isExpanded": false, "label": "466 JUMPDEST\n467 POP\n468 JUMP", "size": 150, "truncLabel": "466 JUMPDEST\n467 POP\n468 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "250 JUMPDEST\n251 STOP", "id": "365", "isExpanded": false, "label": "250 JUMPDEST\n251 STOP", "size": 150, "truncLabel": "250 JUMPDEST\n251 STOP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "98 DUP1\n99 PUSH4 0xa08299f1\n104 EQ\n105 PUSH2 0x011f\n108 JUMPI", "id": "366", "isExpanded": false, "label": "98 DUP1\n99 PUSH4 0xa08299f1\n104 EQ\n105 PUSH2 0x011f\n108 JUMPI", "size": 150, "truncLabel": "98 DUP1\n99 PUSH4 0xa08299f1\n104 EQ\n105 PUSH2 0x011f\n108 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "252 JUMPDEST\n253 CALLVALUE\n254 ISZERO\n255 PUSH2 0x0107\n258 JUMPI", "id": "367", "isExpanded": false, "label": "252 JUMPDEST\n253 CALLVALUE\n254 ISZERO\n255 PUSH2 0x0107\n258 JUMPI", "size": 150, "truncLabel": "252 JUMPDEST\n253 CALLVALUE\n254 ISZERO\n255 PUSH2 0x0107\n258 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "259 PUSH1 0x00\n261 DUP1\n262 REVERT", "id": "368", "isExpanded": false, "label": "259 PUSH1 0x00\n261 DUP1\n262 REVERT", "size": 150, "truncLabel": "259 PUSH1 0x00\n261 DUP1\n262 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "263 JUMPDEST\n264 PUSH2 0x011d\n267 PUSH1 0x04\n269 DUP1\n270 DUP1\n271 CALLDATALOAD\n272 SWAP1\n273 PUSH1 0x20\n275 ADD\n276 SWAP1\n277 SWAP2\n278 SWAP1\n279 POP\n280 POP\n281 PUSH2 0x01d5\n284 JUMP", "id": "369", "isExpanded": false, "label": "263 JUMPDEST\n264 PUSH2 0x011d\n267 PUSH1 0x04\n269 DUP1\n270 DUP1\n271 CALLDATALOAD\n(click to expand +)", "size": 150, "truncLabel": "263 JUMPDEST\n264 PUSH2 0x011d\n267 PUSH1 0x04\n269 DUP1\n270 DUP1\n271 CALLDATALOAD\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "469 JUMPDEST\n470 PUSH1 0x00\n472 DUP1\n473 DUP3\n474 PUSH1 0x08\n476 DUP2\n477 LT\n478 ISZERO\n479 ISZERO\n480 PUSH2 0x01e5\n483 JUMPI", "id": "370", "isExpanded": false, "label": "469 JUMPDEST\n470 PUSH1 0x00\n472 DUP1\n473 DUP3\n474 PUSH1 0x08\n476 DUP2\n(click to expand +)", "size": 150, "truncLabel": "469 JUMPDEST\n470 PUSH1 0x00\n472 DUP1\n473 DUP3\n474 PUSH1 0x08\n476 DUP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "484 ASSERT_FAIL", "id": "371", "isExpanded": false, "label": "484 ASSERT_FAIL", "size": 150, "truncLabel": "484 ASSERT_FAIL"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "485 JUMPDEST\n486 ADD\n487 SLOAD\n488 SWAP1\n489 POP\n490 POP\n491 POP\n492 JUMP", "id": "372", "isExpanded": false, "label": "485 JUMPDEST\n486 ADD\n487 SLOAD\n488 SWAP1\n489 POP\n490 POP\n(click to expand +)", "size": 150, "truncLabel": "485 JUMPDEST\n486 ADD\n487 SLOAD\n488 SWAP1\n489 POP\n490 POP\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "285 JUMPDEST\n286 STOP", "id": "373", "isExpanded": false, "label": "285 JUMPDEST\n286 STOP", "size": 150, "truncLabel": "285 JUMPDEST\n286 STOP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "109 DUP1\n110 PUSH4 0xb34c3610\n115 EQ\n116 PUSH2 0x0142\n119 JUMPI", "id": "374", "isExpanded": false, "label": "109 DUP1\n110 PUSH4 0xb34c3610\n115 EQ\n116 PUSH2 0x0142\n119 JUMPI", "size": 150, "truncLabel": "109 DUP1\n110 PUSH4 0xb34c3610\n115 EQ\n116 PUSH2 0x0142\n119 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "287 JUMPDEST\n288 CALLVALUE\n289 ISZERO\n290 PUSH2 0x012a\n293 JUMPI", "id": "375", "isExpanded": false, "label": "287 JUMPDEST\n288 CALLVALUE\n289 ISZERO\n290 PUSH2 0x012a\n293 JUMPI", "size": 150, "truncLabel": "287 JUMPDEST\n288 CALLVALUE\n289 ISZERO\n290 PUSH2 0x012a\n293 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "294 PUSH1 0x00\n296 DUP1\n297 REVERT", "id": "376", "isExpanded": false, "label": "294 PUSH1 0x00\n296 DUP1\n297 REVERT", "size": 150, "truncLabel": "294 PUSH1 0x00\n296 DUP1\n297 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "298 JUMPDEST\n299 PUSH2 0x0140\n302 PUSH1 0x04\n304 DUP1\n305 DUP1\n306 CALLDATALOAD\n307 SWAP1\n308 PUSH1 0x20\n310 ADD\n311 SWAP1\n312 SWAP2\n313 SWAP1\n314 POP\n315 POP\n316 PUSH2 0x01ed\n319 JUMP", "id": "377", "isExpanded": false, "label": "298 JUMPDEST\n299 PUSH2 0x0140\n302 PUSH1 0x04\n304 DUP1\n305 DUP1\n306 CALLDATALOAD\n(click to expand +)", "size": 150, "truncLabel": "298 JUMPDEST\n299 PUSH2 0x0140\n302 PUSH1 0x04\n304 DUP1\n305 DUP1\n306 CALLDATALOAD\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "493 JUMPDEST\n494 PUSH1 0x00\n496 DUP2\n497 PUSH1 0x01\n499 DUP2\n500 ISZERO\n501 ISZERO\n502 PUSH2 0x01fb\n505 JUMPI", "id": "378", "isExpanded": false, "label": "493 JUMPDEST\n494 PUSH1 0x00\n496 DUP2\n497 PUSH1 0x01\n499 DUP2\n500 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "493 JUMPDEST\n494 PUSH1 0x00\n496 DUP2\n497 PUSH1 0x01\n499 DUP2\n500 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "506 ASSERT_FAIL", "id": "379", "isExpanded": false, "label": "506 ASSERT_FAIL", "size": 150, "truncLabel": "506 ASSERT_FAIL"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "507 JUMPDEST\n508 DIV\n509 SWAP1\n510 POP\n511 POP\n512 POP\n513 JUMP", "id": "380", "isExpanded": false, "label": "507 JUMPDEST\n508 DIV\n509 SWAP1\n510 POP\n511 POP\n512 POP\n(click to expand +)", "size": 150, "truncLabel": "507 JUMPDEST\n508 DIV\n509 SWAP1\n510 POP\n511 POP\n512 POP\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 STOP", "id": "381", "isExpanded": false, "label": "320 JUMPDEST\n321 STOP", "size": 150, "truncLabel": "320 JUMPDEST\n321 STOP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "120 DUP1\n121 PUSH4 0xb630d706\n126 EQ\n127 PUSH2 0x0157\n130 JUMPI", "id": "382", "isExpanded": false, "label": "120 DUP1\n121 PUSH4 0xb630d706\n126 EQ\n127 PUSH2 0x0157\n130 JUMPI", "size": 150, "truncLabel": "120 DUP1\n121 PUSH4 0xb630d706\n126 EQ\n127 PUSH2 0x0157\n130 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "322 JUMPDEST\n323 CALLVALUE\n324 ISZERO\n325 PUSH2 0x014d\n328 JUMPI", "id": "383", "isExpanded": false, "label": "322 JUMPDEST\n323 CALLVALUE\n324 ISZERO\n325 PUSH2 0x014d\n328 JUMPI", "size": 150, "truncLabel": "322 JUMPDEST\n323 CALLVALUE\n324 ISZERO\n325 PUSH2 0x014d\n328 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "329 PUSH1 0x00\n331 DUP1\n332 REVERT", "id": "384", "isExpanded": false, "label": "329 PUSH1 0x00\n331 DUP1\n332 REVERT", "size": 150, "truncLabel": "329 PUSH1 0x00\n331 DUP1\n332 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "333 JUMPDEST\n334 PUSH2 0x0155\n337 PUSH2 0x0202\n340 JUMP", "id": "385", "isExpanded": false, "label": "333 JUMPDEST\n334 PUSH2 0x0155\n337 PUSH2 0x0202\n340 JUMP", "size": 150, "truncLabel": "333 JUMPDEST\n334 PUSH2 0x0155\n337 PUSH2 0x0202\n340 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "514 JUMPDEST\n515 PUSH1 0x00\n517 PUSH1 0x01\n519 SWAP1\n520 POP\n521 PUSH1 0x00\n523 DUP2\n524 EQ\n525 ISZERO\n526 ISZERO\n527 PUSH2 0x0214\n530 JUMPI", "id": "386", "isExpanded": false, "label": "514 JUMPDEST\n515 PUSH1 0x00\n517 PUSH1 0x01\n519 SWAP1\n520 POP\n521 PUSH1 0x00\n(click to expand +)", "size": 150, "truncLabel": "514 JUMPDEST\n515 PUSH1 0x00\n517 PUSH1 0x01\n519 SWAP1\n520 POP\n521 PUSH1 0x00\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "531 ASSERT_FAIL", "id": "387", "isExpanded": false, "label": "531 ASSERT_FAIL", "size": 150, "truncLabel": "531 ASSERT_FAIL"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "131 DUP1\n132 PUSH4 0xf44f13d8\n137 EQ\n138 PUSH2 0x017a\n141 JUMPI", "id": "388", "isExpanded": false, "label": "131 DUP1\n132 PUSH4 0xf44f13d8\n137 EQ\n138 PUSH2 0x017a\n141 JUMPI", "size": 150, "truncLabel": "131 DUP1\n132 PUSH4 0xf44f13d8\n137 EQ\n138 PUSH2 0x017a\n141 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "343 JUMPDEST\n344 CALLVALUE\n345 ISZERO\n346 PUSH2 0x0162\n349 JUMPI", "id": "389", "isExpanded": false, "label": "343 JUMPDEST\n344 CALLVALUE\n345 ISZERO\n346 PUSH2 0x0162\n349 JUMPI", "size": 150, "truncLabel": "343 JUMPDEST\n344 CALLVALUE\n345 ISZERO\n346 PUSH2 0x0162\n349 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "350 PUSH1 0x00\n352 DUP1\n353 REVERT", "id": "390", "isExpanded": false, "label": "350 PUSH1 0x00\n352 DUP1\n353 REVERT", "size": 150, "truncLabel": "350 PUSH1 0x00\n352 DUP1\n353 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "354 JUMPDEST\n355 PUSH2 0x0178\n358 PUSH1 0x04\n360 DUP1\n361 DUP1\n362 CALLDATALOAD\n363 SWAP1\n364 PUSH1 0x20\n366 ADD\n367 SWAP1\n368 SWAP2\n369 SWAP1\n370 POP\n371 POP\n372 PUSH2 0x0217\n375 JUMP", "id": "391", "isExpanded": false, "label": "354 JUMPDEST\n355 PUSH2 0x0178\n358 PUSH1 0x04\n360 DUP1\n361 DUP1\n362 CALLDATALOAD\n(click to expand +)", "size": 150, "truncLabel": "354 JUMPDEST\n355 PUSH2 0x0178\n358 PUSH1 0x04\n360 DUP1\n361 DUP1\n362 CALLDATALOAD\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "535 JUMPDEST\n536 PUSH1 0x00\n538 DUP1\n539 DUP3\n540 GT\n541 ISZERO\n542 PUSH2 0x0231\n545 JUMPI", "id": "392", "isExpanded": false, "label": "535 JUMPDEST\n536 PUSH1 0x00\n538 DUP1\n539 DUP3\n540 GT\n541 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "535 JUMPDEST\n536 PUSH1 0x00\n538 DUP1\n539 DUP3\n540 GT\n541 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "546 DUP2\n547 PUSH1 0x01\n549 DUP2\n550 ISZERO\n551 ISZERO\n552 PUSH2 0x022d\n555 JUMPI", "id": "393", "isExpanded": false, "label": "546 DUP2\n547 PUSH1 0x01\n549 DUP2\n550 ISZERO\n551 ISZERO\n552 PUSH2 0x022d\n(click to expand +)", "size": 150, "truncLabel": "546 DUP2\n547 PUSH1 0x01\n549 DUP2\n550 ISZERO\n551 ISZERO\n552 PUSH2 0x022d\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "561 JUMPDEST\n562 POP\n563 POP\n564 JUMP", "id": "394", "isExpanded": false, "label": "561 JUMPDEST\n562 POP\n563 POP\n564 JUMP", "size": 150, "truncLabel": "561 JUMPDEST\n562 POP\n563 POP\n564 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "376 JUMPDEST\n377 STOP", "id": "395", "isExpanded": false, "label": "376 JUMPDEST\n377 STOP", "size": 150, "truncLabel": "376 JUMPDEST\n377 STOP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "556 ASSERT_FAIL", "id": "396", "isExpanded": false, "label": "556 ASSERT_FAIL", "size": 150, "truncLabel": "556 ASSERT_FAIL"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "557 JUMPDEST\n558 DIV\n559 SWAP1\n560 POP\n561 JUMPDEST\n562 POP\n563 POP\n564 JUMP", "id": "397", "isExpanded": false, "label": "557 JUMPDEST\n558 DIV\n559 SWAP1\n560 POP\n561 JUMPDEST\n562 POP\n(click to expand +)", "size": 150, "truncLabel": "557 JUMPDEST\n558 DIV\n559 SWAP1\n560 POP\n561 JUMPDEST\n562 POP\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "376 JUMPDEST\n377 STOP", "id": "398", "isExpanded": false, "label": "376 JUMPDEST\n377 STOP", "size": 150, "truncLabel": "376 JUMPDEST\n377 STOP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "142 JUMPDEST\n143 PUSH1 0x00\n145 DUP1\n146 REVERT", "id": "399", "isExpanded": false, "label": "142 JUMPDEST\n143 PUSH1 0x00\n145 DUP1\n146 REVERT", "size": 150, "truncLabel": "142 JUMPDEST\n143 PUSH1 0x00\n145 DUP1\n146 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "378 JUMPDEST\n379 CALLVALUE\n380 ISZERO\n381 PUSH2 0x0185\n384 JUMPI", "id": "400", "isExpanded": false, "label": "378 JUMPDEST\n379 CALLVALUE\n380 ISZERO\n381 PUSH2 0x0185\n384 JUMPI", "size": 150, "truncLabel": "378 JUMPDEST\n379 CALLVALUE\n380 ISZERO\n381 PUSH2 0x0185\n384 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "385 PUSH1 0x00\n387 DUP1\n388 REVERT", "id": "401", "isExpanded": false, "label": "385 PUSH1 0x00\n387 DUP1\n388 REVERT", "size": 150, "truncLabel": "385 PUSH1 0x00\n387 DUP1\n388 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "389 JUMPDEST\n390 PUSH2 0x018d\n393 PUSH2 0x0235\n396 JUMP", "id": "402", "isExpanded": false, "label": "389 JUMPDEST\n390 PUSH2 0x018d\n393 PUSH2 0x0235\n396 JUMP", "size": 150, "truncLabel": "389 JUMPDEST\n390 PUSH2 0x018d\n393 PUSH2 0x0235\n396 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "565 JUMPDEST\n566 PUSH1 0x00\n568 PUSH1 0x01\n570 SWAP1\n571 POP\n572 PUSH1 0x00\n574 DUP2\n575 GT\n576 ISZERO\n577 ISZERO\n578 PUSH2 0x0247\n581 JUMPI", "id": "403", "isExpanded": false, "label": "565 JUMPDEST\n566 PUSH1 0x00\n568 PUSH1 0x01\n570 SWAP1\n571 POP\n572 PUSH1 0x00\n(click to expand +)", "size": 150, "truncLabel": "565 JUMPDEST\n566 PUSH1 0x00\n568 PUSH1 0x01\n570 SWAP1\n571 POP\n572 PUSH1 0x00\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "583 JUMPDEST\n584 POP\n585 JUMP", "id": "404", "isExpanded": false, "label": "583 JUMPDEST\n584 POP\n585 JUMP", "size": 150, "truncLabel": "583 JUMPDEST\n584 POP\n585 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "397 JUMPDEST\n398 STOP", "id": "405", "isExpanded": false, "label": "397 JUMPDEST\n398 STOP", "size": 150, "truncLabel": "397 JUMPDEST\n398 STOP"}];
+        var edges = [{"arrows": "to", "from": "336", "label": "ULE(4, 10_calldatasize)", "smooth": {"type": "cubicBezier"}, "to": "337"}, {"arrows": "to", "from": "336", "label": "Not(ULE(4, 10_calldatasize))", "smooth": {"type": "cubicBezier"}, "to": "338"}, {"arrows": "to", "from": "337", "label": "Not(And(10_calldata[3] == 0x7c,        10_calldata[2] == 39,        10_calldata[1] == 0xd4,        10_calldata[0] == 1))", "smooth": {"type": "cubicBezier"}, "to": "339"}, {"arrows": "to", "from": "337", "label": "And(10_calldata[3] == 0x7c,    10_calldata[2] == 39,    10_calldata[1] == 0xd4,    10_calldata[0] == 1)", "smooth": {"type": "cubicBezier"}, "to": "340"}, {"arrows": "to", "from": "340", "label": "Not(call_value10 == 0)", "smooth": {"type": "cubicBezier"}, "to": "341"}, {"arrows": "to", "from": "340", "label": "call_value10 == 0", "smooth": {"type": "cubicBezier"}, "to": "342"}, {"arrows": "to", "from": "342", "label": "", "smooth": {"type": "cubicBezier"}, "to": "343"}, {"arrows": "to", "from": "343", "label": "Not(ULE(8,        Concat(10_calldata[4],               10_calldata[5],               10_calldata[6],               10_calldata[7],               10_calldata[8],               10_calldata[9],               10_calldata[10],               10_calldata[11],               10_calldata[12],               10_calldata[13],               10_calldata[14],               10_calldata[15],               10_calldata[16],               10_calldata[17],               10_calldata[18],               10_calldata[19],               10_calldata[20],               10_calldata[21],               10_calldata[22],               10_calldata[23],               10_calldata[24],               10_calldata[25],               10_calldata[26],               10_calldata[27],               10_calldata[28],               10_calldata[29],               10_calldata[30],               10_calldata[31],               10_calldata[32],               10_calldata[33],               10_calldata[34],               10_calldata[35])))", "smooth": {"type": "cubicBezier"}, "to": "344"}, {"arrows": "to", "from": "343", "label": "ULE(8,    Concat(10_calldata[4],           10_calldata[5],           10_calldata[6],           10_calldata[7],           10_calldata[8],           10_calldata[9],           10_calldata[10],           10_calldata[11],           10_calldata[12],           10_calldata[13],           10_calldata[14],           10_calldata[15],           10_calldata[16],           10_calldata[17],           10_calldata[18],           10_calldata[19],           10_calldata[20],           10_calldata[21],           10_calldata[22],           10_calldata[23],           10_calldata[24],           10_calldata[25],           10_calldata[26],           10_calldata[27],           10_calldata[28],           10_calldata[29],           10_calldata[30],           10_calldata[31],           10_calldata[32],           10_calldata[33],           10_calldata[34],           10_calldata[35]))", "smooth": {"type": "cubicBezier"}, "to": "345"}, {"arrows": "to", "from": "345", "label": "", "smooth": {"type": "cubicBezier"}, "to": "346"}, {"arrows": "to", "from": "344", "label": "ULE(8,    Concat(10_calldata[4],           10_calldata[5],           10_calldata[6],           10_calldata[7],           10_calldata[8],           10_calldata[9],           10_calldata[10],           10_calldata[11],           10_calldata[12],           10_calldata[13],           10_calldata[14],           10_calldata[15],           10_calldata[16],           10_calldata[17],           10_calldata[18],           10_calldata[19],           10_calldata[20],           10_calldata[21],           10_calldata[22],           10_calldata[23],           10_calldata[24],           10_calldata[25],           10_calldata[26],           10_calldata[27],           10_calldata[28],           10_calldata[29],           10_calldata[30],           10_calldata[31],           10_calldata[32],           10_calldata[33],           10_calldata[34],           10_calldata[35]))", "smooth": {"type": "cubicBezier"}, "to": "347"}, {"arrows": "to", "from": "344", "label": "Not(ULE(8,        Concat(10_calldata[4],               10_calldata[5],               10_calldata[6],               10_calldata[7],               10_calldata[8],               10_calldata[9],               10_calldata[10],               10_calldata[11],               10_calldata[12],               10_calldata[13],               10_calldata[14],               10_calldata[15],               10_calldata[16],               10_calldata[17],               10_calldata[18],               10_calldata[19],               10_calldata[20],               10_calldata[21],               10_calldata[22],               10_calldata[23],               10_calldata[24],               10_calldata[25],               10_calldata[26],               10_calldata[27],               10_calldata[28],               10_calldata[29],               10_calldata[30],               10_calldata[31],               10_calldata[32],               10_calldata[33],               10_calldata[34],               10_calldata[35])))", "smooth": {"type": "cubicBezier"}, "to": "348"}, {"arrows": "to", "from": "348", "label": "", "smooth": {"type": "cubicBezier"}, "to": "349"}, {"arrows": "to", "from": "339", "label": "Not(And(10_calldata[3] == 0xb5,        10_calldata[2] == 85,        10_calldata[1] == 0x64,        10_calldata[0] == 84))", "smooth": {"type": "cubicBezier"}, "to": "350"}, {"arrows": "to", "from": "339", "label": "And(10_calldata[3] == 0xb5,    10_calldata[2] == 85,    10_calldata[1] == 0x64,    10_calldata[0] == 84)", "smooth": {"type": "cubicBezier"}, "to": "351"}, {"arrows": "to", "from": "351", "label": "Not(call_value10 == 0)", "smooth": {"type": "cubicBezier"}, "to": "352"}, {"arrows": "to", "from": "351", "label": "call_value10 == 0", "smooth": {"type": "cubicBezier"}, "to": "353"}, {"arrows": "to", "from": "353", "label": "", "smooth": {"type": "cubicBezier"}, "to": "354"}, {"arrows": "to", "from": "354", "label": "And(10_calldata[35] == 23,    10_calldata[34] == 0,    10_calldata[33] == 0,    10_calldata[32] == 0,    10_calldata[31] == 0,    10_calldata[30] == 0,    10_calldata[29] == 0,    10_calldata[28] == 0,    10_calldata[27] == 0,    10_calldata[26] == 0,    10_calldata[25] == 0,    10_calldata[24] == 0,    10_calldata[23] == 0,    10_calldata[22] == 0,    10_calldata[21] == 0,    10_calldata[20] == 0,    10_calldata[19] == 0,    10_calldata[18] == 0,    10_calldata[17] == 0,    10_calldata[16] == 0,    10_calldata[15] == 0,    10_calldata[14] == 0,    10_calldata[13] == 0,    10_calldata[12] == 0,    10_calldata[11] == 0,    10_calldata[10] == 0,    10_calldata[9] == 0,    10_calldata[8] == 0,    10_calldata[7] == 0,    10_calldata[6] == 0,    10_calldata[5] == 0,    10_calldata[4] == 0)", "smooth": {"type": "cubicBezier"}, "to": "355"}, {"arrows": "to", "from": "354", "label": "Not(And(10_calldata[35] == 23,        10_calldata[34] == 0,        10_calldata[33] == 0,        10_calldata[32] == 0,        10_calldata[31] == 0,        10_calldata[30] == 0,        10_calldata[29] == 0,        10_calldata[28] == 0,        10_calldata[27] == 0,        10_calldata[26] == 0,        10_calldata[25] == 0,        10_calldata[24] == 0,        10_calldata[23] == 0,        10_calldata[22] == 0,        10_calldata[21] == 0,        10_calldata[20] == 0,        10_calldata[19] == 0,        10_calldata[18] == 0,        10_calldata[17] == 0,        10_calldata[16] == 0,        10_calldata[15] == 0,        10_calldata[14] == 0,        10_calldata[13] == 0,        10_calldata[12] == 0,        10_calldata[11] == 0,        10_calldata[10] == 0,        10_calldata[9] == 0,        10_calldata[8] == 0,        10_calldata[7] == 0,        10_calldata[6] == 0,        10_calldata[5] == 0,        10_calldata[4] == 0))", "smooth": {"type": "cubicBezier"}, "to": "356"}, {"arrows": "to", "from": "356", "label": "", "smooth": {"type": "cubicBezier"}, "to": "357"}, {"arrows": "to", "from": "350", "label": "Not(And(10_calldata[3] == 20,        10_calldata[2] == 95,        10_calldata[1] == 55,        10_calldata[0] == 0x78))", "smooth": {"type": "cubicBezier"}, "to": "358"}, {"arrows": "to", "from": "350", "label": "And(10_calldata[3] == 20,    10_calldata[2] == 95,    10_calldata[1] == 55,    10_calldata[0] == 0x78)", "smooth": {"type": "cubicBezier"}, "to": "359"}, {"arrows": "to", "from": "359", "label": "Not(call_value10 == 0)", "smooth": {"type": "cubicBezier"}, "to": "360"}, {"arrows": "to", "from": "359", "label": "call_value10 == 0", "smooth": {"type": "cubicBezier"}, "to": "361"}, {"arrows": "to", "from": "361", "label": "", "smooth": {"type": "cubicBezier"}, "to": "362"}, {"arrows": "to", "from": "362", "label": "And(10_calldata[35] == 23,    10_calldata[34] == 0,    10_calldata[33] == 0,    10_calldata[32] == 0,    10_calldata[31] == 0,    10_calldata[30] == 0,    10_calldata[29] == 0,    10_calldata[28] == 0,    10_calldata[27] == 0,    10_calldata[26] == 0,    10_calldata[25] == 0,    10_calldata[24] == 0,    10_calldata[23] == 0,    10_calldata[22] == 0,    10_calldata[21] == 0,    10_calldata[20] == 0,    10_calldata[19] == 0,    10_calldata[18] == 0,    10_calldata[17] == 0,    10_calldata[16] == 0,    10_calldata[15] == 0,    10_calldata[14] == 0,    10_calldata[13] == 0,    10_calldata[12] == 0,    10_calldata[11] == 0,    10_calldata[10] == 0,    10_calldata[9] == 0,    10_calldata[8] == 0,    10_calldata[7] == 0,    10_calldata[6] == 0,    10_calldata[5] == 0,    10_calldata[4] == 0)", "smooth": {"type": "cubicBezier"}, "to": "363"}, {"arrows": "to", "from": "362", "label": "Not(And(10_calldata[35] == 23,        10_calldata[34] == 0,        10_calldata[33] == 0,        10_calldata[32] == 0,        10_calldata[31] == 0,        10_calldata[30] == 0,        10_calldata[29] == 0,        10_calldata[28] == 0,        10_calldata[27] == 0,        10_calldata[26] == 0,        10_calldata[25] == 0,        10_calldata[24] == 0,        10_calldata[23] == 0,        10_calldata[22] == 0,        10_calldata[21] == 0,        10_calldata[20] == 0,        10_calldata[19] == 0,        10_calldata[18] == 0,        10_calldata[17] == 0,        10_calldata[16] == 0,        10_calldata[15] == 0,        10_calldata[14] == 0,        10_calldata[13] == 0,        10_calldata[12] == 0,        10_calldata[11] == 0,        10_calldata[10] == 0,        10_calldata[9] == 0,        10_calldata[8] == 0,        10_calldata[7] == 0,        10_calldata[6] == 0,        10_calldata[5] == 0,        10_calldata[4] == 0))", "smooth": {"type": "cubicBezier"}, "to": "364"}, {"arrows": "to", "from": "364", "label": "", "smooth": {"type": "cubicBezier"}, "to": "365"}, {"arrows": "to", "from": "358", "label": "Not(And(10_calldata[3] == 0xea,        10_calldata[2] == 56,        10_calldata[1] == 0xdd,        10_calldata[0] == 0x92))", "smooth": {"type": "cubicBezier"}, "to": "366"}, {"arrows": "to", "from": "358", "label": "And(10_calldata[3] == 0xea,    10_calldata[2] == 56,    10_calldata[1] == 0xdd,    10_calldata[0] == 0x92)", "smooth": {"type": "cubicBezier"}, "to": "367"}, {"arrows": "to", "from": "367", "label": "Not(call_value10 == 0)", "smooth": {"type": "cubicBezier"}, "to": "368"}, {"arrows": "to", "from": "367", "label": "call_value10 == 0", "smooth": {"type": "cubicBezier"}, "to": "369"}, {"arrows": "to", "from": "369", "label": "", "smooth": {"type": "cubicBezier"}, "to": "370"}, {"arrows": "to", "from": "370", "label": "ULE(8,    Concat(10_calldata[4],           10_calldata[5],           10_calldata[6],           10_calldata[7],           10_calldata[8],           10_calldata[9],           10_calldata[10],           10_calldata[11],           10_calldata[12],           10_calldata[13],           10_calldata[14],           10_calldata[15],           10_calldata[16],           10_calldata[17],           10_calldata[18],           10_calldata[19],           10_calldata[20],           10_calldata[21],           10_calldata[22],           10_calldata[23],           10_calldata[24],           10_calldata[25],           10_calldata[26],           10_calldata[27],           10_calldata[28],           10_calldata[29],           10_calldata[30],           10_calldata[31],           10_calldata[32],           10_calldata[33],           10_calldata[34],           10_calldata[35]))", "smooth": {"type": "cubicBezier"}, "to": "371"}, {"arrows": "to", "from": "370", "label": "Not(ULE(8,        Concat(10_calldata[4],               10_calldata[5],               10_calldata[6],               10_calldata[7],               10_calldata[8],               10_calldata[9],               10_calldata[10],               10_calldata[11],               10_calldata[12],               10_calldata[13],               10_calldata[14],               10_calldata[15],               10_calldata[16],               10_calldata[17],               10_calldata[18],               10_calldata[19],               10_calldata[20],               10_calldata[21],               10_calldata[22],               10_calldata[23],               10_calldata[24],               10_calldata[25],               10_calldata[26],               10_calldata[27],               10_calldata[28],               10_calldata[29],               10_calldata[30],               10_calldata[31],               10_calldata[32],               10_calldata[33],               10_calldata[34],               10_calldata[35])))", "smooth": {"type": "cubicBezier"}, "to": "372"}, {"arrows": "to", "from": "372", "label": "", "smooth": {"type": "cubicBezier"}, "to": "373"}, {"arrows": "to", "from": "366", "label": "Not(And(10_calldata[3] == 0xf1,        10_calldata[2] == 0x99,        10_calldata[1] == 0x82,        10_calldata[0] == 0xa0))", "smooth": {"type": "cubicBezier"}, "to": "374"}, {"arrows": "to", "from": "366", "label": "And(10_calldata[3] == 0xf1,    10_calldata[2] == 0x99,    10_calldata[1] == 0x82,    10_calldata[0] == 0xa0)", "smooth": {"type": "cubicBezier"}, "to": "375"}, {"arrows": "to", "from": "375", "label": "Not(call_value10 == 0)", "smooth": {"type": "cubicBezier"}, "to": "376"}, {"arrows": "to", "from": "375", "label": "call_value10 == 0", "smooth": {"type": "cubicBezier"}, "to": "377"}, {"arrows": "to", "from": "377", "label": "", "smooth": {"type": "cubicBezier"}, "to": "378"}, {"arrows": "to", "from": "378", "label": "And(10_calldata[35] == 0,    10_calldata[34] == 0,    10_calldata[33] == 0,    10_calldata[32] == 0,    10_calldata[31] == 0,    10_calldata[30] == 0,    10_calldata[29] == 0,    10_calldata[28] == 0,    10_calldata[27] == 0,    10_calldata[26] == 0,    10_calldata[25] == 0,    10_calldata[24] == 0,    10_calldata[23] == 0,    10_calldata[22] == 0,    10_calldata[21] == 0,    10_calldata[20] == 0,    10_calldata[19] == 0,    10_calldata[18] == 0,    10_calldata[17] == 0,    10_calldata[16] == 0,    10_calldata[15] == 0,    10_calldata[14] == 0,    10_calldata[13] == 0,    10_calldata[12] == 0,    10_calldata[11] == 0,    10_calldata[10] == 0,    10_calldata[9] == 0,    10_calldata[8] == 0,    10_calldata[7] == 0,    10_calldata[6] == 0,    10_calldata[5] == 0,    10_calldata[4] == 0)", "smooth": {"type": "cubicBezier"}, "to": "379"}, {"arrows": "to", "from": "378", "label": "Not(And(10_calldata[35] == 0,        10_calldata[34] == 0,        10_calldata[33] == 0,        10_calldata[32] == 0,        10_calldata[31] == 0,        10_calldata[30] == 0,        10_calldata[29] == 0,        10_calldata[28] == 0,        10_calldata[27] == 0,        10_calldata[26] == 0,        10_calldata[25] == 0,        10_calldata[24] == 0,        10_calldata[23] == 0,        10_calldata[22] == 0,        10_calldata[21] == 0,        10_calldata[20] == 0,        10_calldata[19] == 0,        10_calldata[18] == 0,        10_calldata[17] == 0,        10_calldata[16] == 0,        10_calldata[15] == 0,        10_calldata[14] == 0,        10_calldata[13] == 0,        10_calldata[12] == 0,        10_calldata[11] == 0,        10_calldata[10] == 0,        10_calldata[9] == 0,        10_calldata[8] == 0,        10_calldata[7] == 0,        10_calldata[6] == 0,        10_calldata[5] == 0,        10_calldata[4] == 0))", "smooth": {"type": "cubicBezier"}, "to": "380"}, {"arrows": "to", "from": "380", "label": "", "smooth": {"type": "cubicBezier"}, "to": "381"}, {"arrows": "to", "from": "374", "label": "Not(And(10_calldata[3] == 16,        10_calldata[2] == 54,        10_calldata[1] == 76,        10_calldata[0] == 0xb3))", "smooth": {"type": "cubicBezier"}, "to": "382"}, {"arrows": "to", "from": "374", "label": "And(10_calldata[3] == 16,    10_calldata[2] == 54,    10_calldata[1] == 76,    10_calldata[0] == 0xb3)", "smooth": {"type": "cubicBezier"}, "to": "383"}, {"arrows": "to", "from": "383", "label": "Not(call_value10 == 0)", "smooth": {"type": "cubicBezier"}, "to": "384"}, {"arrows": "to", "from": "383", "label": "call_value10 == 0", "smooth": {"type": "cubicBezier"}, "to": "385"}, {"arrows": "to", "from": "385", "label": "", "smooth": {"type": "cubicBezier"}, "to": "386"}, {"arrows": "to", "from": "386", "label": "True", "smooth": {"type": "cubicBezier"}, "to": "387"}, {"arrows": "to", "from": "382", "label": "Not(And(10_calldata[3] == 6,        10_calldata[2] == 0xd7,        10_calldata[1] == 48,        10_calldata[0] == 0xb6))", "smooth": {"type": "cubicBezier"}, "to": "388"}, {"arrows": "to", "from": "382", "label": "And(10_calldata[3] == 6,    10_calldata[2] == 0xd7,    10_calldata[1] == 48,    10_calldata[0] == 0xb6)", "smooth": {"type": "cubicBezier"}, "to": "389"}, {"arrows": "to", "from": "389", "label": "Not(call_value10 == 0)", "smooth": {"type": "cubicBezier"}, "to": "390"}, {"arrows": "to", "from": "389", "label": "call_value10 == 0", "smooth": {"type": "cubicBezier"}, "to": "391"}, {"arrows": "to", "from": "391", "label": "", "smooth": {"type": "cubicBezier"}, "to": "392"}, {"arrows": "to", "from": "392", "label": "Not(And(10_calldata[35] == 0,        10_calldata[34] == 0,        10_calldata[33] == 0,        10_calldata[32] == 0,        10_calldata[31] == 0,        10_calldata[30] == 0,        10_calldata[29] == 0,        10_calldata[28] == 0,        10_calldata[27] == 0,        10_calldata[26] == 0,        10_calldata[25] == 0,        10_calldata[24] == 0,        10_calldata[23] == 0,        10_calldata[22] == 0,        10_calldata[21] == 0,        10_calldata[20] == 0,        10_calldata[19] == 0,        10_calldata[18] == 0,        10_calldata[17] == 0,        10_calldata[16] == 0,        10_calldata[15] == 0,        10_calldata[14] == 0,        10_calldata[13] == 0,        10_calldata[12] == 0,        10_calldata[11] == 0,        10_calldata[10] == 0,        10_calldata[9] == 0,        10_calldata[8] == 0,        10_calldata[7] == 0,        10_calldata[6] == 0,        10_calldata[5] == 0,        10_calldata[4] == 0))", "smooth": {"type": "cubicBezier"}, "to": "393"}, {"arrows": "to", "from": "392", "label": "And(10_calldata[35] == 0,    10_calldata[34] == 0,    10_calldata[33] == 0,    10_calldata[32] == 0,    10_calldata[31] == 0,    10_calldata[30] == 0,    10_calldata[29] == 0,    10_calldata[28] == 0,    10_calldata[27] == 0,    10_calldata[26] == 0,    10_calldata[25] == 0,    10_calldata[24] == 0,    10_calldata[23] == 0,    10_calldata[22] == 0,    10_calldata[21] == 0,    10_calldata[20] == 0,    10_calldata[19] == 0,    10_calldata[18] == 0,    10_calldata[17] == 0,    10_calldata[16] == 0,    10_calldata[15] == 0,    10_calldata[14] == 0,    10_calldata[13] == 0,    10_calldata[12] == 0,    10_calldata[11] == 0,    10_calldata[10] == 0,    10_calldata[9] == 0,    10_calldata[8] == 0,    10_calldata[7] == 0,    10_calldata[6] == 0,    10_calldata[5] == 0,    10_calldata[4] == 0)", "smooth": {"type": "cubicBezier"}, "to": "394"}, {"arrows": "to", "from": "394", "label": "", "smooth": {"type": "cubicBezier"}, "to": "395"}, {"arrows": "to", "from": "393", "label": "And(10_calldata[35] == 0,    10_calldata[34] == 0,    10_calldata[33] == 0,    10_calldata[32] == 0,    10_calldata[31] == 0,    10_calldata[30] == 0,    10_calldata[29] == 0,    10_calldata[28] == 0,    10_calldata[27] == 0,    10_calldata[26] == 0,    10_calldata[25] == 0,    10_calldata[24] == 0,    10_calldata[23] == 0,    10_calldata[22] == 0,    10_calldata[21] == 0,    10_calldata[20] == 0,    10_calldata[19] == 0,    10_calldata[18] == 0,    10_calldata[17] == 0,    10_calldata[16] == 0,    10_calldata[15] == 0,    10_calldata[14] == 0,    10_calldata[13] == 0,    10_calldata[12] == 0,    10_calldata[11] == 0,    10_calldata[10] == 0,    10_calldata[9] == 0,    10_calldata[8] == 0,    10_calldata[7] == 0,    10_calldata[6] == 0,    10_calldata[5] == 0,    10_calldata[4] == 0)", "smooth": {"type": "cubicBezier"}, "to": "396"}, {"arrows": "to", "from": "393", "label": "Not(And(10_calldata[35] == 0,        10_calldata[34] == 0,        10_calldata[33] == 0,        10_calldata[32] == 0,        10_calldata[31] == 0,        10_calldata[30] == 0,        10_calldata[29] == 0,        10_calldata[28] == 0,        10_calldata[27] == 0,        10_calldata[26] == 0,        10_calldata[25] == 0,        10_calldata[24] == 0,        10_calldata[23] == 0,        10_calldata[22] == 0,        10_calldata[21] == 0,        10_calldata[20] == 0,        10_calldata[19] == 0,        10_calldata[18] == 0,        10_calldata[17] == 0,        10_calldata[16] == 0,        10_calldata[15] == 0,        10_calldata[14] == 0,        10_calldata[13] == 0,        10_calldata[12] == 0,        10_calldata[11] == 0,        10_calldata[10] == 0,        10_calldata[9] == 0,        10_calldata[8] == 0,        10_calldata[7] == 0,        10_calldata[6] == 0,        10_calldata[5] == 0,        10_calldata[4] == 0))", "smooth": {"type": "cubicBezier"}, "to": "397"}, {"arrows": "to", "from": "397", "label": "", "smooth": {"type": "cubicBezier"}, "to": "398"}, {"arrows": "to", "from": "388", "label": "Not(And(10_calldata[3] == 0xd8,        10_calldata[2] == 19,        10_calldata[1] == 79,        10_calldata[0] == 0xf4))", "smooth": {"type": "cubicBezier"}, "to": "399"}, {"arrows": "to", "from": "388", "label": "And(10_calldata[3] == 0xd8,    10_calldata[2] == 19,    10_calldata[1] == 79,    10_calldata[0] == 0xf4)", "smooth": {"type": "cubicBezier"}, "to": "400"}, {"arrows": "to", "from": "400", "label": "Not(call_value10 == 0)", "smooth": {"type": "cubicBezier"}, "to": "401"}, {"arrows": "to", "from": "400", "label": "call_value10 == 0", "smooth": {"type": "cubicBezier"}, "to": "402"}, {"arrows": "to", "from": "402", "label": "", "smooth": {"type": "cubicBezier"}, "to": "403"}, {"arrows": "to", "from": "403", "label": "True", "smooth": {"type": "cubicBezier"}, "to": "404"}, {"arrows": "to", "from": "404", "label": "", "smooth": {"type": "cubicBezier"}, "to": "405"}];
+    </script>
+</head>
+<body>
+<p>Mythril / Ethereum LASER Symbolic VM</p>
+<div id="mynetwork"></div>
+<script type="text/javascript">
+    var container = document.getElementById('mynetwork');
+
+    var nodesSet = new vis.DataSet(nodes);
+    var edgesSet = new vis.DataSet(edges);
+    var data = {'nodes': nodesSet, 'edges': edgesSet}
+
+    var gph = new vis.Network(container, data, options);
+    gph.on("click", function (params) {
+        // parse node id
+        var nodeID = params['nodes']['0'];
+        if (nodeID) {
+            var clickedNode = nodesSet.get(nodeID);
+
+            if(clickedNode.isExpanded) {
+                clickedNode.label = clickedNode.truncLabel;
+            }
+            else {
+                clickedNode.label = clickedNode.fullLabel;
+            }
+
+            clickedNode.isExpanded = !clickedNode.isExpanded;
+
+            nodesSet.update(clickedNode);
+        }
+    });
+</script>
+</body>
+</html>
diff --git a/tests/testdata/outputs_expected/kinds_of_calls.sol.o.easm b/tests/testdata/outputs_expected/kinds_of_calls.sol.o.easm
new file mode 100644
index 0000000000000000000000000000000000000000..571b1c66bd4283792bbb1e90ab99f607997c5d37
--- /dev/null
+++ b/tests/testdata/outputs_expected/kinds_of_calls.sol.o.easm
@@ -0,0 +1,435 @@
+0 PUSH1 0x60
+2 PUSH1 0x40
+4 MSTORE
+5 PUSH1 0x04
+7 CALLDATASIZE
+8 LT
+9 PUSH2 0x006d
+12 JUMPI
+13 PUSH1 0x00
+15 CALLDATALOAD
+16 PUSH29 0x0100000000000000000000000000000000000000000000000000000000
+46 SWAP1
+47 DIV
+48 PUSH4 0xffffffff
+53 AND
+54 DUP1
+55 PUSH4 0x141f32ff
+60 EQ
+61 PUSH2 0x0072
+64 JUMPI
+65 DUP1
+66 PUSH4 0x2e52d606
+71 EQ
+72 PUSH2 0x00b4
+75 JUMPI
+76 DUP1
+77 PUSH4 0x67e404ce
+82 EQ
+83 PUSH2 0x00dd
+86 JUMPI
+87 DUP1
+88 PUSH4 0x9b58bc26
+93 EQ
+94 PUSH2 0x0132
+97 JUMPI
+98 DUP1
+99 PUSH4 0xeea4c864
+104 EQ
+105 PUSH2 0x0174
+108 JUMPI
+109 JUMPDEST
+110 PUSH1 0x00
+112 DUP1
+113 REVERT
+114 JUMPDEST
+115 CALLVALUE
+116 ISZERO
+117 PUSH2 0x007d
+120 JUMPI
+121 PUSH1 0x00
+123 DUP1
+124 REVERT
+125 JUMPDEST
+126 PUSH2 0x00b2
+129 PUSH1 0x04
+131 DUP1
+132 DUP1
+133 CALLDATALOAD
+134 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+155 AND
+156 SWAP1
+157 PUSH1 0x20
+159 ADD
+160 SWAP1
+161 SWAP2
+162 SWAP1
+163 DUP1
+164 CALLDATALOAD
+165 SWAP1
+166 PUSH1 0x20
+168 ADD
+169 SWAP1
+170 SWAP2
+171 SWAP1
+172 POP
+173 POP
+174 PUSH2 0x01b6
+177 JUMP
+178 JUMPDEST
+179 STOP
+180 JUMPDEST
+181 CALLVALUE
+182 ISZERO
+183 PUSH2 0x00bf
+186 JUMPI
+187 PUSH1 0x00
+189 DUP1
+190 REVERT
+191 JUMPDEST
+192 PUSH2 0x00c7
+195 PUSH2 0x0273
+198 JUMP
+199 JUMPDEST
+200 PUSH1 0x40
+202 MLOAD
+203 DUP1
+204 DUP3
+205 DUP2
+206 MSTORE
+207 PUSH1 0x20
+209 ADD
+210 SWAP2
+211 POP
+212 POP
+213 PUSH1 0x40
+215 MLOAD
+216 DUP1
+217 SWAP2
+218 SUB
+219 SWAP1
+220 RETURN
+221 JUMPDEST
+222 CALLVALUE
+223 ISZERO
+224 PUSH2 0x00e8
+227 JUMPI
+228 PUSH1 0x00
+230 DUP1
+231 REVERT
+232 JUMPDEST
+233 PUSH2 0x00f0
+236 PUSH2 0x0279
+239 JUMP
+240 JUMPDEST
+241 PUSH1 0x40
+243 MLOAD
+244 DUP1
+245 DUP3
+246 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+267 AND
+268 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+289 AND
+290 DUP2
+291 MSTORE
+292 PUSH1 0x20
+294 ADD
+295 SWAP2
+296 POP
+297 POP
+298 PUSH1 0x40
+300 MLOAD
+301 DUP1
+302 SWAP2
+303 SUB
+304 SWAP1
+305 RETURN
+306 JUMPDEST
+307 CALLVALUE
+308 ISZERO
+309 PUSH2 0x013d
+312 JUMPI
+313 PUSH1 0x00
+315 DUP1
+316 REVERT
+317 JUMPDEST
+318 PUSH2 0x0172
+321 PUSH1 0x04
+323 DUP1
+324 DUP1
+325 CALLDATALOAD
+326 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+347 AND
+348 SWAP1
+349 PUSH1 0x20
+351 ADD
+352 SWAP1
+353 SWAP2
+354 SWAP1
+355 DUP1
+356 CALLDATALOAD
+357 SWAP1
+358 PUSH1 0x20
+360 ADD
+361 SWAP1
+362 SWAP2
+363 SWAP1
+364 POP
+365 POP
+366 PUSH2 0x029f
+369 JUMP
+370 JUMPDEST
+371 STOP
+372 JUMPDEST
+373 CALLVALUE
+374 ISZERO
+375 PUSH2 0x017f
+378 JUMPI
+379 PUSH1 0x00
+381 DUP1
+382 REVERT
+383 JUMPDEST
+384 PUSH2 0x01b4
+387 PUSH1 0x04
+389 DUP1
+390 DUP1
+391 CALLDATALOAD
+392 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+413 AND
+414 SWAP1
+415 PUSH1 0x20
+417 ADD
+418 SWAP1
+419 SWAP2
+420 SWAP1
+421 DUP1
+422 CALLDATALOAD
+423 SWAP1
+424 PUSH1 0x20
+426 ADD
+427 SWAP1
+428 SWAP2
+429 SWAP1
+430 POP
+431 POP
+432 PUSH2 0x035a
+435 JUMP
+436 JUMPDEST
+437 STOP
+438 JUMPDEST
+439 DUP2
+440 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+461 AND
+462 PUSH1 0x40
+464 MLOAD
+465 DUP1
+466 DUP1
+467 PUSH32 0x7365744e2875696e743235362900000000000000000000000000000000000000
+500 DUP2
+501 MSTORE
+502 POP
+503 PUSH1 0x0d
+505 ADD
+506 SWAP1
+507 POP
+508 PUSH1 0x40
+510 MLOAD
+511 DUP1
+512 SWAP2
+513 SUB
+514 SWAP1
+515 SHA3
+516 PUSH29 0x0100000000000000000000000000000000000000000000000000000000
+546 SWAP1
+547 DIV
+548 DUP3
+549 PUSH1 0x40
+551 MLOAD
+552 DUP3
+553 PUSH4 0xffffffff
+558 AND
+559 PUSH29 0x0100000000000000000000000000000000000000000000000000000000
+589 MUL
+590 DUP2
+591 MSTORE
+592 PUSH1 0x04
+594 ADD
+595 DUP1
+596 DUP3
+597 DUP2
+598 MSTORE
+599 PUSH1 0x20
+601 ADD
+602 SWAP2
+603 POP
+604 POP
+605 PUSH1 0x00
+607 PUSH1 0x40
+609 MLOAD
+610 DUP1
+611 DUP4
+612 SUB
+613 DUP2
+614 PUSH1 0x00
+616 DUP8
+617 GAS
+618 CALLCODE
+619 SWAP3
+620 POP
+621 POP
+622 POP
+623 POP
+624 POP
+625 POP
+626 JUMP
+627 JUMPDEST
+628 PUSH1 0x00
+630 SLOAD
+631 DUP2
+632 JUMP
+633 JUMPDEST
+634 PUSH1 0x01
+636 PUSH1 0x00
+638 SWAP1
+639 SLOAD
+640 SWAP1
+641 PUSH2 0x0100
+644 EXP
+645 SWAP1
+646 DIV
+647 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+668 AND
+669 DUP2
+670 JUMP
+671 JUMPDEST
+672 DUP2
+673 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+694 AND
+695 PUSH1 0x40
+697 MLOAD
+698 DUP1
+699 DUP1
+700 PUSH32 0x7365744e2875696e743235362900000000000000000000000000000000000000
+733 DUP2
+734 MSTORE
+735 POP
+736 PUSH1 0x0d
+738 ADD
+739 SWAP1
+740 POP
+741 PUSH1 0x40
+743 MLOAD
+744 DUP1
+745 SWAP2
+746 SUB
+747 SWAP1
+748 SHA3
+749 PUSH29 0x0100000000000000000000000000000000000000000000000000000000
+779 SWAP1
+780 DIV
+781 DUP3
+782 PUSH1 0x40
+784 MLOAD
+785 DUP3
+786 PUSH4 0xffffffff
+791 AND
+792 PUSH29 0x0100000000000000000000000000000000000000000000000000000000
+822 MUL
+823 DUP2
+824 MSTORE
+825 PUSH1 0x04
+827 ADD
+828 DUP1
+829 DUP3
+830 DUP2
+831 MSTORE
+832 PUSH1 0x20
+834 ADD
+835 SWAP2
+836 POP
+837 POP
+838 PUSH1 0x00
+840 PUSH1 0x40
+842 MLOAD
+843 DUP1
+844 DUP4
+845 SUB
+846 DUP2
+847 DUP7
+848 GAS
+849 DELEGATECALL
+850 SWAP3
+851 POP
+852 POP
+853 POP
+854 POP
+855 POP
+856 POP
+857 JUMP
+858 JUMPDEST
+859 DUP2
+860 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+881 AND
+882 PUSH1 0x40
+884 MLOAD
+885 DUP1
+886 DUP1
+887 PUSH32 0x7365744e2875696e743235362900000000000000000000000000000000000000
+920 DUP2
+921 MSTORE
+922 POP
+923 PUSH1 0x0d
+925 ADD
+926 SWAP1
+927 POP
+928 PUSH1 0x40
+930 MLOAD
+931 DUP1
+932 SWAP2
+933 SUB
+934 SWAP1
+935 SHA3
+936 PUSH29 0x0100000000000000000000000000000000000000000000000000000000
+966 SWAP1
+967 DIV
+968 DUP3
+969 PUSH1 0x40
+971 MLOAD
+972 DUP3
+973 PUSH4 0xffffffff
+978 AND
+979 PUSH29 0x0100000000000000000000000000000000000000000000000000000000
+1009 MUL
+1010 DUP2
+1011 MSTORE
+1012 PUSH1 0x04
+1014 ADD
+1015 DUP1
+1016 DUP3
+1017 DUP2
+1018 MSTORE
+1019 PUSH1 0x20
+1021 ADD
+1022 SWAP2
+1023 POP
+1024 POP
+1025 PUSH1 0x00
+1027 PUSH1 0x40
+1029 MLOAD
+1030 DUP1
+1031 DUP4
+1032 SUB
+1033 DUP2
+1034 PUSH1 0x00
+1036 DUP8
+1037 GAS
+1038 CALL
+1039 SWAP3
+1040 POP
+1041 POP
+1042 POP
+1043 POP
+1044 POP
+1045 POP
+1046 JUMP
+1047 STOP
diff --git a/tests/testdata/outputs_expected/kinds_of_calls.sol.o.graph.html b/tests/testdata/outputs_expected/kinds_of_calls.sol.o.graph.html
new file mode 100644
index 0000000000000000000000000000000000000000..afbd4fb17bb218121a4b878a9561dca3de4b4d6d
--- /dev/null
+++ b/tests/testdata/outputs_expected/kinds_of_calls.sol.o.graph.html
@@ -0,0 +1,62 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>Call Graph</title>
+    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.css" integrity="sha256-iq5ygGJ7021Pi7H5S+QAUXCPUfaBzfqeplbg/KlEssg=" crossorigin="anonymous" />
+    <script src="https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.js" integrity="sha256-JuQeAGbk9rG/EoRMixuy5X8syzICcvB0dj3KindZkY0=" crossorigin="anonymous"></script>
+
+    
+    <style type="text/css">
+        #mynetwork {
+          height: 100%;
+            background-color: #232625;
+        }
+        body {
+            background-color: #232625;
+            color: #ffffff;
+            font-size: 10px;
+        }
+        html, body {
+          height: 95%;
+        }
+    </style>
+    
+
+    <script>
+        var options = {"autoResize": true, "edges": {"font": {"align": "horizontal", "background": "none", "color": "#FFFFFF", "face": "arial", "multi": false, "strokeColor": "#ffffff", "strokeWidth": 0, "vadjust": 0}}, "height": "100%", "layout": {"hierarchical": {"blockShifting": true, "direction": "LR", "edgeMinimization": true, "enabled": true, "levelSeparation": 450, "nodeSpacing": 200, "parentCentralization": false, "sortMethod": "directed", "treeSpacing": 100}, "improvedLayout": true}, "manipulation": false, "nodes": {"borderWidth": 1, "borderWidthSelected": 2, "chosen": true, "color": "#000000", "font": {"align": "left", "color": "#FFFFFF"}, "shape": "box"}, "physics": {"enabled": false}, "width": "100%"};
+        var nodes = [{"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n9 PUSH2 0x006d\n12 JUMPI", "id": "168", "isExpanded": false, "label": "0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n(click to expand +)", "size": 150, "truncLabel": "0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x01000000(...)\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n53 AND\n54 DUP1\n55 PUSH4 0x141f32ff\n60 EQ\n61 PUSH2 0x0072\n64 JUMPI", "id": "169", "isExpanded": false, "label": "13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x01000000(...)\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n(click to expand +)", "size": 150, "truncLabel": "13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x01000000(...)\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "109 JUMPDEST\n110 PUSH1 0x00\n112 DUP1\n113 REVERT", "id": "170", "isExpanded": false, "label": "109 JUMPDEST\n110 PUSH1 0x00\n112 DUP1\n113 REVERT", "size": 150, "truncLabel": "109 JUMPDEST\n110 PUSH1 0x00\n112 DUP1\n113 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "65 DUP1\n66 PUSH4 0x2e52d606\n71 EQ\n72 PUSH2 0x00b4\n75 JUMPI", "id": "171", "isExpanded": false, "label": "65 DUP1\n66 PUSH4 0x2e52d606\n71 EQ\n72 PUSH2 0x00b4\n75 JUMPI", "size": 150, "truncLabel": "65 DUP1\n66 PUSH4 0x2e52d606\n71 EQ\n72 PUSH2 0x00b4\n75 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "114 JUMPDEST\n115 CALLVALUE\n116 ISZERO\n117 PUSH2 0x007d\n120 JUMPI", "id": "172", "isExpanded": false, "label": "114 JUMPDEST\n115 CALLVALUE\n116 ISZERO\n117 PUSH2 0x007d\n120 JUMPI", "size": 150, "truncLabel": "114 JUMPDEST\n115 CALLVALUE\n116 ISZERO\n117 PUSH2 0x007d\n120 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "121 PUSH1 0x00\n123 DUP1\n124 REVERT", "id": "173", "isExpanded": false, "label": "121 PUSH1 0x00\n123 DUP1\n124 REVERT", "size": 150, "truncLabel": "121 PUSH1 0x00\n123 DUP1\n124 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "125 JUMPDEST\n126 PUSH2 0x00b2\n129 PUSH1 0x04\n131 DUP1\n132 DUP1\n133 CALLDATALOAD\n134 PUSH20 0xffffffff(...)\n155 AND\n156 SWAP1\n157 PUSH1 0x20\n159 ADD\n160 SWAP1\n161 SWAP2\n162 SWAP1\n163 DUP1\n164 CALLDATALOAD\n165 SWAP1\n166 PUSH1 0x20\n168 ADD\n169 SWAP1\n170 SWAP2\n171 SWAP1\n172 POP\n173 POP\n174 PUSH2 0x01b6\n177 JUMP", "id": "174", "isExpanded": false, "label": "125 JUMPDEST\n126 PUSH2 0x00b2\n129 PUSH1 0x04\n131 DUP1\n132 DUP1\n133 CALLDATALOAD\n(click to expand +)", "size": 150, "truncLabel": "125 JUMPDEST\n126 PUSH2 0x00b2\n129 PUSH1 0x04\n131 DUP1\n132 DUP1\n133 CALLDATALOAD\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "438 JUMPDEST\n439 DUP2\n440 PUSH20 0xffffffff(...)\n461 AND\n462 PUSH1 0x40\n464 MLOAD\n465 DUP1\n466 DUP1\n467 PUSH32 0x7365744e(...)\n500 DUP2\n501 MSTORE\n502 POP\n503 PUSH1 0x0d\n505 ADD\n506 SWAP1\n507 POP\n508 PUSH1 0x40\n510 MLOAD\n511 DUP1\n512 SWAP2\n513 SUB\n514 SWAP1\n515 SHA3\n516 PUSH29 0x01000000(...)\n546 SWAP1\n547 DIV\n548 DUP3\n549 PUSH1 0x40\n551 MLOAD\n552 DUP3\n553 PUSH4 0xffffffff\n558 AND\n559 PUSH29 0x01000000(...)\n589 MUL\n590 DUP2\n591 MSTORE\n592 PUSH1 0x04\n594 ADD\n595 DUP1\n596 DUP3\n597 DUP2\n598 MSTORE\n599 PUSH1 0x20\n601 ADD\n602 SWAP2\n603 POP\n604 POP\n605 PUSH1 0x00\n607 PUSH1 0x40\n609 MLOAD\n610 DUP1\n611 DUP4\n612 SUB\n613 DUP2\n614 PUSH1 0x00\n616 DUP8\n617 GAS\n618 CALLCODE", "id": "175", "isExpanded": false, "label": "438 JUMPDEST\n439 DUP2\n440 PUSH20 0xffffffff(...)\n461 AND\n462 PUSH1 0x40\n464 MLOAD\n(click to expand +)", "size": 150, "truncLabel": "438 JUMPDEST\n439 DUP2\n440 PUSH20 0xffffffff(...)\n461 AND\n462 PUSH1 0x40\n464 MLOAD\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "619 SWAP3\n620 POP\n621 POP\n622 POP\n623 POP\n624 POP\n625 POP\n626 JUMP", "id": "176", "isExpanded": false, "label": "619 SWAP3\n620 POP\n621 POP\n622 POP\n623 POP\n624 POP\n(click to expand +)", "size": 150, "truncLabel": "619 SWAP3\n620 POP\n621 POP\n622 POP\n623 POP\n624 POP\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "178 JUMPDEST\n179 STOP", "id": "177", "isExpanded": false, "label": "178 JUMPDEST\n179 STOP", "size": 150, "truncLabel": "178 JUMPDEST\n179 STOP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "76 DUP1\n77 PUSH4 0x67e404ce\n82 EQ\n83 PUSH2 0x00dd\n86 JUMPI", "id": "178", "isExpanded": false, "label": "76 DUP1\n77 PUSH4 0x67e404ce\n82 EQ\n83 PUSH2 0x00dd\n86 JUMPI", "size": 150, "truncLabel": "76 DUP1\n77 PUSH4 0x67e404ce\n82 EQ\n83 PUSH2 0x00dd\n86 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "180 JUMPDEST\n181 CALLVALUE\n182 ISZERO\n183 PUSH2 0x00bf\n186 JUMPI", "id": "179", "isExpanded": false, "label": "180 JUMPDEST\n181 CALLVALUE\n182 ISZERO\n183 PUSH2 0x00bf\n186 JUMPI", "size": 150, "truncLabel": "180 JUMPDEST\n181 CALLVALUE\n182 ISZERO\n183 PUSH2 0x00bf\n186 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "187 PUSH1 0x00\n189 DUP1\n190 REVERT", "id": "180", "isExpanded": false, "label": "187 PUSH1 0x00\n189 DUP1\n190 REVERT", "size": 150, "truncLabel": "187 PUSH1 0x00\n189 DUP1\n190 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "191 JUMPDEST\n192 PUSH2 0x00c7\n195 PUSH2 0x0273\n198 JUMP", "id": "181", "isExpanded": false, "label": "191 JUMPDEST\n192 PUSH2 0x00c7\n195 PUSH2 0x0273\n198 JUMP", "size": 150, "truncLabel": "191 JUMPDEST\n192 PUSH2 0x00c7\n195 PUSH2 0x0273\n198 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "627 JUMPDEST\n628 PUSH1 0x00\n630 SLOAD\n631 DUP2\n632 JUMP", "id": "182", "isExpanded": false, "label": "627 JUMPDEST\n628 PUSH1 0x00\n630 SLOAD\n631 DUP2\n632 JUMP", "size": 150, "truncLabel": "627 JUMPDEST\n628 PUSH1 0x00\n630 SLOAD\n631 DUP2\n632 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "199 JUMPDEST\n200 PUSH1 0x40\n202 MLOAD\n203 DUP1\n204 DUP3\n205 DUP2\n206 MSTORE\n207 PUSH1 0x20\n209 ADD\n210 SWAP2\n211 POP\n212 POP\n213 PUSH1 0x40\n215 MLOAD\n216 DUP1\n217 SWAP2\n218 SUB\n219 SWAP1\n220 RETURN", "id": "183", "isExpanded": false, "label": "199 JUMPDEST\n200 PUSH1 0x40\n202 MLOAD\n203 DUP1\n204 DUP3\n205 DUP2\n(click to expand +)", "size": 150, "truncLabel": "199 JUMPDEST\n200 PUSH1 0x40\n202 MLOAD\n203 DUP1\n204 DUP3\n205 DUP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "87 DUP1\n88 PUSH4 0x9b58bc26\n93 EQ\n94 PUSH2 0x0132\n97 JUMPI", "id": "184", "isExpanded": false, "label": "87 DUP1\n88 PUSH4 0x9b58bc26\n93 EQ\n94 PUSH2 0x0132\n97 JUMPI", "size": 150, "truncLabel": "87 DUP1\n88 PUSH4 0x9b58bc26\n93 EQ\n94 PUSH2 0x0132\n97 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "221 JUMPDEST\n222 CALLVALUE\n223 ISZERO\n224 PUSH2 0x00e8\n227 JUMPI", "id": "185", "isExpanded": false, "label": "221 JUMPDEST\n222 CALLVALUE\n223 ISZERO\n224 PUSH2 0x00e8\n227 JUMPI", "size": 150, "truncLabel": "221 JUMPDEST\n222 CALLVALUE\n223 ISZERO\n224 PUSH2 0x00e8\n227 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "228 PUSH1 0x00\n230 DUP1\n231 REVERT", "id": "186", "isExpanded": false, "label": "228 PUSH1 0x00\n230 DUP1\n231 REVERT", "size": 150, "truncLabel": "228 PUSH1 0x00\n230 DUP1\n231 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "232 JUMPDEST\n233 PUSH2 0x00f0\n236 PUSH2 0x0279\n239 JUMP", "id": "187", "isExpanded": false, "label": "232 JUMPDEST\n233 PUSH2 0x00f0\n236 PUSH2 0x0279\n239 JUMP", "size": 150, "truncLabel": "232 JUMPDEST\n233 PUSH2 0x00f0\n236 PUSH2 0x0279\n239 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "633 JUMPDEST\n634 PUSH1 0x01\n636 PUSH1 0x00\n638 SWAP1\n639 SLOAD\n640 SWAP1\n641 PUSH2 0x0100\n644 EXP\n645 SWAP1\n646 DIV\n647 PUSH20 0xffffffff(...)\n668 AND\n669 DUP2\n670 JUMP", "id": "188", "isExpanded": false, "label": "633 JUMPDEST\n634 PUSH1 0x01\n636 PUSH1 0x00\n638 SWAP1\n639 SLOAD\n640 SWAP1\n(click to expand +)", "size": 150, "truncLabel": "633 JUMPDEST\n634 PUSH1 0x01\n636 PUSH1 0x00\n638 SWAP1\n639 SLOAD\n640 SWAP1\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "240 JUMPDEST\n241 PUSH1 0x40\n243 MLOAD\n244 DUP1\n245 DUP3\n246 PUSH20 0xffffffff(...)\n267 AND\n268 PUSH20 0xffffffff(...)\n289 AND\n290 DUP2\n291 MSTORE\n292 PUSH1 0x20\n294 ADD\n295 SWAP2\n296 POP\n297 POP\n298 PUSH1 0x40\n300 MLOAD\n301 DUP1\n302 SWAP2\n303 SUB\n304 SWAP1\n305 RETURN", "id": "189", "isExpanded": false, "label": "240 JUMPDEST\n241 PUSH1 0x40\n243 MLOAD\n244 DUP1\n245 DUP3\n246 PUSH20 0xffffffff(...)\n(click to expand +)", "size": 150, "truncLabel": "240 JUMPDEST\n241 PUSH1 0x40\n243 MLOAD\n244 DUP1\n245 DUP3\n246 PUSH20 0xffffffff(...)\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "98 DUP1\n99 PUSH4 0xeea4c864\n104 EQ\n105 PUSH2 0x0174\n108 JUMPI", "id": "190", "isExpanded": false, "label": "98 DUP1\n99 PUSH4 0xeea4c864\n104 EQ\n105 PUSH2 0x0174\n108 JUMPI", "size": 150, "truncLabel": "98 DUP1\n99 PUSH4 0xeea4c864\n104 EQ\n105 PUSH2 0x0174\n108 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "306 JUMPDEST\n307 CALLVALUE\n308 ISZERO\n309 PUSH2 0x013d\n312 JUMPI", "id": "191", "isExpanded": false, "label": "306 JUMPDEST\n307 CALLVALUE\n308 ISZERO\n309 PUSH2 0x013d\n312 JUMPI", "size": 150, "truncLabel": "306 JUMPDEST\n307 CALLVALUE\n308 ISZERO\n309 PUSH2 0x013d\n312 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "313 PUSH1 0x00\n315 DUP1\n316 REVERT", "id": "192", "isExpanded": false, "label": "313 PUSH1 0x00\n315 DUP1\n316 REVERT", "size": 150, "truncLabel": "313 PUSH1 0x00\n315 DUP1\n316 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "317 JUMPDEST\n318 PUSH2 0x0172\n321 PUSH1 0x04\n323 DUP1\n324 DUP1\n325 CALLDATALOAD\n326 PUSH20 0xffffffff(...)\n347 AND\n348 SWAP1\n349 PUSH1 0x20\n351 ADD\n352 SWAP1\n353 SWAP2\n354 SWAP1\n355 DUP1\n356 CALLDATALOAD\n357 SWAP1\n358 PUSH1 0x20\n360 ADD\n361 SWAP1\n362 SWAP2\n363 SWAP1\n364 POP\n365 POP\n366 PUSH2 0x029f\n369 JUMP", "id": "193", "isExpanded": false, "label": "317 JUMPDEST\n318 PUSH2 0x0172\n321 PUSH1 0x04\n323 DUP1\n324 DUP1\n325 CALLDATALOAD\n(click to expand +)", "size": 150, "truncLabel": "317 JUMPDEST\n318 PUSH2 0x0172\n321 PUSH1 0x04\n323 DUP1\n324 DUP1\n325 CALLDATALOAD\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "671 JUMPDEST\n672 DUP2\n673 PUSH20 0xffffffff(...)\n694 AND\n695 PUSH1 0x40\n697 MLOAD\n698 DUP1\n699 DUP1\n700 PUSH32 0x7365744e(...)\n733 DUP2\n734 MSTORE\n735 POP\n736 PUSH1 0x0d\n738 ADD\n739 SWAP1\n740 POP\n741 PUSH1 0x40\n743 MLOAD\n744 DUP1\n745 SWAP2\n746 SUB\n747 SWAP1\n748 SHA3\n749 PUSH29 0x01000000(...)\n779 SWAP1\n780 DIV\n781 DUP3\n782 PUSH1 0x40\n784 MLOAD\n785 DUP3\n786 PUSH4 0xffffffff\n791 AND\n792 PUSH29 0x01000000(...)\n822 MUL\n823 DUP2\n824 MSTORE\n825 PUSH1 0x04\n827 ADD\n828 DUP1\n829 DUP3\n830 DUP2\n831 MSTORE\n832 PUSH1 0x20\n834 ADD\n835 SWAP2\n836 POP\n837 POP\n838 PUSH1 0x00\n840 PUSH1 0x40\n842 MLOAD\n843 DUP1\n844 DUP4\n845 SUB\n846 DUP2\n847 DUP7\n848 GAS\n849 DELEGATECALL", "id": "194", "isExpanded": false, "label": "671 JUMPDEST\n672 DUP2\n673 PUSH20 0xffffffff(...)\n694 AND\n695 PUSH1 0x40\n697 MLOAD\n(click to expand +)", "size": 150, "truncLabel": "671 JUMPDEST\n672 DUP2\n673 PUSH20 0xffffffff(...)\n694 AND\n695 PUSH1 0x40\n697 MLOAD\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "850 SWAP3\n851 POP\n852 POP\n853 POP\n854 POP\n855 POP\n856 POP\n857 JUMP", "id": "195", "isExpanded": false, "label": "850 SWAP3\n851 POP\n852 POP\n853 POP\n854 POP\n855 POP\n(click to expand +)", "size": 150, "truncLabel": "850 SWAP3\n851 POP\n852 POP\n853 POP\n854 POP\n855 POP\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "370 JUMPDEST\n371 STOP", "id": "196", "isExpanded": false, "label": "370 JUMPDEST\n371 STOP", "size": 150, "truncLabel": "370 JUMPDEST\n371 STOP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "109 JUMPDEST\n110 PUSH1 0x00\n112 DUP1\n113 REVERT", "id": "197", "isExpanded": false, "label": "109 JUMPDEST\n110 PUSH1 0x00\n112 DUP1\n113 REVERT", "size": 150, "truncLabel": "109 JUMPDEST\n110 PUSH1 0x00\n112 DUP1\n113 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "372 JUMPDEST\n373 CALLVALUE\n374 ISZERO\n375 PUSH2 0x017f\n378 JUMPI", "id": "198", "isExpanded": false, "label": "372 JUMPDEST\n373 CALLVALUE\n374 ISZERO\n375 PUSH2 0x017f\n378 JUMPI", "size": 150, "truncLabel": "372 JUMPDEST\n373 CALLVALUE\n374 ISZERO\n375 PUSH2 0x017f\n378 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "379 PUSH1 0x00\n381 DUP1\n382 REVERT", "id": "199", "isExpanded": false, "label": "379 PUSH1 0x00\n381 DUP1\n382 REVERT", "size": 150, "truncLabel": "379 PUSH1 0x00\n381 DUP1\n382 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "383 JUMPDEST\n384 PUSH2 0x01b4\n387 PUSH1 0x04\n389 DUP1\n390 DUP1\n391 CALLDATALOAD\n392 PUSH20 0xffffffff(...)\n413 AND\n414 SWAP1\n415 PUSH1 0x20\n417 ADD\n418 SWAP1\n419 SWAP2\n420 SWAP1\n421 DUP1\n422 CALLDATALOAD\n423 SWAP1\n424 PUSH1 0x20\n426 ADD\n427 SWAP1\n428 SWAP2\n429 SWAP1\n430 POP\n431 POP\n432 PUSH2 0x035a\n435 JUMP", "id": "200", "isExpanded": false, "label": "383 JUMPDEST\n384 PUSH2 0x01b4\n387 PUSH1 0x04\n389 DUP1\n390 DUP1\n391 CALLDATALOAD\n(click to expand +)", "size": 150, "truncLabel": "383 JUMPDEST\n384 PUSH2 0x01b4\n387 PUSH1 0x04\n389 DUP1\n390 DUP1\n391 CALLDATALOAD\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "858 JUMPDEST\n859 DUP2\n860 PUSH20 0xffffffff(...)\n881 AND\n882 PUSH1 0x40\n884 MLOAD\n885 DUP1\n886 DUP1\n887 PUSH32 0x7365744e(...)\n920 DUP2\n921 MSTORE\n922 POP\n923 PUSH1 0x0d\n925 ADD\n926 SWAP1\n927 POP\n928 PUSH1 0x40\n930 MLOAD\n931 DUP1\n932 SWAP2\n933 SUB\n934 SWAP1\n935 SHA3\n936 PUSH29 0x01000000(...)\n966 SWAP1\n967 DIV\n968 DUP3\n969 PUSH1 0x40\n971 MLOAD\n972 DUP3\n973 PUSH4 0xffffffff\n978 AND\n979 PUSH29 0x01000000(...)\n1009 MUL\n1010 DUP2\n1011 MSTORE\n1012 PUSH1 0x04\n1014 ADD\n1015 DUP1\n1016 DUP3\n1017 DUP2\n1018 MSTORE\n1019 PUSH1 0x20\n1021 ADD\n1022 SWAP2\n1023 POP\n1024 POP\n1025 PUSH1 0x00\n1027 PUSH1 0x40\n1029 MLOAD\n1030 DUP1\n1031 DUP4\n1032 SUB\n1033 DUP2\n1034 PUSH1 0x00\n1036 DUP8\n1037 GAS\n1038 CALL", "id": "201", "isExpanded": false, "label": "858 JUMPDEST\n859 DUP2\n860 PUSH20 0xffffffff(...)\n881 AND\n882 PUSH1 0x40\n884 MLOAD\n(click to expand +)", "size": 150, "truncLabel": "858 JUMPDEST\n859 DUP2\n860 PUSH20 0xffffffff(...)\n881 AND\n882 PUSH1 0x40\n884 MLOAD\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "1039 SWAP3\n1040 POP\n1041 POP\n1042 POP\n1043 POP\n1044 POP\n1045 POP\n1046 JUMP", "id": "202", "isExpanded": false, "label": "1039 SWAP3\n1040 POP\n1041 POP\n1042 POP\n1043 POP\n1044 POP\n(click to expand +)", "size": 150, "truncLabel": "1039 SWAP3\n1040 POP\n1041 POP\n1042 POP\n1043 POP\n1044 POP\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "436 JUMPDEST\n437 STOP", "id": "203", "isExpanded": false, "label": "436 JUMPDEST\n437 STOP", "size": 150, "truncLabel": "436 JUMPDEST\n437 STOP"}];
+        var edges = [{"arrows": "to", "from": "168", "label": "ULE(4, 7_calldatasize)", "smooth": {"type": "cubicBezier"}, "to": "169"}, {"arrows": "to", "from": "168", "label": "Not(ULE(4, 7_calldatasize))", "smooth": {"type": "cubicBezier"}, "to": "170"}, {"arrows": "to", "from": "169", "label": "Not(And(7_calldata[3] == 0xff,        7_calldata[2] == 50,        7_calldata[1] == 31,        7_calldata[0] == 20))", "smooth": {"type": "cubicBezier"}, "to": "171"}, {"arrows": "to", "from": "169", "label": "And(7_calldata[3] == 0xff,    7_calldata[2] == 50,    7_calldata[1] == 31,    7_calldata[0] == 20)", "smooth": {"type": "cubicBezier"}, "to": "172"}, {"arrows": "to", "from": "172", "label": "Not(call_value7 == 0)", "smooth": {"type": "cubicBezier"}, "to": "173"}, {"arrows": "to", "from": "172", "label": "call_value7 == 0", "smooth": {"type": "cubicBezier"}, "to": "174"}, {"arrows": "to", "from": "174", "label": "", "smooth": {"type": "cubicBezier"}, "to": "175"}, {"arrows": "to", "from": "175", "label": "", "smooth": {"type": "cubicBezier"}, "to": "176"}, {"arrows": "to", "from": "176", "label": "", "smooth": {"type": "cubicBezier"}, "to": "177"}, {"arrows": "to", "from": "171", "label": "Not(And(7_calldata[3] == 6,        7_calldata[2] == 0xd6,        7_calldata[1] == 82,        7_calldata[0] == 46))", "smooth": {"type": "cubicBezier"}, "to": "178"}, {"arrows": "to", "from": "171", "label": "And(7_calldata[3] == 6,    7_calldata[2] == 0xd6,    7_calldata[1] == 82,    7_calldata[0] == 46)", "smooth": {"type": "cubicBezier"}, "to": "179"}, {"arrows": "to", "from": "179", "label": "Not(call_value7 == 0)", "smooth": {"type": "cubicBezier"}, "to": "180"}, {"arrows": "to", "from": "179", "label": "call_value7 == 0", "smooth": {"type": "cubicBezier"}, "to": "181"}, {"arrows": "to", "from": "181", "label": "", "smooth": {"type": "cubicBezier"}, "to": "182"}, {"arrows": "to", "from": "182", "label": "", "smooth": {"type": "cubicBezier"}, "to": "183"}, {"arrows": "to", "from": "178", "label": "Not(And(7_calldata[3] == 0xce,        7_calldata[2] == 4,        7_calldata[1] == 0xe4,        7_calldata[0] == 0x67))", "smooth": {"type": "cubicBezier"}, "to": "184"}, {"arrows": "to", "from": "178", "label": "And(7_calldata[3] == 0xce,    7_calldata[2] == 4,    7_calldata[1] == 0xe4,    7_calldata[0] == 0x67)", "smooth": {"type": "cubicBezier"}, "to": "185"}, {"arrows": "to", "from": "185", "label": "Not(call_value7 == 0)", "smooth": {"type": "cubicBezier"}, "to": "186"}, {"arrows": "to", "from": "185", "label": "call_value7 == 0", "smooth": {"type": "cubicBezier"}, "to": "187"}, {"arrows": "to", "from": "187", "label": "", "smooth": {"type": "cubicBezier"}, "to": "188"}, {"arrows": "to", "from": "188", "label": "", "smooth": {"type": "cubicBezier"}, "to": "189"}, {"arrows": "to", "from": "184", "label": "Not(And(7_calldata[3] == 38,        7_calldata[2] == 0xbc,        7_calldata[1] == 88,        7_calldata[0] == 0x9b))", "smooth": {"type": "cubicBezier"}, "to": "190"}, {"arrows": "to", "from": "184", "label": "And(7_calldata[3] == 38,    7_calldata[2] == 0xbc,    7_calldata[1] == 88,    7_calldata[0] == 0x9b)", "smooth": {"type": "cubicBezier"}, "to": "191"}, {"arrows": "to", "from": "191", "label": "Not(call_value7 == 0)", "smooth": {"type": "cubicBezier"}, "to": "192"}, {"arrows": "to", "from": "191", "label": "call_value7 == 0", "smooth": {"type": "cubicBezier"}, "to": "193"}, {"arrows": "to", "from": "193", "label": "", "smooth": {"type": "cubicBezier"}, "to": "194"}, {"arrows": "to", "from": "194", "label": "", "smooth": {"type": "cubicBezier"}, "to": "195"}, {"arrows": "to", "from": "195", "label": "", "smooth": {"type": "cubicBezier"}, "to": "196"}, {"arrows": "to", "from": "190", "label": "Not(And(7_calldata[3] == 0x64,        7_calldata[2] == 0xc8,        7_calldata[1] == 0xa4,        7_calldata[0] == 0xee))", "smooth": {"type": "cubicBezier"}, "to": "197"}, {"arrows": "to", "from": "190", "label": "And(7_calldata[3] == 0x64,    7_calldata[2] == 0xc8,    7_calldata[1] == 0xa4,    7_calldata[0] == 0xee)", "smooth": {"type": "cubicBezier"}, "to": "198"}, {"arrows": "to", "from": "198", "label": "Not(call_value7 == 0)", "smooth": {"type": "cubicBezier"}, "to": "199"}, {"arrows": "to", "from": "198", "label": "call_value7 == 0", "smooth": {"type": "cubicBezier"}, "to": "200"}, {"arrows": "to", "from": "200", "label": "", "smooth": {"type": "cubicBezier"}, "to": "201"}, {"arrows": "to", "from": "201", "label": "", "smooth": {"type": "cubicBezier"}, "to": "202"}, {"arrows": "to", "from": "202", "label": "", "smooth": {"type": "cubicBezier"}, "to": "203"}];
+    </script>
+</head>
+<body>
+<p>Mythril / Ethereum LASER Symbolic VM</p>
+<div id="mynetwork"></div>
+<script type="text/javascript">
+    var container = document.getElementById('mynetwork');
+
+    var nodesSet = new vis.DataSet(nodes);
+    var edgesSet = new vis.DataSet(edges);
+    var data = {'nodes': nodesSet, 'edges': edgesSet}
+
+    var gph = new vis.Network(container, data, options);
+    gph.on("click", function (params) {
+        // parse node id
+        var nodeID = params['nodes']['0'];
+        if (nodeID) {
+            var clickedNode = nodesSet.get(nodeID);
+
+            if(clickedNode.isExpanded) {
+                clickedNode.label = clickedNode.truncLabel;
+            }
+            else {
+                clickedNode.label = clickedNode.fullLabel;
+            }
+
+            clickedNode.isExpanded = !clickedNode.isExpanded;
+
+            nodesSet.update(clickedNode);
+        }
+    });
+</script>
+</body>
+</html>
diff --git a/tests/testdata/outputs_expected/metacoin.sol.o.easm b/tests/testdata/outputs_expected/metacoin.sol.o.easm
new file mode 100644
index 0000000000000000000000000000000000000000..fbb531816da55c5178044a78b53cdf9d2704c64a
--- /dev/null
+++ b/tests/testdata/outputs_expected/metacoin.sol.o.easm
@@ -0,0 +1,253 @@
+0 PUSH1 0x60
+2 PUSH1 0x40
+4 MSTORE
+5 PUSH1 0x04
+7 CALLDATASIZE
+8 LT
+9 PUSH2 0x004c
+12 JUMPI
+13 PUSH1 0x00
+15 CALLDATALOAD
+16 PUSH29 0x0100000000000000000000000000000000000000000000000000000000
+46 SWAP1
+47 DIV
+48 PUSH4 0xffffffff
+53 AND
+54 DUP1
+55 PUSH4 0x27e235e3
+60 EQ
+61 PUSH2 0x0051
+64 JUMPI
+65 DUP1
+66 PUSH4 0x412664ae
+71 EQ
+72 PUSH2 0x009e
+75 JUMPI
+76 JUMPDEST
+77 PUSH1 0x00
+79 DUP1
+80 REVERT
+81 JUMPDEST
+82 CALLVALUE
+83 ISZERO
+84 PUSH2 0x005c
+87 JUMPI
+88 PUSH1 0x00
+90 DUP1
+91 REVERT
+92 JUMPDEST
+93 PUSH2 0x0088
+96 PUSH1 0x04
+98 DUP1
+99 DUP1
+100 CALLDATALOAD
+101 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+122 AND
+123 SWAP1
+124 PUSH1 0x20
+126 ADD
+127 SWAP1
+128 SWAP2
+129 SWAP1
+130 POP
+131 POP
+132 PUSH2 0x00f8
+135 JUMP
+136 JUMPDEST
+137 PUSH1 0x40
+139 MLOAD
+140 DUP1
+141 DUP3
+142 DUP2
+143 MSTORE
+144 PUSH1 0x20
+146 ADD
+147 SWAP2
+148 POP
+149 POP
+150 PUSH1 0x40
+152 MLOAD
+153 DUP1
+154 SWAP2
+155 SUB
+156 SWAP1
+157 RETURN
+158 JUMPDEST
+159 CALLVALUE
+160 ISZERO
+161 PUSH2 0x00a9
+164 JUMPI
+165 PUSH1 0x00
+167 DUP1
+168 REVERT
+169 JUMPDEST
+170 PUSH2 0x00de
+173 PUSH1 0x04
+175 DUP1
+176 DUP1
+177 CALLDATALOAD
+178 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+199 AND
+200 SWAP1
+201 PUSH1 0x20
+203 ADD
+204 SWAP1
+205 SWAP2
+206 SWAP1
+207 DUP1
+208 CALLDATALOAD
+209 SWAP1
+210 PUSH1 0x20
+212 ADD
+213 SWAP1
+214 SWAP2
+215 SWAP1
+216 POP
+217 POP
+218 PUSH2 0x0110
+221 JUMP
+222 JUMPDEST
+223 PUSH1 0x40
+225 MLOAD
+226 DUP1
+227 DUP3
+228 ISZERO
+229 ISZERO
+230 ISZERO
+231 ISZERO
+232 DUP2
+233 MSTORE
+234 PUSH1 0x20
+236 ADD
+237 SWAP2
+238 POP
+239 POP
+240 PUSH1 0x40
+242 MLOAD
+243 DUP1
+244 SWAP2
+245 SUB
+246 SWAP1
+247 RETURN
+248 JUMPDEST
+249 PUSH1 0x00
+251 PUSH1 0x20
+253 MSTORE
+254 DUP1
+255 PUSH1 0x00
+257 MSTORE
+258 PUSH1 0x40
+260 PUSH1 0x00
+262 SHA3
+263 PUSH1 0x00
+265 SWAP2
+266 POP
+267 SWAP1
+268 POP
+269 SLOAD
+270 DUP2
+271 JUMP
+272 JUMPDEST
+273 PUSH1 0x00
+275 DUP2
+276 PUSH1 0x00
+278 DUP1
+279 CALLER
+280 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+301 AND
+302 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+323 AND
+324 DUP2
+325 MSTORE
+326 PUSH1 0x20
+328 ADD
+329 SWAP1
+330 DUP2
+331 MSTORE
+332 PUSH1 0x20
+334 ADD
+335 PUSH1 0x00
+337 SHA3
+338 SLOAD
+339 LT
+340 ISZERO
+341 PUSH2 0x0161
+344 JUMPI
+345 PUSH1 0x00
+347 SWAP1
+348 POP
+349 PUSH2 0x01fe
+352 JUMP
+353 JUMPDEST
+354 DUP2
+355 PUSH1 0x00
+357 DUP1
+358 CALLER
+359 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+380 AND
+381 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+402 AND
+403 DUP2
+404 MSTORE
+405 PUSH1 0x20
+407 ADD
+408 SWAP1
+409 DUP2
+410 MSTORE
+411 PUSH1 0x20
+413 ADD
+414 PUSH1 0x00
+416 SHA3
+417 PUSH1 0x00
+419 DUP3
+420 DUP3
+421 SLOAD
+422 SUB
+423 SWAP3
+424 POP
+425 POP
+426 DUP2
+427 SWAP1
+428 SSTORE
+429 POP
+430 DUP2
+431 PUSH1 0x00
+433 DUP1
+434 DUP6
+435 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+456 AND
+457 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+478 AND
+479 DUP2
+480 MSTORE
+481 PUSH1 0x20
+483 ADD
+484 SWAP1
+485 DUP2
+486 MSTORE
+487 PUSH1 0x20
+489 ADD
+490 PUSH1 0x00
+492 SHA3
+493 PUSH1 0x00
+495 DUP3
+496 DUP3
+497 SLOAD
+498 ADD
+499 SWAP3
+500 POP
+501 POP
+502 DUP2
+503 SWAP1
+504 SSTORE
+505 POP
+506 PUSH1 0x00
+508 SWAP1
+509 POP
+510 JUMPDEST
+511 SWAP3
+512 SWAP2
+513 POP
+514 POP
+515 JUMP
+516 STOP
diff --git a/tests/testdata/outputs_expected/metacoin.sol.o.graph.html b/tests/testdata/outputs_expected/metacoin.sol.o.graph.html
new file mode 100644
index 0000000000000000000000000000000000000000..6ee81b9ccaa0286972db212d94129a848e23e258
--- /dev/null
+++ b/tests/testdata/outputs_expected/metacoin.sol.o.graph.html
@@ -0,0 +1,62 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>Call Graph</title>
+    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.css" integrity="sha256-iq5ygGJ7021Pi7H5S+QAUXCPUfaBzfqeplbg/KlEssg=" crossorigin="anonymous" />
+    <script src="https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.js" integrity="sha256-JuQeAGbk9rG/EoRMixuy5X8syzICcvB0dj3KindZkY0=" crossorigin="anonymous"></script>
+
+    
+    <style type="text/css">
+        #mynetwork {
+          height: 100%;
+            background-color: #232625;
+        }
+        body {
+            background-color: #232625;
+            color: #ffffff;
+            font-size: 10px;
+        }
+        html, body {
+          height: 95%;
+        }
+    </style>
+    
+
+    <script>
+        var options = {"autoResize": true, "edges": {"font": {"align": "horizontal", "background": "none", "color": "#FFFFFF", "face": "arial", "multi": false, "strokeColor": "#ffffff", "strokeWidth": 0, "vadjust": 0}}, "height": "100%", "layout": {"hierarchical": {"blockShifting": true, "direction": "LR", "edgeMinimization": true, "enabled": true, "levelSeparation": 450, "nodeSpacing": 200, "parentCentralization": false, "sortMethod": "directed", "treeSpacing": 100}, "improvedLayout": true}, "manipulation": false, "nodes": {"borderWidth": 1, "borderWidthSelected": 2, "chosen": true, "color": "#000000", "font": {"align": "left", "color": "#FFFFFF"}, "shape": "box"}, "physics": {"enabled": false}, "width": "100%"};
+        var nodes = [{"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n9 PUSH2 0x004c\n12 JUMPI", "id": "19", "isExpanded": false, "label": "0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n(click to expand +)", "size": 150, "truncLabel": "0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x01000000(...)\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n53 AND\n54 DUP1\n55 PUSH4 0x27e235e3\n60 EQ\n61 PUSH2 0x0051\n64 JUMPI", "id": "20", "isExpanded": false, "label": "13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x01000000(...)\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n(click to expand +)", "size": 150, "truncLabel": "13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x01000000(...)\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "76 JUMPDEST\n77 PUSH1 0x00\n79 DUP1\n80 REVERT", "id": "21", "isExpanded": false, "label": "76 JUMPDEST\n77 PUSH1 0x00\n79 DUP1\n80 REVERT", "size": 150, "truncLabel": "76 JUMPDEST\n77 PUSH1 0x00\n79 DUP1\n80 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "65 DUP1\n66 PUSH4 0x412664ae\n71 EQ\n72 PUSH2 0x009e\n75 JUMPI", "id": "22", "isExpanded": false, "label": "65 DUP1\n66 PUSH4 0x412664ae\n71 EQ\n72 PUSH2 0x009e\n75 JUMPI", "size": 150, "truncLabel": "65 DUP1\n66 PUSH4 0x412664ae\n71 EQ\n72 PUSH2 0x009e\n75 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "81 JUMPDEST\n82 CALLVALUE\n83 ISZERO\n84 PUSH2 0x005c\n87 JUMPI", "id": "23", "isExpanded": false, "label": "81 JUMPDEST\n82 CALLVALUE\n83 ISZERO\n84 PUSH2 0x005c\n87 JUMPI", "size": 150, "truncLabel": "81 JUMPDEST\n82 CALLVALUE\n83 ISZERO\n84 PUSH2 0x005c\n87 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "88 PUSH1 0x00\n90 DUP1\n91 REVERT", "id": "24", "isExpanded": false, "label": "88 PUSH1 0x00\n90 DUP1\n91 REVERT", "size": 150, "truncLabel": "88 PUSH1 0x00\n90 DUP1\n91 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "92 JUMPDEST\n93 PUSH2 0x0088\n96 PUSH1 0x04\n98 DUP1\n99 DUP1\n100 CALLDATALOAD\n101 PUSH20 0xffffffff(...)\n122 AND\n123 SWAP1\n124 PUSH1 0x20\n126 ADD\n127 SWAP1\n128 SWAP2\n129 SWAP1\n130 POP\n131 POP\n132 PUSH2 0x00f8\n135 JUMP", "id": "25", "isExpanded": false, "label": "92 JUMPDEST\n93 PUSH2 0x0088\n96 PUSH1 0x04\n98 DUP1\n99 DUP1\n100 CALLDATALOAD\n(click to expand +)", "size": 150, "truncLabel": "92 JUMPDEST\n93 PUSH2 0x0088\n96 PUSH1 0x04\n98 DUP1\n99 DUP1\n100 CALLDATALOAD\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "248 JUMPDEST\n249 PUSH1 0x00\n251 PUSH1 0x20\n253 MSTORE\n254 DUP1\n255 PUSH1 0x00\n257 MSTORE\n258 PUSH1 0x40\n260 PUSH1 0x00\n262 SHA3\n263 PUSH1 0x00\n265 SWAP2\n266 POP\n267 SWAP1\n268 POP\n269 SLOAD\n270 DUP2\n271 JUMP", "id": "26", "isExpanded": false, "label": "248 JUMPDEST\n249 PUSH1 0x00\n251 PUSH1 0x20\n253 MSTORE\n254 DUP1\n255 PUSH1 0x00\n(click to expand +)", "size": 150, "truncLabel": "248 JUMPDEST\n249 PUSH1 0x00\n251 PUSH1 0x20\n253 MSTORE\n254 DUP1\n255 PUSH1 0x00\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "136 JUMPDEST\n137 PUSH1 0x40\n139 MLOAD\n140 DUP1\n141 DUP3\n142 DUP2\n143 MSTORE\n144 PUSH1 0x20\n146 ADD\n147 SWAP2\n148 POP\n149 POP\n150 PUSH1 0x40\n152 MLOAD\n153 DUP1\n154 SWAP2\n155 SUB\n156 SWAP1\n157 RETURN", "id": "27", "isExpanded": false, "label": "136 JUMPDEST\n137 PUSH1 0x40\n139 MLOAD\n140 DUP1\n141 DUP3\n142 DUP2\n(click to expand +)", "size": 150, "truncLabel": "136 JUMPDEST\n137 PUSH1 0x40\n139 MLOAD\n140 DUP1\n141 DUP3\n142 DUP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "76 JUMPDEST\n77 PUSH1 0x00\n79 DUP1\n80 REVERT", "id": "28", "isExpanded": false, "label": "76 JUMPDEST\n77 PUSH1 0x00\n79 DUP1\n80 REVERT", "size": 150, "truncLabel": "76 JUMPDEST\n77 PUSH1 0x00\n79 DUP1\n80 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "158 JUMPDEST\n159 CALLVALUE\n160 ISZERO\n161 PUSH2 0x00a9\n164 JUMPI", "id": "29", "isExpanded": false, "label": "158 JUMPDEST\n159 CALLVALUE\n160 ISZERO\n161 PUSH2 0x00a9\n164 JUMPI", "size": 150, "truncLabel": "158 JUMPDEST\n159 CALLVALUE\n160 ISZERO\n161 PUSH2 0x00a9\n164 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "165 PUSH1 0x00\n167 DUP1\n168 REVERT", "id": "30", "isExpanded": false, "label": "165 PUSH1 0x00\n167 DUP1\n168 REVERT", "size": 150, "truncLabel": "165 PUSH1 0x00\n167 DUP1\n168 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "169 JUMPDEST\n170 PUSH2 0x00de\n173 PUSH1 0x04\n175 DUP1\n176 DUP1\n177 CALLDATALOAD\n178 PUSH20 0xffffffff(...)\n199 AND\n200 SWAP1\n201 PUSH1 0x20\n203 ADD\n204 SWAP1\n205 SWAP2\n206 SWAP1\n207 DUP1\n208 CALLDATALOAD\n209 SWAP1\n210 PUSH1 0x20\n212 ADD\n213 SWAP1\n214 SWAP2\n215 SWAP1\n216 POP\n217 POP\n218 PUSH2 0x0110\n221 JUMP", "id": "31", "isExpanded": false, "label": "169 JUMPDEST\n170 PUSH2 0x00de\n173 PUSH1 0x04\n175 DUP1\n176 DUP1\n177 CALLDATALOAD\n(click to expand +)", "size": 150, "truncLabel": "169 JUMPDEST\n170 PUSH2 0x00de\n173 PUSH1 0x04\n175 DUP1\n176 DUP1\n177 CALLDATALOAD\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "272 JUMPDEST\n273 PUSH1 0x00\n275 DUP2\n276 PUSH1 0x00\n278 DUP1\n279 CALLER\n280 PUSH20 0xffffffff(...)\n301 AND\n302 PUSH20 0xffffffff(...)\n323 AND\n324 DUP2\n325 MSTORE\n326 PUSH1 0x20\n328 ADD\n329 SWAP1\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 PUSH1 0x00\n337 SHA3\n338 SLOAD\n339 LT\n340 ISZERO\n341 PUSH2 0x0161\n344 JUMPI", "id": "32", "isExpanded": false, "label": "272 JUMPDEST\n273 PUSH1 0x00\n275 DUP2\n276 PUSH1 0x00\n278 DUP1\n279 CALLER\n(click to expand +)", "size": 150, "truncLabel": "272 JUMPDEST\n273 PUSH1 0x00\n275 DUP2\n276 PUSH1 0x00\n278 DUP1\n279 CALLER\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "345 PUSH1 0x00\n347 SWAP1\n348 POP\n349 PUSH2 0x01fe\n352 JUMP", "id": "33", "isExpanded": false, "label": "345 PUSH1 0x00\n347 SWAP1\n348 POP\n349 PUSH2 0x01fe\n352 JUMP", "size": 150, "truncLabel": "345 PUSH1 0x00\n347 SWAP1\n348 POP\n349 PUSH2 0x01fe\n352 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "353 JUMPDEST\n354 DUP2\n355 PUSH1 0x00\n357 DUP1\n358 CALLER\n359 PUSH20 0xffffffff(...)\n380 AND\n381 PUSH20 0xffffffff(...)\n402 AND\n403 DUP2\n404 MSTORE\n405 PUSH1 0x20\n407 ADD\n408 SWAP1\n409 DUP2\n410 MSTORE\n411 PUSH1 0x20\n413 ADD\n414 PUSH1 0x00\n416 SHA3\n417 PUSH1 0x00\n419 DUP3\n420 DUP3\n421 SLOAD\n422 SUB\n423 SWAP3\n424 POP\n425 POP\n426 DUP2\n427 SWAP1\n428 SSTORE", "id": "34", "isExpanded": false, "label": "353 JUMPDEST\n354 DUP2\n355 PUSH1 0x00\n357 DUP1\n358 CALLER\n359 PUSH20 0xffffffff(...)\n(click to expand +)", "size": 150, "truncLabel": "353 JUMPDEST\n354 DUP2\n355 PUSH1 0x00\n357 DUP1\n358 CALLER\n359 PUSH20 0xffffffff(...)\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "429 POP\n430 DUP2\n431 PUSH1 0x00\n433 DUP1\n434 DUP6\n435 PUSH20 0xffffffff(...)\n456 AND\n457 PUSH20 0xffffffff(...)\n478 AND\n479 DUP2\n480 MSTORE\n481 PUSH1 0x20\n483 ADD\n484 SWAP1\n485 DUP2\n486 MSTORE\n487 PUSH1 0x20\n489 ADD\n490 PUSH1 0x00\n492 SHA3\n493 PUSH1 0x00\n495 DUP3\n496 DUP3\n497 SLOAD\n498 ADD\n499 SWAP3\n500 POP\n501 POP\n502 DUP2\n503 SWAP1\n504 SSTORE", "id": "35", "isExpanded": false, "label": "429 POP\n430 DUP2\n431 PUSH1 0x00\n433 DUP1\n434 DUP6\n435 PUSH20 0xffffffff(...)\n(click to expand +)", "size": 150, "truncLabel": "429 POP\n430 DUP2\n431 PUSH1 0x00\n433 DUP1\n434 DUP6\n435 PUSH20 0xffffffff(...)\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "429 POP\n430 DUP2\n431 PUSH1 0x00\n433 DUP1\n434 DUP6\n435 PUSH20 0xffffffff(...)\n456 AND\n457 PUSH20 0xffffffff(...)\n478 AND\n479 DUP2\n480 MSTORE\n481 PUSH1 0x20\n483 ADD\n484 SWAP1\n485 DUP2\n486 MSTORE\n487 PUSH1 0x20\n489 ADD\n490 PUSH1 0x00\n492 SHA3\n493 PUSH1 0x00\n495 DUP3\n496 DUP3\n497 SLOAD", "id": "36", "isExpanded": false, "label": "429 POP\n430 DUP2\n431 PUSH1 0x00\n433 DUP1\n434 DUP6\n435 PUSH20 0xffffffff(...)\n(click to expand +)", "size": 150, "truncLabel": "429 POP\n430 DUP2\n431 PUSH1 0x00\n433 DUP1\n434 DUP6\n435 PUSH20 0xffffffff(...)\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "498 ADD\n499 SWAP3\n500 POP\n501 POP\n502 DUP2\n503 SWAP1\n504 SSTORE", "id": "37", "isExpanded": false, "label": "498 ADD\n499 SWAP3\n500 POP\n501 POP\n502 DUP2\n503 SWAP1\n(click to expand +)", "size": 150, "truncLabel": "498 ADD\n499 SWAP3\n500 POP\n501 POP\n502 DUP2\n503 SWAP1\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "498 ADD\n499 SWAP3\n500 POP\n501 POP\n502 DUP2\n503 SWAP1\n504 SSTORE", "id": "38", "isExpanded": false, "label": "498 ADD\n499 SWAP3\n500 POP\n501 POP\n502 DUP2\n503 SWAP1\n(click to expand +)", "size": 150, "truncLabel": "498 ADD\n499 SWAP3\n500 POP\n501 POP\n502 DUP2\n503 SWAP1\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "505 POP\n506 PUSH1 0x00\n508 SWAP1\n509 POP\n510 JUMPDEST\n511 SWAP3\n512 SWAP2\n513 POP\n514 POP\n515 JUMP", "id": "39", "isExpanded": false, "label": "505 POP\n506 PUSH1 0x00\n508 SWAP1\n509 POP\n510 JUMPDEST\n511 SWAP3\n(click to expand +)", "size": 150, "truncLabel": "505 POP\n506 PUSH1 0x00\n508 SWAP1\n509 POP\n510 JUMPDEST\n511 SWAP3\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "505 POP\n506 PUSH1 0x00\n508 SWAP1\n509 POP\n510 JUMPDEST\n511 SWAP3\n512 SWAP2\n513 POP\n514 POP\n515 JUMP", "id": "40", "isExpanded": false, "label": "505 POP\n506 PUSH1 0x00\n508 SWAP1\n509 POP\n510 JUMPDEST\n511 SWAP3\n(click to expand +)", "size": 150, "truncLabel": "505 POP\n506 PUSH1 0x00\n508 SWAP1\n509 POP\n510 JUMPDEST\n511 SWAP3\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "505 POP\n506 PUSH1 0x00\n508 SWAP1\n509 POP\n510 JUMPDEST\n511 SWAP3\n512 SWAP2\n513 POP\n514 POP\n515 JUMP", "id": "41", "isExpanded": false, "label": "505 POP\n506 PUSH1 0x00\n508 SWAP1\n509 POP\n510 JUMPDEST\n511 SWAP3\n(click to expand +)", "size": 150, "truncLabel": "505 POP\n506 PUSH1 0x00\n508 SWAP1\n509 POP\n510 JUMPDEST\n511 SWAP3\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "222 JUMPDEST\n223 PUSH1 0x40\n225 MLOAD\n226 DUP1\n227 DUP3\n228 ISZERO\n229 ISZERO\n230 ISZERO\n231 ISZERO\n232 DUP2\n233 MSTORE\n234 PUSH1 0x20\n236 ADD\n237 SWAP2\n238 POP\n239 POP\n240 PUSH1 0x40\n242 MLOAD\n243 DUP1\n244 SWAP2\n245 SUB\n246 SWAP1\n247 RETURN", "id": "42", "isExpanded": false, "label": "222 JUMPDEST\n223 PUSH1 0x40\n225 MLOAD\n226 DUP1\n227 DUP3\n228 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "222 JUMPDEST\n223 PUSH1 0x40\n225 MLOAD\n226 DUP1\n227 DUP3\n228 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "222 JUMPDEST\n223 PUSH1 0x40\n225 MLOAD\n226 DUP1\n227 DUP3\n228 ISZERO\n229 ISZERO\n230 ISZERO\n231 ISZERO\n232 DUP2\n233 MSTORE\n234 PUSH1 0x20\n236 ADD\n237 SWAP2\n238 POP\n239 POP\n240 PUSH1 0x40\n242 MLOAD\n243 DUP1\n244 SWAP2\n245 SUB\n246 SWAP1\n247 RETURN", "id": "43", "isExpanded": false, "label": "222 JUMPDEST\n223 PUSH1 0x40\n225 MLOAD\n226 DUP1\n227 DUP3\n228 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "222 JUMPDEST\n223 PUSH1 0x40\n225 MLOAD\n226 DUP1\n227 DUP3\n228 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "222 JUMPDEST\n223 PUSH1 0x40\n225 MLOAD\n226 DUP1\n227 DUP3\n228 ISZERO\n229 ISZERO\n230 ISZERO\n231 ISZERO\n232 DUP2\n233 MSTORE\n234 PUSH1 0x20\n236 ADD\n237 SWAP2\n238 POP\n239 POP\n240 PUSH1 0x40\n242 MLOAD\n243 DUP1\n244 SWAP2\n245 SUB\n246 SWAP1\n247 RETURN", "id": "44", "isExpanded": false, "label": "222 JUMPDEST\n223 PUSH1 0x40\n225 MLOAD\n226 DUP1\n227 DUP3\n228 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "222 JUMPDEST\n223 PUSH1 0x40\n225 MLOAD\n226 DUP1\n227 DUP3\n228 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "505 POP\n506 PUSH1 0x00\n508 SWAP1\n509 POP\n510 JUMPDEST\n511 SWAP3\n512 SWAP2\n513 POP\n514 POP\n515 JUMP", "id": "45", "isExpanded": false, "label": "505 POP\n506 PUSH1 0x00\n508 SWAP1\n509 POP\n510 JUMPDEST\n511 SWAP3\n(click to expand +)", "size": 150, "truncLabel": "505 POP\n506 PUSH1 0x00\n508 SWAP1\n509 POP\n510 JUMPDEST\n511 SWAP3\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "505 POP\n506 PUSH1 0x00\n508 SWAP1\n509 POP\n510 JUMPDEST\n511 SWAP3\n512 SWAP2\n513 POP\n514 POP\n515 JUMP", "id": "46", "isExpanded": false, "label": "505 POP\n506 PUSH1 0x00\n508 SWAP1\n509 POP\n510 JUMPDEST\n511 SWAP3\n(click to expand +)", "size": 150, "truncLabel": "505 POP\n506 PUSH1 0x00\n508 SWAP1\n509 POP\n510 JUMPDEST\n511 SWAP3\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "505 POP\n506 PUSH1 0x00\n508 SWAP1\n509 POP\n510 JUMPDEST\n511 SWAP3\n512 SWAP2\n513 POP\n514 POP\n515 JUMP", "id": "47", "isExpanded": false, "label": "505 POP\n506 PUSH1 0x00\n508 SWAP1\n509 POP\n510 JUMPDEST\n511 SWAP3\n(click to expand +)", "size": 150, "truncLabel": "505 POP\n506 PUSH1 0x00\n508 SWAP1\n509 POP\n510 JUMPDEST\n511 SWAP3\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "222 JUMPDEST\n223 PUSH1 0x40\n225 MLOAD\n226 DUP1\n227 DUP3\n228 ISZERO\n229 ISZERO\n230 ISZERO\n231 ISZERO\n232 DUP2\n233 MSTORE\n234 PUSH1 0x20\n236 ADD\n237 SWAP2\n238 POP\n239 POP\n240 PUSH1 0x40\n242 MLOAD\n243 DUP1\n244 SWAP2\n245 SUB\n246 SWAP1\n247 RETURN", "id": "48", "isExpanded": false, "label": "222 JUMPDEST\n223 PUSH1 0x40\n225 MLOAD\n226 DUP1\n227 DUP3\n228 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "222 JUMPDEST\n223 PUSH1 0x40\n225 MLOAD\n226 DUP1\n227 DUP3\n228 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "222 JUMPDEST\n223 PUSH1 0x40\n225 MLOAD\n226 DUP1\n227 DUP3\n228 ISZERO\n229 ISZERO\n230 ISZERO\n231 ISZERO\n232 DUP2\n233 MSTORE\n234 PUSH1 0x20\n236 ADD\n237 SWAP2\n238 POP\n239 POP\n240 PUSH1 0x40\n242 MLOAD\n243 DUP1\n244 SWAP2\n245 SUB\n246 SWAP1\n247 RETURN", "id": "49", "isExpanded": false, "label": "222 JUMPDEST\n223 PUSH1 0x40\n225 MLOAD\n226 DUP1\n227 DUP3\n228 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "222 JUMPDEST\n223 PUSH1 0x40\n225 MLOAD\n226 DUP1\n227 DUP3\n228 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "222 JUMPDEST\n223 PUSH1 0x40\n225 MLOAD\n226 DUP1\n227 DUP3\n228 ISZERO\n229 ISZERO\n230 ISZERO\n231 ISZERO\n232 DUP2\n233 MSTORE\n234 PUSH1 0x20\n236 ADD\n237 SWAP2\n238 POP\n239 POP\n240 PUSH1 0x40\n242 MLOAD\n243 DUP1\n244 SWAP2\n245 SUB\n246 SWAP1\n247 RETURN", "id": "50", "isExpanded": false, "label": "222 JUMPDEST\n223 PUSH1 0x40\n225 MLOAD\n226 DUP1\n227 DUP3\n228 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "222 JUMPDEST\n223 PUSH1 0x40\n225 MLOAD\n226 DUP1\n227 DUP3\n228 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "505 POP\n506 PUSH1 0x00\n508 SWAP1\n509 POP\n510 JUMPDEST\n511 SWAP3\n512 SWAP2\n513 POP\n514 POP\n515 JUMP", "id": "51", "isExpanded": false, "label": "505 POP\n506 PUSH1 0x00\n508 SWAP1\n509 POP\n510 JUMPDEST\n511 SWAP3\n(click to expand +)", "size": 150, "truncLabel": "505 POP\n506 PUSH1 0x00\n508 SWAP1\n509 POP\n510 JUMPDEST\n511 SWAP3\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "505 POP\n506 PUSH1 0x00\n508 SWAP1\n509 POP\n510 JUMPDEST\n511 SWAP3\n512 SWAP2\n513 POP\n514 POP\n515 JUMP", "id": "52", "isExpanded": false, "label": "505 POP\n506 PUSH1 0x00\n508 SWAP1\n509 POP\n510 JUMPDEST\n511 SWAP3\n(click to expand +)", "size": 150, "truncLabel": "505 POP\n506 PUSH1 0x00\n508 SWAP1\n509 POP\n510 JUMPDEST\n511 SWAP3\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "222 JUMPDEST\n223 PUSH1 0x40\n225 MLOAD\n226 DUP1\n227 DUP3\n228 ISZERO\n229 ISZERO\n230 ISZERO\n231 ISZERO\n232 DUP2\n233 MSTORE\n234 PUSH1 0x20\n236 ADD\n237 SWAP2\n238 POP\n239 POP\n240 PUSH1 0x40\n242 MLOAD\n243 DUP1\n244 SWAP2\n245 SUB\n246 SWAP1\n247 RETURN", "id": "53", "isExpanded": false, "label": "222 JUMPDEST\n223 PUSH1 0x40\n225 MLOAD\n226 DUP1\n227 DUP3\n228 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "222 JUMPDEST\n223 PUSH1 0x40\n225 MLOAD\n226 DUP1\n227 DUP3\n228 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "222 JUMPDEST\n223 PUSH1 0x40\n225 MLOAD\n226 DUP1\n227 DUP3\n228 ISZERO\n229 ISZERO\n230 ISZERO\n231 ISZERO\n232 DUP2\n233 MSTORE\n234 PUSH1 0x20\n236 ADD\n237 SWAP2\n238 POP\n239 POP\n240 PUSH1 0x40\n242 MLOAD\n243 DUP1\n244 SWAP2\n245 SUB\n246 SWAP1\n247 RETURN", "id": "54", "isExpanded": false, "label": "222 JUMPDEST\n223 PUSH1 0x40\n225 MLOAD\n226 DUP1\n227 DUP3\n228 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "222 JUMPDEST\n223 PUSH1 0x40\n225 MLOAD\n226 DUP1\n227 DUP3\n228 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "510 JUMPDEST\n511 SWAP3\n512 SWAP2\n513 POP\n514 POP\n515 JUMP", "id": "55", "isExpanded": false, "label": "510 JUMPDEST\n511 SWAP3\n512 SWAP2\n513 POP\n514 POP\n515 JUMP", "size": 150, "truncLabel": "510 JUMPDEST\n511 SWAP3\n512 SWAP2\n513 POP\n514 POP\n515 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "222 JUMPDEST\n223 PUSH1 0x40\n225 MLOAD\n226 DUP1\n227 DUP3\n228 ISZERO\n229 ISZERO\n230 ISZERO\n231 ISZERO\n232 DUP2\n233 MSTORE\n234 PUSH1 0x20\n236 ADD\n237 SWAP2\n238 POP\n239 POP\n240 PUSH1 0x40\n242 MLOAD\n243 DUP1\n244 SWAP2\n245 SUB\n246 SWAP1\n247 RETURN", "id": "56", "isExpanded": false, "label": "222 JUMPDEST\n223 PUSH1 0x40\n225 MLOAD\n226 DUP1\n227 DUP3\n228 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "222 JUMPDEST\n223 PUSH1 0x40\n225 MLOAD\n226 DUP1\n227 DUP3\n228 ISZERO\n(click to expand +)"}];
+        var edges = [{"arrows": "to", "from": "19", "label": "ULE(4, 2_calldatasize)", "smooth": {"type": "cubicBezier"}, "to": "20"}, {"arrows": "to", "from": "19", "label": "Not(ULE(4, 2_calldatasize))", "smooth": {"type": "cubicBezier"}, "to": "21"}, {"arrows": "to", "from": "20", "label": "Not(And(2_calldata[3] == 0xe3,        2_calldata[2] == 53,        2_calldata[1] == 0xe2,        2_calldata[0] == 39))", "smooth": {"type": "cubicBezier"}, "to": "22"}, {"arrows": "to", "from": "20", "label": "And(2_calldata[3] == 0xe3,    2_calldata[2] == 53,    2_calldata[1] == 0xe2,    2_calldata[0] == 39)", "smooth": {"type": "cubicBezier"}, "to": "23"}, {"arrows": "to", "from": "23", "label": "Not(call_value2 == 0)", "smooth": {"type": "cubicBezier"}, "to": "24"}, {"arrows": "to", "from": "23", "label": "call_value2 == 0", "smooth": {"type": "cubicBezier"}, "to": "25"}, {"arrows": "to", "from": "25", "label": "", "smooth": {"type": "cubicBezier"}, "to": "26"}, {"arrows": "to", "from": "26", "label": "", "smooth": {"type": "cubicBezier"}, "to": "27"}, {"arrows": "to", "from": "22", "label": "Not(And(2_calldata[3] == 0xae,        2_calldata[2] == 0x64,        2_calldata[1] == 38,        2_calldata[0] == 65))", "smooth": {"type": "cubicBezier"}, "to": "28"}, {"arrows": "to", "from": "22", "label": "And(2_calldata[3] == 0xae,    2_calldata[2] == 0x64,    2_calldata[1] == 38,    2_calldata[0] == 65)", "smooth": {"type": "cubicBezier"}, "to": "29"}, {"arrows": "to", "from": "29", "label": "Not(call_value2 == 0)", "smooth": {"type": "cubicBezier"}, "to": "30"}, {"arrows": "to", "from": "29", "label": "call_value2 == 0", "smooth": {"type": "cubicBezier"}, "to": "31"}, {"arrows": "to", "from": "31", "label": "", "smooth": {"type": "cubicBezier"}, "to": "32"}, {"arrows": "to", "from": "32", "label": "Not(ULE(Concat(2_calldata[36],               2_calldata[37],               2_calldata[38],               2_calldata[39],               2_calldata[40],               2_calldata[41],               2_calldata[42],               2_calldata[43],               2_calldata[44],               2_calldata[45],               2_calldata[46],               2_calldata[47],               2_calldata[48],               2_calldata[49],               2_calldata[50],               2_calldata[51],               2_calldata[52],               2_calldata[53],               2_calldata[54],               2_calldata[55],               2_calldata[56],               2_calldata[57],               2_calldata[58],               2_calldata[59],               2_calldata[60],               2_calldata[61],               2_calldata[62],               2_calldata[63],               2_calldata[64],               2_calldata[65],               2_calldata[66],               2_calldata[67]),        storage_KECCAC[0xffffffffffffffffffffffffffffffffffffffff_\u0026Concat(2_calldata[4],_______2_calldata[5],_______2_calldata[6],_______2_calldata[7],_______2_calldata[8],_______2_calldata[9],_______2_calldata[10],_______2_calldata[11],_______2_calldata[12],_______2_calldata[13],_______2_calldata[14],_______2_calldata[15],_______2_calldata[16],_______2_calldata[17],_______2_calldata[18],_______2_calldata[19],_______2_calldata[20],_______2_calldata[21],_______2_calldata[22],_______2_calldata[23],_______2_calldata[24],_______2_calldata[25],_______2_calldata[26],_______2_calldata[27],_______2_calldata[28],_______2_calldata[29],_______2_calldata[30],_______2_calldata[31],_______2_calldata[32],_______2_calldata[33],_______2_calldata[34],_______2_calldata[35])]))", "smooth": {"type": "cubicBezier"}, "to": "33"}, {"arrows": "to", "from": "32", "label": "ULE(Concat(2_calldata[36],           2_calldata[37],           2_calldata[38],           2_calldata[39],           2_calldata[40],           2_calldata[41],           2_calldata[42],           2_calldata[43],           2_calldata[44],           2_calldata[45],           2_calldata[46],           2_calldata[47],           2_calldata[48],           2_calldata[49],           2_calldata[50],           2_calldata[51],           2_calldata[52],           2_calldata[53],           2_calldata[54],           2_calldata[55],           2_calldata[56],           2_calldata[57],           2_calldata[58],           2_calldata[59],           2_calldata[60],           2_calldata[61],           2_calldata[62],           2_calldata[63],           2_calldata[64],           2_calldata[65],           2_calldata[66],           2_calldata[67]),    storage_KECCAC[0xffffffffffffffffffffffffffffffffffffffff_\u0026Concat(2_calldata[4],_______2_calldata[5],_______2_calldata[6],_______2_calldata[7],_______2_calldata[8],_______2_calldata[9],_______2_calldata[10],_______2_calldata[11],_______2_calldata[12],_______2_calldata[13],_______2_calldata[14],_______2_calldata[15],_______2_calldata[16],_______2_calldata[17],_______2_calldata[18],_______2_calldata[19],_______2_calldata[20],_______2_calldata[21],_______2_calldata[22],_______2_calldata[23],_______2_calldata[24],_______2_calldata[25],_______2_calldata[26],_______2_calldata[27],_______2_calldata[28],_______2_calldata[29],_______2_calldata[30],_______2_calldata[31],_______2_calldata[32],_______2_calldata[33],_______2_calldata[34],_______2_calldata[35])])", "smooth": {"type": "cubicBezier"}, "to": "34"}, {"arrows": "to", "from": "34", "label": "And(2_calldata[35] == Extract(7, 0, caller2),    2_calldata[34] == Extract(15, 8, caller2),    2_calldata[33] == Extract(23, 16, caller2),    2_calldata[32] == Extract(31, 24, caller2),    2_calldata[31] == Extract(39, 32, caller2),    2_calldata[30] == Extract(47, 40, caller2),    2_calldata[29] == Extract(55, 48, caller2),    2_calldata[28] == Extract(63, 56, caller2),    2_calldata[27] == Extract(71, 64, caller2),    2_calldata[26] == Extract(79, 72, caller2),    2_calldata[25] == Extract(87, 80, caller2),    2_calldata[24] == Extract(95, 88, caller2),    2_calldata[23] == Extract(0x67, 96, caller2),    2_calldata[22] == Extract(0x6f, 0x68, caller2),    2_calldata[21] == Extract(0x77, 0x70, caller2),    2_calldata[20] == Extract(0x7f, 0x78, caller2),    2_calldata[19] == Extract(0x87, 0x80, caller2),    2_calldata[18] == Extract(0x8f, 0x88, caller2),    2_calldata[17] == Extract(0x97, 0x90, caller2),    2_calldata[16] == Extract(0x9f, 0x98, caller2))", "smooth": {"type": "cubicBezier"}, "to": "35"}, {"arrows": "to", "from": "34", "label": "Not(And(2_calldata[35] == Extract(7, 0, caller2),        2_calldata[34] == Extract(15, 8, caller2),        2_calldata[33] == Extract(23, 16, caller2),        2_calldata[32] == Extract(31, 24, caller2),        2_calldata[31] == Extract(39, 32, caller2),        2_calldata[30] == Extract(47, 40, caller2),        2_calldata[29] == Extract(55, 48, caller2),        2_calldata[28] == Extract(63, 56, caller2),        2_calldata[27] == Extract(71, 64, caller2),        2_calldata[26] == Extract(79, 72, caller2),        2_calldata[25] == Extract(87, 80, caller2),        2_calldata[24] == Extract(95, 88, caller2),        2_calldata[23] == Extract(0x67, 96, caller2),        2_calldata[22] == Extract(0x6f, 0x68, caller2),        2_calldata[21] == Extract(0x77, 0x70, caller2),        2_calldata[20] == Extract(0x7f, 0x78, caller2),        2_calldata[19] == Extract(0x87, 0x80, caller2),        2_calldata[18] == Extract(0x8f, 0x88, caller2),        2_calldata[17] == Extract(0x97, 0x90, caller2),        2_calldata[16] == Extract(0x9f, 0x98, caller2)))", "smooth": {"type": "cubicBezier"}, "to": "36"}, {"arrows": "to", "from": "36", "label": "True", "smooth": {"type": "cubicBezier"}, "to": "37"}, {"arrows": "to", "from": "36", "label": "And(Extract(7, 0, caller2) == 2_calldata[35],    Extract(15, 8, caller2) == 2_calldata[34],    Extract(23, 16, caller2) == 2_calldata[33],    Extract(31, 24, caller2) == 2_calldata[32],    Extract(39, 32, caller2) == 2_calldata[31],    Extract(47, 40, caller2) == 2_calldata[30],    Extract(55, 48, caller2) == 2_calldata[29],    Extract(63, 56, caller2) == 2_calldata[28],    Extract(71, 64, caller2) == 2_calldata[27],    Extract(79, 72, caller2) == 2_calldata[26],    Extract(87, 80, caller2) == 2_calldata[25],    Extract(95, 88, caller2) == 2_calldata[24],    Extract(0x67, 96, caller2) == 2_calldata[23],    Extract(0x6f, 0x68, caller2) == 2_calldata[22],    Extract(0x77, 0x70, caller2) == 2_calldata[21],    Extract(0x7f, 0x78, caller2) == 2_calldata[20],    Extract(0x87, 0x80, caller2) == 2_calldata[19],    Extract(0x8f, 0x88, caller2) == 2_calldata[18],    Extract(0x97, 0x90, caller2) == 2_calldata[17],    Extract(0x9f, 0x98, caller2) == 2_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "38"}, {"arrows": "to", "from": "38", "label": "True", "smooth": {"type": "cubicBezier"}, "to": "39"}, {"arrows": "to", "from": "38", "label": "And(Extract(7, 0, caller2) == 2_calldata[35],    Extract(15, 8, caller2) == 2_calldata[34],    Extract(23, 16, caller2) == 2_calldata[33],    Extract(31, 24, caller2) == 2_calldata[32],    Extract(39, 32, caller2) == 2_calldata[31],    Extract(47, 40, caller2) == 2_calldata[30],    Extract(55, 48, caller2) == 2_calldata[29],    Extract(63, 56, caller2) == 2_calldata[28],    Extract(71, 64, caller2) == 2_calldata[27],    Extract(79, 72, caller2) == 2_calldata[26],    Extract(87, 80, caller2) == 2_calldata[25],    Extract(95, 88, caller2) == 2_calldata[24],    Extract(0x67, 96, caller2) == 2_calldata[23],    Extract(0x6f, 0x68, caller2) == 2_calldata[22],    Extract(0x77, 0x70, caller2) == 2_calldata[21],    Extract(0x7f, 0x78, caller2) == 2_calldata[20],    Extract(0x87, 0x80, caller2) == 2_calldata[19],    Extract(0x8f, 0x88, caller2) == 2_calldata[18],    Extract(0x97, 0x90, caller2) == 2_calldata[17],    Extract(0x9f, 0x98, caller2) == 2_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "40"}, {"arrows": "to", "from": "38", "label": "Not(And(Extract(7, 0, caller2) == 2_calldata[35],        Extract(15, 8, caller2) == 2_calldata[34],        Extract(23, 16, caller2) == 2_calldata[33],        Extract(31, 24, caller2) == 2_calldata[32],        Extract(39, 32, caller2) == 2_calldata[31],        Extract(47, 40, caller2) == 2_calldata[30],        Extract(55, 48, caller2) == 2_calldata[29],        Extract(63, 56, caller2) == 2_calldata[28],        Extract(71, 64, caller2) == 2_calldata[27],        Extract(79, 72, caller2) == 2_calldata[26],        Extract(87, 80, caller2) == 2_calldata[25],        Extract(95, 88, caller2) == 2_calldata[24],        Extract(0x67, 96, caller2) == 2_calldata[23],        Extract(0x6f, 0x68, caller2) == 2_calldata[22],        Extract(0x77, 0x70, caller2) == 2_calldata[21],        Extract(0x7f, 0x78, caller2) == 2_calldata[20],        Extract(0x87, 0x80, caller2) == 2_calldata[19],        Extract(0x8f, 0x88, caller2) == 2_calldata[18],        Extract(0x97, 0x90, caller2) == 2_calldata[17],        Extract(0x9f, 0x98, caller2) == 2_calldata[16]))", "smooth": {"type": "cubicBezier"}, "to": "41"}, {"arrows": "to", "from": "41", "label": "", "smooth": {"type": "cubicBezier"}, "to": "42"}, {"arrows": "to", "from": "40", "label": "", "smooth": {"type": "cubicBezier"}, "to": "43"}, {"arrows": "to", "from": "39", "label": "", "smooth": {"type": "cubicBezier"}, "to": "44"}, {"arrows": "to", "from": "37", "label": "True", "smooth": {"type": "cubicBezier"}, "to": "45"}, {"arrows": "to", "from": "37", "label": "And(Extract(7, 0, caller2) == 2_calldata[35],    Extract(15, 8, caller2) == 2_calldata[34],    Extract(23, 16, caller2) == 2_calldata[33],    Extract(31, 24, caller2) == 2_calldata[32],    Extract(39, 32, caller2) == 2_calldata[31],    Extract(47, 40, caller2) == 2_calldata[30],    Extract(55, 48, caller2) == 2_calldata[29],    Extract(63, 56, caller2) == 2_calldata[28],    Extract(71, 64, caller2) == 2_calldata[27],    Extract(79, 72, caller2) == 2_calldata[26],    Extract(87, 80, caller2) == 2_calldata[25],    Extract(95, 88, caller2) == 2_calldata[24],    Extract(0x67, 96, caller2) == 2_calldata[23],    Extract(0x6f, 0x68, caller2) == 2_calldata[22],    Extract(0x77, 0x70, caller2) == 2_calldata[21],    Extract(0x7f, 0x78, caller2) == 2_calldata[20],    Extract(0x87, 0x80, caller2) == 2_calldata[19],    Extract(0x8f, 0x88, caller2) == 2_calldata[18],    Extract(0x97, 0x90, caller2) == 2_calldata[17],    Extract(0x9f, 0x98, caller2) == 2_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "46"}, {"arrows": "to", "from": "37", "label": "Not(And(Extract(7, 0, caller2) == 2_calldata[35],        Extract(15, 8, caller2) == 2_calldata[34],        Extract(23, 16, caller2) == 2_calldata[33],        Extract(31, 24, caller2) == 2_calldata[32],        Extract(39, 32, caller2) == 2_calldata[31],        Extract(47, 40, caller2) == 2_calldata[30],        Extract(55, 48, caller2) == 2_calldata[29],        Extract(63, 56, caller2) == 2_calldata[28],        Extract(71, 64, caller2) == 2_calldata[27],        Extract(79, 72, caller2) == 2_calldata[26],        Extract(87, 80, caller2) == 2_calldata[25],        Extract(95, 88, caller2) == 2_calldata[24],        Extract(0x67, 96, caller2) == 2_calldata[23],        Extract(0x6f, 0x68, caller2) == 2_calldata[22],        Extract(0x77, 0x70, caller2) == 2_calldata[21],        Extract(0x7f, 0x78, caller2) == 2_calldata[20],        Extract(0x87, 0x80, caller2) == 2_calldata[19],        Extract(0x8f, 0x88, caller2) == 2_calldata[18],        Extract(0x97, 0x90, caller2) == 2_calldata[17],        Extract(0x9f, 0x98, caller2) == 2_calldata[16]))", "smooth": {"type": "cubicBezier"}, "to": "47"}, {"arrows": "to", "from": "47", "label": "", "smooth": {"type": "cubicBezier"}, "to": "48"}, {"arrows": "to", "from": "46", "label": "", "smooth": {"type": "cubicBezier"}, "to": "49"}, {"arrows": "to", "from": "45", "label": "", "smooth": {"type": "cubicBezier"}, "to": "50"}, {"arrows": "to", "from": "35", "label": "True", "smooth": {"type": "cubicBezier"}, "to": "51"}, {"arrows": "to", "from": "35", "label": "False", "smooth": {"type": "cubicBezier"}, "to": "52"}, {"arrows": "to", "from": "52", "label": "", "smooth": {"type": "cubicBezier"}, "to": "53"}, {"arrows": "to", "from": "51", "label": "", "smooth": {"type": "cubicBezier"}, "to": "54"}, {"arrows": "to", "from": "33", "label": "", "smooth": {"type": "cubicBezier"}, "to": "55"}, {"arrows": "to", "from": "55", "label": "", "smooth": {"type": "cubicBezier"}, "to": "56"}];
+    </script>
+</head>
+<body>
+<p>Mythril / Ethereum LASER Symbolic VM</p>
+<div id="mynetwork"></div>
+<script type="text/javascript">
+    var container = document.getElementById('mynetwork');
+
+    var nodesSet = new vis.DataSet(nodes);
+    var edgesSet = new vis.DataSet(edges);
+    var data = {'nodes': nodesSet, 'edges': edgesSet}
+
+    var gph = new vis.Network(container, data, options);
+    gph.on("click", function (params) {
+        // parse node id
+        var nodeID = params['nodes']['0'];
+        if (nodeID) {
+            var clickedNode = nodesSet.get(nodeID);
+
+            if(clickedNode.isExpanded) {
+                clickedNode.label = clickedNode.truncLabel;
+            }
+            else {
+                clickedNode.label = clickedNode.fullLabel;
+            }
+
+            clickedNode.isExpanded = !clickedNode.isExpanded;
+
+            nodesSet.update(clickedNode);
+        }
+    });
+</script>
+</body>
+</html>
diff --git a/tests/testdata/outputs_expected/multi_contracts.sol.o.easm b/tests/testdata/outputs_expected/multi_contracts.sol.o.easm
new file mode 100644
index 0000000000000000000000000000000000000000..e83ace067cd75e57d347d3f54d27e8304e4d8fb9
--- /dev/null
+++ b/tests/testdata/outputs_expected/multi_contracts.sol.o.easm
@@ -0,0 +1,77 @@
+0 PUSH1 0x60
+2 PUSH1 0x40
+4 MSTORE
+5 PUSH1 0x04
+7 CALLDATASIZE
+8 LT
+9 PUSH1 0x3f
+11 JUMPI
+12 PUSH1 0x00
+14 CALLDATALOAD
+15 PUSH29 0x0100000000000000000000000000000000000000000000000000000000
+45 SWAP1
+46 DIV
+47 PUSH4 0xffffffff
+52 AND
+53 DUP1
+54 PUSH4 0x8a4068dd
+59 EQ
+60 PUSH1 0x44
+62 JUMPI
+63 JUMPDEST
+64 PUSH1 0x00
+66 DUP1
+67 REVERT
+68 JUMPDEST
+69 CALLVALUE
+70 ISZERO
+71 PUSH1 0x4e
+73 JUMPI
+74 PUSH1 0x00
+76 DUP1
+77 REVERT
+78 JUMPDEST
+79 PUSH1 0x54
+81 PUSH1 0x56
+83 JUMP
+84 JUMPDEST
+85 STOP
+86 JUMPDEST
+87 CALLER
+88 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+109 AND
+110 PUSH2 0x08fc
+113 PUSH8 0x1bc16d674ec80000
+122 SWAP1
+123 DUP2
+124 ISZERO
+125 MUL
+126 SWAP1
+127 PUSH1 0x40
+129 MLOAD
+130 PUSH1 0x00
+132 PUSH1 0x40
+134 MLOAD
+135 DUP1
+136 DUP4
+137 SUB
+138 DUP2
+139 DUP6
+140 DUP9
+141 DUP9
+142 CALL
+143 SWAP4
+144 POP
+145 POP
+146 POP
+147 POP
+148 ISZERO
+149 ISZERO
+150 PUSH1 0x9d
+152 JUMPI
+153 PUSH1 0x00
+155 DUP1
+156 REVERT
+157 JUMPDEST
+158 JUMP
+159 STOP
diff --git a/tests/testdata/outputs_expected/multi_contracts.sol.o.graph.html b/tests/testdata/outputs_expected/multi_contracts.sol.o.graph.html
new file mode 100644
index 0000000000000000000000000000000000000000..65622cad81a4ff5ef328ea807428aa239810e695
--- /dev/null
+++ b/tests/testdata/outputs_expected/multi_contracts.sol.o.graph.html
@@ -0,0 +1,62 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>Call Graph</title>
+    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.css" integrity="sha256-iq5ygGJ7021Pi7H5S+QAUXCPUfaBzfqeplbg/KlEssg=" crossorigin="anonymous" />
+    <script src="https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.js" integrity="sha256-JuQeAGbk9rG/EoRMixuy5X8syzICcvB0dj3KindZkY0=" crossorigin="anonymous"></script>
+
+    
+    <style type="text/css">
+        #mynetwork {
+          height: 100%;
+            background-color: #232625;
+        }
+        body {
+            background-color: #232625;
+            color: #ffffff;
+            font-size: 10px;
+        }
+        html, body {
+          height: 95%;
+        }
+    </style>
+    
+
+    <script>
+        var options = {"autoResize": true, "edges": {"font": {"align": "horizontal", "background": "none", "color": "#FFFFFF", "face": "arial", "multi": false, "strokeColor": "#ffffff", "strokeWidth": 0, "vadjust": 0}}, "height": "100%", "layout": {"hierarchical": {"blockShifting": true, "direction": "LR", "edgeMinimization": true, "enabled": true, "levelSeparation": 450, "nodeSpacing": 200, "parentCentralization": false, "sortMethod": "directed", "treeSpacing": 100}, "improvedLayout": true}, "manipulation": false, "nodes": {"borderWidth": 1, "borderWidthSelected": 2, "chosen": true, "color": "#000000", "font": {"align": "left", "color": "#FFFFFF"}, "shape": "box"}, "physics": {"enabled": false}, "width": "100%"};
+        var nodes = [{"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n9 PUSH1 0x3f\n11 JUMPI", "id": "163", "isExpanded": false, "label": "0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n(click to expand +)", "size": 150, "truncLabel": "0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "12 PUSH1 0x00\n14 CALLDATALOAD\n15 PUSH29 0x01000000(...)\n45 SWAP1\n46 DIV\n47 PUSH4 0xffffffff\n52 AND\n53 DUP1\n54 PUSH4 0x8a4068dd\n59 EQ\n60 PUSH1 0x44\n62 JUMPI", "id": "164", "isExpanded": false, "label": "12 PUSH1 0x00\n14 CALLDATALOAD\n15 PUSH29 0x01000000(...)\n45 SWAP1\n46 DIV\n47 PUSH4 0xffffffff\n(click to expand +)", "size": 150, "truncLabel": "12 PUSH1 0x00\n14 CALLDATALOAD\n15 PUSH29 0x01000000(...)\n45 SWAP1\n46 DIV\n47 PUSH4 0xffffffff\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "63 JUMPDEST\n64 PUSH1 0x00\n66 DUP1\n67 REVERT", "id": "165", "isExpanded": false, "label": "63 JUMPDEST\n64 PUSH1 0x00\n66 DUP1\n67 REVERT", "size": 150, "truncLabel": "63 JUMPDEST\n64 PUSH1 0x00\n66 DUP1\n67 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "63 JUMPDEST\n64 PUSH1 0x00\n66 DUP1\n67 REVERT", "id": "166", "isExpanded": false, "label": "63 JUMPDEST\n64 PUSH1 0x00\n66 DUP1\n67 REVERT", "size": 150, "truncLabel": "63 JUMPDEST\n64 PUSH1 0x00\n66 DUP1\n67 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "68 JUMPDEST\n69 CALLVALUE\n70 ISZERO\n71 PUSH1 0x4e\n73 JUMPI", "id": "167", "isExpanded": false, "label": "68 JUMPDEST\n69 CALLVALUE\n70 ISZERO\n71 PUSH1 0x4e\n73 JUMPI", "size": 150, "truncLabel": "68 JUMPDEST\n69 CALLVALUE\n70 ISZERO\n71 PUSH1 0x4e\n73 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "74 PUSH1 0x00\n76 DUP1\n77 REVERT", "id": "168", "isExpanded": false, "label": "74 PUSH1 0x00\n76 DUP1\n77 REVERT", "size": 150, "truncLabel": "74 PUSH1 0x00\n76 DUP1\n77 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "78 JUMPDEST\n79 PUSH1 0x54\n81 PUSH1 0x56\n83 JUMP", "id": "169", "isExpanded": false, "label": "78 JUMPDEST\n79 PUSH1 0x54\n81 PUSH1 0x56\n83 JUMP", "size": 150, "truncLabel": "78 JUMPDEST\n79 PUSH1 0x54\n81 PUSH1 0x56\n83 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "86 JUMPDEST\n87 CALLER\n88 PUSH20 0xffffffff(...)\n109 AND\n110 PUSH2 0x08fc\n113 PUSH8 0x1bc16d67(...)\n122 SWAP1\n123 DUP2\n124 ISZERO\n125 MUL\n126 SWAP1\n127 PUSH1 0x40\n129 MLOAD\n130 PUSH1 0x00\n132 PUSH1 0x40\n134 MLOAD\n135 DUP1\n136 DUP4\n137 SUB\n138 DUP2\n139 DUP6\n140 DUP9\n141 DUP9\n142 CALL", "id": "170", "isExpanded": false, "label": "86 JUMPDEST\n87 CALLER\n88 PUSH20 0xffffffff(...)\n109 AND\n110 PUSH2 0x08fc\n113 PUSH8 0x1bc16d67(...)\n(click to expand +)", "size": 150, "truncLabel": "86 JUMPDEST\n87 CALLER\n88 PUSH20 0xffffffff(...)\n109 AND\n110 PUSH2 0x08fc\n113 PUSH8 0x1bc16d67(...)\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "143 SWAP4\n144 POP\n145 POP\n146 POP\n147 POP\n148 ISZERO\n149 ISZERO\n150 PUSH1 0x9d\n152 JUMPI", "id": "171", "isExpanded": false, "label": "143 SWAP4\n144 POP\n145 POP\n146 POP\n147 POP\n148 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "143 SWAP4\n144 POP\n145 POP\n146 POP\n147 POP\n148 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "153 PUSH1 0x00\n155 DUP1\n156 REVERT", "id": "172", "isExpanded": false, "label": "153 PUSH1 0x00\n155 DUP1\n156 REVERT", "size": 150, "truncLabel": "153 PUSH1 0x00\n155 DUP1\n156 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "157 JUMPDEST\n158 JUMP", "id": "173", "isExpanded": false, "label": "157 JUMPDEST\n158 JUMP", "size": 150, "truncLabel": "157 JUMPDEST\n158 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "84 JUMPDEST\n85 STOP", "id": "174", "isExpanded": false, "label": "84 JUMPDEST\n85 STOP", "size": 150, "truncLabel": "84 JUMPDEST\n85 STOP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n9 PUSH1 0x3f\n11 JUMPI", "id": "175", "isExpanded": false, "label": "0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n(click to expand +)", "size": 150, "truncLabel": "0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "12 PUSH1 0x00\n14 CALLDATALOAD\n15 PUSH29 0x01000000(...)\n45 SWAP1\n46 DIV\n47 PUSH4 0xffffffff\n52 AND\n53 DUP1\n54 PUSH4 0x8a4068dd\n59 EQ\n60 PUSH1 0x44\n62 JUMPI", "id": "176", "isExpanded": false, "label": "12 PUSH1 0x00\n14 CALLDATALOAD\n15 PUSH29 0x01000000(...)\n45 SWAP1\n46 DIV\n47 PUSH4 0xffffffff\n(click to expand +)", "size": 150, "truncLabel": "12 PUSH1 0x00\n14 CALLDATALOAD\n15 PUSH29 0x01000000(...)\n45 SWAP1\n46 DIV\n47 PUSH4 0xffffffff\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "63 JUMPDEST\n64 PUSH1 0x00\n66 DUP1\n67 REVERT", "id": "177", "isExpanded": false, "label": "63 JUMPDEST\n64 PUSH1 0x00\n66 DUP1\n67 REVERT", "size": 150, "truncLabel": "63 JUMPDEST\n64 PUSH1 0x00\n66 DUP1\n67 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "63 JUMPDEST\n64 PUSH1 0x00\n66 DUP1\n67 REVERT", "id": "178", "isExpanded": false, "label": "63 JUMPDEST\n64 PUSH1 0x00\n66 DUP1\n67 REVERT", "size": 150, "truncLabel": "63 JUMPDEST\n64 PUSH1 0x00\n66 DUP1\n67 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "68 JUMPDEST\n69 CALLVALUE\n70 ISZERO\n71 PUSH1 0x4e\n73 JUMPI", "id": "179", "isExpanded": false, "label": "68 JUMPDEST\n69 CALLVALUE\n70 ISZERO\n71 PUSH1 0x4e\n73 JUMPI", "size": 150, "truncLabel": "68 JUMPDEST\n69 CALLVALUE\n70 ISZERO\n71 PUSH1 0x4e\n73 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "74 PUSH1 0x00\n76 DUP1\n77 REVERT", "id": "180", "isExpanded": false, "label": "74 PUSH1 0x00\n76 DUP1\n77 REVERT", "size": 150, "truncLabel": "74 PUSH1 0x00\n76 DUP1\n77 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "78 JUMPDEST\n79 PUSH1 0x54\n81 PUSH1 0x56\n83 JUMP", "id": "181", "isExpanded": false, "label": "78 JUMPDEST\n79 PUSH1 0x54\n81 PUSH1 0x56\n83 JUMP", "size": 150, "truncLabel": "78 JUMPDEST\n79 PUSH1 0x54\n81 PUSH1 0x56\n83 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "86 JUMPDEST\n87 CALLER\n88 PUSH20 0xffffffff(...)\n109 AND\n110 PUSH2 0x08fc\n113 PUSH8 0x1bc16d67(...)\n122 SWAP1\n123 DUP2\n124 ISZERO\n125 MUL\n126 SWAP1\n127 PUSH1 0x40\n129 MLOAD\n130 PUSH1 0x00\n132 PUSH1 0x40\n134 MLOAD\n135 DUP1\n136 DUP4\n137 SUB\n138 DUP2\n139 DUP6\n140 DUP9\n141 DUP9\n142 CALL", "id": "182", "isExpanded": false, "label": "86 JUMPDEST\n87 CALLER\n88 PUSH20 0xffffffff(...)\n109 AND\n110 PUSH2 0x08fc\n113 PUSH8 0x1bc16d67(...)\n(click to expand +)", "size": 150, "truncLabel": "86 JUMPDEST\n87 CALLER\n88 PUSH20 0xffffffff(...)\n109 AND\n110 PUSH2 0x08fc\n113 PUSH8 0x1bc16d67(...)\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "143 SWAP4\n144 POP\n145 POP\n146 POP\n147 POP\n148 ISZERO\n149 ISZERO\n150 PUSH1 0x9d\n152 JUMPI", "id": "183", "isExpanded": false, "label": "143 SWAP4\n144 POP\n145 POP\n146 POP\n147 POP\n148 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "143 SWAP4\n144 POP\n145 POP\n146 POP\n147 POP\n148 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "153 PUSH1 0x00\n155 DUP1\n156 REVERT", "id": "184", "isExpanded": false, "label": "153 PUSH1 0x00\n155 DUP1\n156 REVERT", "size": 150, "truncLabel": "153 PUSH1 0x00\n155 DUP1\n156 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "157 JUMPDEST\n158 JUMP", "id": "185", "isExpanded": false, "label": "157 JUMPDEST\n158 JUMP", "size": 150, "truncLabel": "157 JUMPDEST\n158 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "84 JUMPDEST\n85 STOP", "id": "186", "isExpanded": false, "label": "84 JUMPDEST\n85 STOP", "size": 150, "truncLabel": "84 JUMPDEST\n85 STOP"}];
+        var edges = [{"arrows": "to", "from": "163", "label": "ULE(4, 8_calldatasize)", "smooth": {"type": "cubicBezier"}, "to": "164"}, {"arrows": "to", "from": "163", "label": "Not(ULE(4, 8_calldatasize))", "smooth": {"type": "cubicBezier"}, "to": "165"}, {"arrows": "to", "from": "164", "label": "Not(And(8_calldata[3] == 0xdd,        8_calldata[2] == 0x68,        8_calldata[1] == 64,        8_calldata[0] == 0x8a))", "smooth": {"type": "cubicBezier"}, "to": "166"}, {"arrows": "to", "from": "164", "label": "And(8_calldata[3] == 0xdd,    8_calldata[2] == 0x68,    8_calldata[1] == 64,    8_calldata[0] == 0x8a)", "smooth": {"type": "cubicBezier"}, "to": "167"}, {"arrows": "to", "from": "167", "label": "Not(call_value8 == 0)", "smooth": {"type": "cubicBezier"}, "to": "168"}, {"arrows": "to", "from": "167", "label": "call_value8 == 0", "smooth": {"type": "cubicBezier"}, "to": "169"}, {"arrows": "to", "from": "169", "label": "", "smooth": {"type": "cubicBezier"}, "to": "170"}, {"arrows": "to", "from": "170", "label": "", "smooth": {"type": "cubicBezier"}, "to": "171"}, {"arrows": "to", "from": "171", "label": "8_retval_142 == 0", "smooth": {"type": "cubicBezier"}, "to": "172"}, {"arrows": "to", "from": "171", "label": "Not(8_retval_142 == 0)", "smooth": {"type": "cubicBezier"}, "to": "173"}, {"arrows": "to", "from": "173", "label": "", "smooth": {"type": "cubicBezier"}, "to": "174"}, {"arrows": "to", "from": "174", "label": "", "smooth": {"type": "cubicBezier"}, "to": "175"}, {"arrows": "to", "from": "175", "label": "ULE(4, 9_calldatasize)", "smooth": {"type": "cubicBezier"}, "to": "176"}, {"arrows": "to", "from": "175", "label": "Not(ULE(4, 9_calldatasize))", "smooth": {"type": "cubicBezier"}, "to": "177"}, {"arrows": "to", "from": "176", "label": "Not(And(9_calldata[3] == 0xdd,        9_calldata[2] == 0x68,        9_calldata[1] == 64,        9_calldata[0] == 0x8a))", "smooth": {"type": "cubicBezier"}, "to": "178"}, {"arrows": "to", "from": "176", "label": "And(9_calldata[3] == 0xdd,    9_calldata[2] == 0x68,    9_calldata[1] == 64,    9_calldata[0] == 0x8a)", "smooth": {"type": "cubicBezier"}, "to": "179"}, {"arrows": "to", "from": "179", "label": "Not(call_value9 == 0)", "smooth": {"type": "cubicBezier"}, "to": "180"}, {"arrows": "to", "from": "179", "label": "call_value9 == 0", "smooth": {"type": "cubicBezier"}, "to": "181"}, {"arrows": "to", "from": "181", "label": "", "smooth": {"type": "cubicBezier"}, "to": "182"}, {"arrows": "to", "from": "182", "label": "", "smooth": {"type": "cubicBezier"}, "to": "183"}, {"arrows": "to", "from": "183", "label": "9_retval_142 == 0", "smooth": {"type": "cubicBezier"}, "to": "184"}, {"arrows": "to", "from": "183", "label": "Not(9_retval_142 == 0)", "smooth": {"type": "cubicBezier"}, "to": "185"}, {"arrows": "to", "from": "185", "label": "", "smooth": {"type": "cubicBezier"}, "to": "186"}];
+    </script>
+</head>
+<body>
+<p>Mythril / Ethereum LASER Symbolic VM</p>
+<div id="mynetwork"></div>
+<script type="text/javascript">
+    var container = document.getElementById('mynetwork');
+
+    var nodesSet = new vis.DataSet(nodes);
+    var edgesSet = new vis.DataSet(edges);
+    var data = {'nodes': nodesSet, 'edges': edgesSet}
+
+    var gph = new vis.Network(container, data, options);
+    gph.on("click", function (params) {
+        // parse node id
+        var nodeID = params['nodes']['0'];
+        if (nodeID) {
+            var clickedNode = nodesSet.get(nodeID);
+
+            if(clickedNode.isExpanded) {
+                clickedNode.label = clickedNode.truncLabel;
+            }
+            else {
+                clickedNode.label = clickedNode.fullLabel;
+            }
+
+            clickedNode.isExpanded = !clickedNode.isExpanded;
+
+            nodesSet.update(clickedNode);
+        }
+    });
+</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/tests/testdata/outputs_expected/nonascii.sol.o.easm b/tests/testdata/outputs_expected/nonascii.sol.o.easm
new file mode 100644
index 0000000000000000000000000000000000000000..555d5ba3f71cffdd92cde2874a7d913808b92959
--- /dev/null
+++ b/tests/testdata/outputs_expected/nonascii.sol.o.easm
@@ -0,0 +1,167 @@
+0 PUSH1 0x80
+2 PUSH1 0x40
+4 MSTORE
+5 PUSH1 0x04
+7 CALLDATASIZE
+8 LT
+9 PUSH2 0x0041
+12 JUMPI
+13 PUSH1 0x00
+15 CALLDATALOAD
+16 PUSH29 0x0100000000000000000000000000000000000000000000000000000000
+46 SWAP1
+47 DIV
+48 PUSH4 0xffffffff
+53 AND
+54 DUP1
+55 PUSH4 0x24ff38a2
+60 EQ
+61 PUSH2 0x0046
+64 JUMPI
+65 JUMPDEST
+66 PUSH1 0x00
+68 DUP1
+69 REVERT
+70 JUMPDEST
+71 CALLVALUE
+72 DUP1
+73 ISZERO
+74 PUSH2 0x0052
+77 JUMPI
+78 PUSH1 0x00
+80 DUP1
+81 REVERT
+82 JUMPDEST
+83 POP
+84 PUSH2 0x005b
+87 PUSH2 0x00d6
+90 JUMP
+91 JUMPDEST
+92 PUSH1 0x40
+94 MLOAD
+95 DUP1
+96 DUP1
+97 PUSH1 0x20
+99 ADD
+100 DUP3
+101 DUP2
+102 SUB
+103 DUP3
+104 MSTORE
+105 DUP4
+106 DUP2
+107 DUP2
+108 MLOAD
+109 DUP2
+110 MSTORE
+111 PUSH1 0x20
+113 ADD
+114 SWAP2
+115 POP
+116 DUP1
+117 MLOAD
+118 SWAP1
+119 PUSH1 0x20
+121 ADD
+122 SWAP1
+123 DUP1
+124 DUP4
+125 DUP4
+126 PUSH1 0x00
+128 JUMPDEST
+129 DUP4
+130 DUP2
+131 LT
+132 ISZERO
+133 PUSH2 0x009b
+136 JUMPI
+137 DUP1
+138 DUP3
+139 ADD
+140 MLOAD
+141 DUP2
+142 DUP5
+143 ADD
+144 MSTORE
+145 PUSH1 0x20
+147 DUP2
+148 ADD
+149 SWAP1
+150 POP
+151 PUSH2 0x0080
+154 JUMP
+155 JUMPDEST
+156 POP
+157 POP
+158 POP
+159 POP
+160 SWAP1
+161 POP
+162 SWAP1
+163 DUP2
+164 ADD
+165 SWAP1
+166 PUSH1 0x1f
+168 AND
+169 DUP1
+170 ISZERO
+171 PUSH2 0x00c8
+174 JUMPI
+175 DUP1
+176 DUP3
+177 SUB
+178 DUP1
+179 MLOAD
+180 PUSH1 0x01
+182 DUP4
+183 PUSH1 0x20
+185 SUB
+186 PUSH2 0x0100
+189 EXP
+190 SUB
+191 NOT
+192 AND
+193 DUP2
+194 MSTORE
+195 PUSH1 0x20
+197 ADD
+198 SWAP2
+199 POP
+200 JUMPDEST
+201 POP
+202 SWAP3
+203 POP
+204 POP
+205 POP
+206 PUSH1 0x40
+208 MLOAD
+209 DUP1
+210 SWAP2
+211 SUB
+212 SWAP1
+213 RETURN
+214 JUMPDEST
+215 PUSH1 0x60
+217 PUSH1 0x40
+219 DUP1
+220 MLOAD
+221 SWAP1
+222 DUP2
+223 ADD
+224 PUSH1 0x40
+226 MSTORE
+227 DUP1
+228 PUSH1 0x17
+230 DUP2
+231 MSTORE
+232 PUSH1 0x20
+234 ADD
+235 PUSH32 0xd0a5d18dd0bbd0bbd0bed18320d092d0bed180d0bbd0b4000000000000000000
+268 DUP2
+269 MSTORE
+270 POP
+271 SWAP1
+272 POP
+273 SWAP1
+274 JUMP
+275 STOP
diff --git a/tests/testdata/outputs_expected/nonascii.sol.o.graph.html b/tests/testdata/outputs_expected/nonascii.sol.o.graph.html
new file mode 100644
index 0000000000000000000000000000000000000000..505c7d429faf536e64143006ac0884362ede9f35
--- /dev/null
+++ b/tests/testdata/outputs_expected/nonascii.sol.o.graph.html
@@ -0,0 +1,62 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>Call Graph</title>
+    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.css" integrity="sha256-iq5ygGJ7021Pi7H5S+QAUXCPUfaBzfqeplbg/KlEssg=" crossorigin="anonymous" />
+    <script src="https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.js" integrity="sha256-JuQeAGbk9rG/EoRMixuy5X8syzICcvB0dj3KindZkY0=" crossorigin="anonymous"></script>
+
+    
+    <style type="text/css">
+        #mynetwork {
+          height: 100%;
+            background-color: #232625;
+        }
+        body {
+            background-color: #232625;
+            color: #ffffff;
+            font-size: 10px;
+        }
+        html, body {
+          height: 95%;
+        }
+    </style>
+    
+
+    <script>
+        var options = {"autoResize": true, "edges": {"font": {"align": "horizontal", "background": "none", "color": "#FFFFFF", "face": "arial", "multi": false, "strokeColor": "#ffffff", "strokeWidth": 0, "vadjust": 0}}, "height": "100%", "layout": {"hierarchical": {"blockShifting": true, "direction": "LR", "edgeMinimization": true, "enabled": true, "levelSeparation": 450, "nodeSpacing": 200, "parentCentralization": false, "sortMethod": "directed", "treeSpacing": 100}, "improvedLayout": true}, "manipulation": false, "nodes": {"borderWidth": 1, "borderWidthSelected": 2, "chosen": true, "color": "#000000", "font": {"align": "left", "color": "#FFFFFF"}, "shape": "box"}, "physics": {"enabled": false}, "width": "100%"};
+        var nodes = [{"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "0 PUSH1 0x80\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n9 PUSH2 0x0041\n12 JUMPI", "id": "465", "isExpanded": false, "label": "0 PUSH1 0x80\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n(click to expand +)", "size": 150, "truncLabel": "0 PUSH1 0x80\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x01000000(...)\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n53 AND\n54 DUP1\n55 PUSH4 0x24ff38a2\n60 EQ\n61 PUSH2 0x0046\n64 JUMPI", "id": "466", "isExpanded": false, "label": "13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x01000000(...)\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n(click to expand +)", "size": 150, "truncLabel": "13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x01000000(...)\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "65 JUMPDEST\n66 PUSH1 0x00\n68 DUP1\n69 REVERT", "id": "467", "isExpanded": false, "label": "65 JUMPDEST\n66 PUSH1 0x00\n68 DUP1\n69 REVERT", "size": 150, "truncLabel": "65 JUMPDEST\n66 PUSH1 0x00\n68 DUP1\n69 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "65 JUMPDEST\n66 PUSH1 0x00\n68 DUP1\n69 REVERT", "id": "468", "isExpanded": false, "label": "65 JUMPDEST\n66 PUSH1 0x00\n68 DUP1\n69 REVERT", "size": 150, "truncLabel": "65 JUMPDEST\n66 PUSH1 0x00\n68 DUP1\n69 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "70 JUMPDEST\n71 CALLVALUE\n72 DUP1\n73 ISZERO\n74 PUSH2 0x0052\n77 JUMPI", "id": "469", "isExpanded": false, "label": "70 JUMPDEST\n71 CALLVALUE\n72 DUP1\n73 ISZERO\n74 PUSH2 0x0052\n77 JUMPI", "size": 150, "truncLabel": "70 JUMPDEST\n71 CALLVALUE\n72 DUP1\n73 ISZERO\n74 PUSH2 0x0052\n77 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "78 PUSH1 0x00\n80 DUP1\n81 REVERT", "id": "470", "isExpanded": false, "label": "78 PUSH1 0x00\n80 DUP1\n81 REVERT", "size": 150, "truncLabel": "78 PUSH1 0x00\n80 DUP1\n81 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "82 JUMPDEST\n83 POP\n84 PUSH2 0x005b\n87 PUSH2 0x00d6\n90 JUMP", "id": "471", "isExpanded": false, "label": "82 JUMPDEST\n83 POP\n84 PUSH2 0x005b\n87 PUSH2 0x00d6\n90 JUMP", "size": 150, "truncLabel": "82 JUMPDEST\n83 POP\n84 PUSH2 0x005b\n87 PUSH2 0x00d6\n90 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "214 JUMPDEST\n215 PUSH1 0x60\n217 PUSH1 0x40\n219 DUP1\n220 MLOAD\n221 SWAP1\n222 DUP2\n223 ADD\n224 PUSH1 0x40\n226 MSTORE\n227 DUP1\n228 PUSH1 0x17\n230 DUP2\n231 MSTORE\n232 PUSH1 0x20\n234 ADD\n235 PUSH32 0xd0a5d18d(...)\n268 DUP2\n269 MSTORE\n270 POP\n271 SWAP1\n272 POP\n273 SWAP1\n274 JUMP", "id": "472", "isExpanded": false, "label": "214 JUMPDEST\n215 PUSH1 0x60\n217 PUSH1 0x40\n219 DUP1\n220 MLOAD\n221 SWAP1\n(click to expand +)", "size": 150, "truncLabel": "214 JUMPDEST\n215 PUSH1 0x60\n217 PUSH1 0x40\n219 DUP1\n220 MLOAD\n221 SWAP1\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "91 JUMPDEST\n92 PUSH1 0x40\n94 MLOAD\n95 DUP1\n96 DUP1\n97 PUSH1 0x20\n99 ADD\n100 DUP3\n101 DUP2\n102 SUB\n103 DUP3\n104 MSTORE\n105 DUP4\n106 DUP2\n107 DUP2\n108 MLOAD\n109 DUP2\n110 MSTORE\n111 PUSH1 0x20\n113 ADD\n114 SWAP2\n115 POP\n116 DUP1\n117 MLOAD\n118 SWAP1\n119 PUSH1 0x20\n121 ADD\n122 SWAP1\n123 DUP1\n124 DUP4\n125 DUP4\n126 PUSH1 0x00\n128 JUMPDEST\n129 DUP4\n130 DUP2\n131 LT\n132 ISZERO\n133 PUSH2 0x009b\n136 JUMPI", "id": "473", "isExpanded": false, "label": "91 JUMPDEST\n92 PUSH1 0x40\n94 MLOAD\n95 DUP1\n96 DUP1\n97 PUSH1 0x20\n(click to expand +)", "size": 150, "truncLabel": "91 JUMPDEST\n92 PUSH1 0x40\n94 MLOAD\n95 DUP1\n96 DUP1\n97 PUSH1 0x20\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "137 DUP1\n138 DUP3\n139 ADD\n140 MLOAD\n141 DUP2\n142 DUP5\n143 ADD\n144 MSTORE\n145 PUSH1 0x20\n147 DUP2\n148 ADD\n149 SWAP1\n150 POP\n151 PUSH2 0x0080\n154 JUMP", "id": "474", "isExpanded": false, "label": "137 DUP1\n138 DUP3\n139 ADD\n140 MLOAD\n141 DUP2\n142 DUP5\n(click to expand +)", "size": 150, "truncLabel": "137 DUP1\n138 DUP3\n139 ADD\n140 MLOAD\n141 DUP2\n142 DUP5\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "128 JUMPDEST\n129 DUP4\n130 DUP2\n131 LT\n132 ISZERO\n133 PUSH2 0x009b\n136 JUMPI", "id": "475", "isExpanded": false, "label": "128 JUMPDEST\n129 DUP4\n130 DUP2\n131 LT\n132 ISZERO\n133 PUSH2 0x009b\n(click to expand +)", "size": 150, "truncLabel": "128 JUMPDEST\n129 DUP4\n130 DUP2\n131 LT\n132 ISZERO\n133 PUSH2 0x009b\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "155 JUMPDEST\n156 POP\n157 POP\n158 POP\n159 POP\n160 SWAP1\n161 POP\n162 SWAP1\n163 DUP2\n164 ADD\n165 SWAP1\n166 PUSH1 0x1f\n168 AND\n169 DUP1\n170 ISZERO\n171 PUSH2 0x00c8\n174 JUMPI", "id": "476", "isExpanded": false, "label": "155 JUMPDEST\n156 POP\n157 POP\n158 POP\n159 POP\n160 SWAP1\n(click to expand +)", "size": 150, "truncLabel": "155 JUMPDEST\n156 POP\n157 POP\n158 POP\n159 POP\n160 SWAP1\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "175 DUP1\n176 DUP3\n177 SUB\n178 DUP1\n179 MLOAD\n180 PUSH1 0x01\n182 DUP4\n183 PUSH1 0x20\n185 SUB\n186 PUSH2 0x0100\n189 EXP\n190 SUB\n191 NOT\n192 AND\n193 DUP2\n194 MSTORE\n195 PUSH1 0x20\n197 ADD\n198 SWAP2\n199 POP\n200 JUMPDEST\n201 POP\n202 SWAP3\n203 POP\n204 POP\n205 POP\n206 PUSH1 0x40\n208 MLOAD\n209 DUP1\n210 SWAP2\n211 SUB\n212 SWAP1\n213 RETURN", "id": "477", "isExpanded": false, "label": "175 DUP1\n176 DUP3\n177 SUB\n178 DUP1\n179 MLOAD\n180 PUSH1 0x01\n(click to expand +)", "size": 150, "truncLabel": "175 DUP1\n176 DUP3\n177 SUB\n178 DUP1\n179 MLOAD\n180 PUSH1 0x01\n(click to expand +)"}];
+        var edges = [{"arrows": "to", "from": "465", "label": "ULE(4, 13_calldatasize)", "smooth": {"type": "cubicBezier"}, "to": "466"}, {"arrows": "to", "from": "465", "label": "Not(ULE(4, 13_calldatasize))", "smooth": {"type": "cubicBezier"}, "to": "467"}, {"arrows": "to", "from": "466", "label": "Not(And(13_calldata[3] == 0xa2,        13_calldata[2] == 56,        13_calldata[1] == 0xff,        13_calldata[0] == 36))", "smooth": {"type": "cubicBezier"}, "to": "468"}, {"arrows": "to", "from": "466", "label": "And(13_calldata[3] == 0xa2,    13_calldata[2] == 56,    13_calldata[1] == 0xff,    13_calldata[0] == 36)", "smooth": {"type": "cubicBezier"}, "to": "469"}, {"arrows": "to", "from": "469", "label": "Not(call_value13 == 0)", "smooth": {"type": "cubicBezier"}, "to": "470"}, {"arrows": "to", "from": "469", "label": "call_value13 == 0", "smooth": {"type": "cubicBezier"}, "to": "471"}, {"arrows": "to", "from": "471", "label": "", "smooth": {"type": "cubicBezier"}, "to": "472"}, {"arrows": "to", "from": "472", "label": "", "smooth": {"type": "cubicBezier"}, "to": "473"}, {"arrows": "to", "from": "473", "label": "True", "smooth": {"type": "cubicBezier"}, "to": "474"}, {"arrows": "to", "from": "474", "label": "", "smooth": {"type": "cubicBezier"}, "to": "475"}, {"arrows": "to", "from": "475", "label": "True", "smooth": {"type": "cubicBezier"}, "to": "476"}, {"arrows": "to", "from": "476", "label": "True", "smooth": {"type": "cubicBezier"}, "to": "477"}];
+    </script>
+</head>
+<body>
+<p>Mythril / Ethereum LASER Symbolic VM</p>
+<div id="mynetwork"></div>
+<script type="text/javascript">
+    var container = document.getElementById('mynetwork');
+
+    var nodesSet = new vis.DataSet(nodes);
+    var edgesSet = new vis.DataSet(edges);
+    var data = {'nodes': nodesSet, 'edges': edgesSet}
+
+    var gph = new vis.Network(container, data, options);
+    gph.on("click", function (params) {
+        // parse node id
+        var nodeID = params['nodes']['0'];
+        if (nodeID) {
+            var clickedNode = nodesSet.get(nodeID);
+
+            if(clickedNode.isExpanded) {
+                clickedNode.label = clickedNode.truncLabel;
+            }
+            else {
+                clickedNode.label = clickedNode.fullLabel;
+            }
+
+            clickedNode.isExpanded = !clickedNode.isExpanded;
+
+            nodesSet.update(clickedNode);
+        }
+    });
+</script>
+</body>
+</html>
diff --git a/tests/testdata/outputs_expected/origin.sol.o.easm b/tests/testdata/outputs_expected/origin.sol.o.easm
new file mode 100644
index 0000000000000000000000000000000000000000..e1bffe10f47bfac0f08e93e714402a5ca5ae542a
--- /dev/null
+++ b/tests/testdata/outputs_expected/origin.sol.o.easm
@@ -0,0 +1,168 @@
+0 PUSH1 0x60
+2 PUSH1 0x40
+4 MSTORE
+5 PUSH1 0x04
+7 CALLDATASIZE
+8 LT
+9 PUSH2 0x004c
+12 JUMPI
+13 PUSH1 0x00
+15 CALLDATALOAD
+16 PUSH29 0x0100000000000000000000000000000000000000000000000000000000
+46 SWAP1
+47 DIV
+48 PUSH4 0xffffffff
+53 AND
+54 DUP1
+55 PUSH4 0x8da5cb5b
+60 EQ
+61 PUSH2 0x0051
+64 JUMPI
+65 DUP1
+66 PUSH4 0xf2fde38b
+71 EQ
+72 PUSH2 0x00a6
+75 JUMPI
+76 JUMPDEST
+77 PUSH1 0x00
+79 DUP1
+80 REVERT
+81 JUMPDEST
+82 CALLVALUE
+83 ISZERO
+84 PUSH2 0x005c
+87 JUMPI
+88 PUSH1 0x00
+90 DUP1
+91 REVERT
+92 JUMPDEST
+93 PUSH2 0x0064
+96 PUSH2 0x00df
+99 JUMP
+100 JUMPDEST
+101 PUSH1 0x40
+103 MLOAD
+104 DUP1
+105 DUP3
+106 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+127 AND
+128 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+149 AND
+150 DUP2
+151 MSTORE
+152 PUSH1 0x20
+154 ADD
+155 SWAP2
+156 POP
+157 POP
+158 PUSH1 0x40
+160 MLOAD
+161 DUP1
+162 SWAP2
+163 SUB
+164 SWAP1
+165 RETURN
+166 JUMPDEST
+167 CALLVALUE
+168 ISZERO
+169 PUSH2 0x00b1
+172 JUMPI
+173 PUSH1 0x00
+175 DUP1
+176 REVERT
+177 JUMPDEST
+178 PUSH2 0x00dd
+181 PUSH1 0x04
+183 DUP1
+184 DUP1
+185 CALLDATALOAD
+186 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+207 AND
+208 SWAP1
+209 PUSH1 0x20
+211 ADD
+212 SWAP1
+213 SWAP2
+214 SWAP1
+215 POP
+216 POP
+217 PUSH2 0x0104
+220 JUMP
+221 JUMPDEST
+222 STOP
+223 JUMPDEST
+224 PUSH1 0x00
+226 DUP1
+227 SWAP1
+228 SLOAD
+229 SWAP1
+230 PUSH2 0x0100
+233 EXP
+234 SWAP1
+235 DIV
+236 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+257 AND
+258 DUP2
+259 JUMP
+260 JUMPDEST
+261 PUSH1 0x00
+263 DUP1
+264 SWAP1
+265 SLOAD
+266 SWAP1
+267 PUSH2 0x0100
+270 EXP
+271 SWAP1
+272 DIV
+273 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+294 AND
+295 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+316 AND
+317 ORIGIN
+318 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+339 AND
+340 EQ
+341 ISZERO
+342 ISZERO
+343 PUSH2 0x015f
+346 JUMPI
+347 PUSH1 0x00
+349 DUP1
+350 REVERT
+351 JUMPDEST
+352 PUSH1 0x00
+354 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+375 AND
+376 DUP2
+377 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+398 AND
+399 EQ
+400 ISZERO
+401 ISZERO
+402 PUSH2 0x01d6
+405 JUMPI
+406 DUP1
+407 PUSH1 0x00
+409 DUP1
+410 PUSH2 0x0100
+413 EXP
+414 DUP2
+415 SLOAD
+416 DUP2
+417 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+438 MUL
+439 NOT
+440 AND
+441 SWAP1
+442 DUP4
+443 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+464 AND
+465 MUL
+466 OR
+467 SWAP1
+468 SSTORE
+469 POP
+470 JUMPDEST
+471 POP
+472 JUMP
+473 STOP
diff --git a/tests/testdata/outputs_expected/origin.sol.o.graph.html b/tests/testdata/outputs_expected/origin.sol.o.graph.html
new file mode 100644
index 0000000000000000000000000000000000000000..7ff40e7e394f3afe2d20f6264196eb9a9b329af0
--- /dev/null
+++ b/tests/testdata/outputs_expected/origin.sol.o.graph.html
@@ -0,0 +1,62 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>Call Graph</title>
+    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.css" integrity="sha256-iq5ygGJ7021Pi7H5S+QAUXCPUfaBzfqeplbg/KlEssg=" crossorigin="anonymous" />
+    <script src="https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.js" integrity="sha256-JuQeAGbk9rG/EoRMixuy5X8syzICcvB0dj3KindZkY0=" crossorigin="anonymous"></script>
+
+    
+    <style type="text/css">
+        #mynetwork {
+          height: 100%;
+            background-color: #232625;
+        }
+        body {
+            background-color: #232625;
+            color: #ffffff;
+            font-size: 10px;
+        }
+        html, body {
+          height: 95%;
+        }
+    </style>
+    
+
+    <script>
+        var options = {"autoResize": true, "edges": {"font": {"align": "horizontal", "background": "none", "color": "#FFFFFF", "face": "arial", "multi": false, "strokeColor": "#ffffff", "strokeWidth": 0, "vadjust": 0}}, "height": "100%", "layout": {"hierarchical": {"blockShifting": true, "direction": "LR", "edgeMinimization": true, "enabled": true, "levelSeparation": 450, "nodeSpacing": 200, "parentCentralization": false, "sortMethod": "directed", "treeSpacing": 100}, "improvedLayout": true}, "manipulation": false, "nodes": {"borderWidth": 1, "borderWidthSelected": 2, "chosen": true, "color": "#000000", "font": {"align": "left", "color": "#FFFFFF"}, "shape": "box"}, "physics": {"enabled": false}, "width": "100%"};
+        var nodes = [{"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n9 PUSH2 0x004c\n12 JUMPI", "id": "93", "isExpanded": false, "label": "0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n(click to expand +)", "size": 150, "truncLabel": "0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x01000000(...)\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n53 AND\n54 DUP1\n55 PUSH4 0x8da5cb5b\n60 EQ\n61 PUSH2 0x0051\n64 JUMPI", "id": "94", "isExpanded": false, "label": "13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x01000000(...)\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n(click to expand +)", "size": 150, "truncLabel": "13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x01000000(...)\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "76 JUMPDEST\n77 PUSH1 0x00\n79 DUP1\n80 REVERT", "id": "95", "isExpanded": false, "label": "76 JUMPDEST\n77 PUSH1 0x00\n79 DUP1\n80 REVERT", "size": 150, "truncLabel": "76 JUMPDEST\n77 PUSH1 0x00\n79 DUP1\n80 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "65 DUP1\n66 PUSH4 0xf2fde38b\n71 EQ\n72 PUSH2 0x00a6\n75 JUMPI", "id": "96", "isExpanded": false, "label": "65 DUP1\n66 PUSH4 0xf2fde38b\n71 EQ\n72 PUSH2 0x00a6\n75 JUMPI", "size": 150, "truncLabel": "65 DUP1\n66 PUSH4 0xf2fde38b\n71 EQ\n72 PUSH2 0x00a6\n75 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "81 JUMPDEST\n82 CALLVALUE\n83 ISZERO\n84 PUSH2 0x005c\n87 JUMPI", "id": "97", "isExpanded": false, "label": "81 JUMPDEST\n82 CALLVALUE\n83 ISZERO\n84 PUSH2 0x005c\n87 JUMPI", "size": 150, "truncLabel": "81 JUMPDEST\n82 CALLVALUE\n83 ISZERO\n84 PUSH2 0x005c\n87 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "88 PUSH1 0x00\n90 DUP1\n91 REVERT", "id": "98", "isExpanded": false, "label": "88 PUSH1 0x00\n90 DUP1\n91 REVERT", "size": 150, "truncLabel": "88 PUSH1 0x00\n90 DUP1\n91 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "92 JUMPDEST\n93 PUSH2 0x0064\n96 PUSH2 0x00df\n99 JUMP", "id": "99", "isExpanded": false, "label": "92 JUMPDEST\n93 PUSH2 0x0064\n96 PUSH2 0x00df\n99 JUMP", "size": 150, "truncLabel": "92 JUMPDEST\n93 PUSH2 0x0064\n96 PUSH2 0x00df\n99 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "223 JUMPDEST\n224 PUSH1 0x00\n226 DUP1\n227 SWAP1\n228 SLOAD\n229 SWAP1\n230 PUSH2 0x0100\n233 EXP\n234 SWAP1\n235 DIV\n236 PUSH20 0xffffffff(...)\n257 AND\n258 DUP2\n259 JUMP", "id": "100", "isExpanded": false, "label": "223 JUMPDEST\n224 PUSH1 0x00\n226 DUP1\n227 SWAP1\n228 SLOAD\n229 SWAP1\n(click to expand +)", "size": 150, "truncLabel": "223 JUMPDEST\n224 PUSH1 0x00\n226 DUP1\n227 SWAP1\n228 SLOAD\n229 SWAP1\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "100 JUMPDEST\n101 PUSH1 0x40\n103 MLOAD\n104 DUP1\n105 DUP3\n106 PUSH20 0xffffffff(...)\n127 AND\n128 PUSH20 0xffffffff(...)\n149 AND\n150 DUP2\n151 MSTORE\n152 PUSH1 0x20\n154 ADD\n155 SWAP2\n156 POP\n157 POP\n158 PUSH1 0x40\n160 MLOAD\n161 DUP1\n162 SWAP2\n163 SUB\n164 SWAP1\n165 RETURN", "id": "101", "isExpanded": false, "label": "100 JUMPDEST\n101 PUSH1 0x40\n103 MLOAD\n104 DUP1\n105 DUP3\n106 PUSH20 0xffffffff(...)\n(click to expand +)", "size": 150, "truncLabel": "100 JUMPDEST\n101 PUSH1 0x40\n103 MLOAD\n104 DUP1\n105 DUP3\n106 PUSH20 0xffffffff(...)\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "76 JUMPDEST\n77 PUSH1 0x00\n79 DUP1\n80 REVERT", "id": "102", "isExpanded": false, "label": "76 JUMPDEST\n77 PUSH1 0x00\n79 DUP1\n80 REVERT", "size": 150, "truncLabel": "76 JUMPDEST\n77 PUSH1 0x00\n79 DUP1\n80 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "166 JUMPDEST\n167 CALLVALUE\n168 ISZERO\n169 PUSH2 0x00b1\n172 JUMPI", "id": "103", "isExpanded": false, "label": "166 JUMPDEST\n167 CALLVALUE\n168 ISZERO\n169 PUSH2 0x00b1\n172 JUMPI", "size": 150, "truncLabel": "166 JUMPDEST\n167 CALLVALUE\n168 ISZERO\n169 PUSH2 0x00b1\n172 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "173 PUSH1 0x00\n175 DUP1\n176 REVERT", "id": "104", "isExpanded": false, "label": "173 PUSH1 0x00\n175 DUP1\n176 REVERT", "size": 150, "truncLabel": "173 PUSH1 0x00\n175 DUP1\n176 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "177 JUMPDEST\n178 PUSH2 0x00dd\n181 PUSH1 0x04\n183 DUP1\n184 DUP1\n185 CALLDATALOAD\n186 PUSH20 0xffffffff(...)\n207 AND\n208 SWAP1\n209 PUSH1 0x20\n211 ADD\n212 SWAP1\n213 SWAP2\n214 SWAP1\n215 POP\n216 POP\n217 PUSH2 0x0104\n220 JUMP", "id": "105", "isExpanded": false, "label": "177 JUMPDEST\n178 PUSH2 0x00dd\n181 PUSH1 0x04\n183 DUP1\n184 DUP1\n185 CALLDATALOAD\n(click to expand +)", "size": 150, "truncLabel": "177 JUMPDEST\n178 PUSH2 0x00dd\n181 PUSH1 0x04\n183 DUP1\n184 DUP1\n185 CALLDATALOAD\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "260 JUMPDEST\n261 PUSH1 0x00\n263 DUP1\n264 SWAP1\n265 SLOAD\n266 SWAP1\n267 PUSH2 0x0100\n270 EXP\n271 SWAP1\n272 DIV\n273 PUSH20 0xffffffff(...)\n294 AND\n295 PUSH20 0xffffffff(...)\n316 AND\n317 ORIGIN\n318 PUSH20 0xffffffff(...)\n339 AND\n340 EQ\n341 ISZERO\n342 ISZERO\n343 PUSH2 0x015f\n346 JUMPI", "id": "106", "isExpanded": false, "label": "260 JUMPDEST\n261 PUSH1 0x00\n263 DUP1\n264 SWAP1\n265 SLOAD\n266 SWAP1\n(click to expand +)", "size": 150, "truncLabel": "260 JUMPDEST\n261 PUSH1 0x00\n263 DUP1\n264 SWAP1\n265 SLOAD\n266 SWAP1\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "347 PUSH1 0x00\n349 DUP1\n350 REVERT", "id": "107", "isExpanded": false, "label": "347 PUSH1 0x00\n349 DUP1\n350 REVERT", "size": 150, "truncLabel": "347 PUSH1 0x00\n349 DUP1\n350 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "351 JUMPDEST\n352 PUSH1 0x00\n354 PUSH20 0xffffffff(...)\n375 AND\n376 DUP2\n377 PUSH20 0xffffffff(...)\n398 AND\n399 EQ\n400 ISZERO\n401 ISZERO\n402 PUSH2 0x01d6\n405 JUMPI", "id": "108", "isExpanded": false, "label": "351 JUMPDEST\n352 PUSH1 0x00\n354 PUSH20 0xffffffff(...)\n375 AND\n376 DUP2\n377 PUSH20 0xffffffff(...)\n(click to expand +)", "size": 150, "truncLabel": "351 JUMPDEST\n352 PUSH1 0x00\n354 PUSH20 0xffffffff(...)\n375 AND\n376 DUP2\n377 PUSH20 0xffffffff(...)\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "406 DUP1\n407 PUSH1 0x00\n409 DUP1\n410 PUSH2 0x0100\n413 EXP\n414 DUP2\n415 SLOAD\n416 DUP2\n417 PUSH20 0xffffffff(...)\n438 MUL\n439 NOT\n440 AND\n441 SWAP1\n442 DUP4\n443 PUSH20 0xffffffff(...)\n464 AND\n465 MUL\n466 OR\n467 SWAP1\n468 SSTORE\n469 POP\n470 JUMPDEST\n471 POP\n472 JUMP", "id": "109", "isExpanded": false, "label": "406 DUP1\n407 PUSH1 0x00\n409 DUP1\n410 PUSH2 0x0100\n413 EXP\n414 DUP2\n(click to expand +)", "size": 150, "truncLabel": "406 DUP1\n407 PUSH1 0x00\n409 DUP1\n410 PUSH2 0x0100\n413 EXP\n414 DUP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "470 JUMPDEST\n471 POP\n472 JUMP", "id": "110", "isExpanded": false, "label": "470 JUMPDEST\n471 POP\n472 JUMP", "size": 150, "truncLabel": "470 JUMPDEST\n471 POP\n472 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "221 JUMPDEST\n222 STOP", "id": "111", "isExpanded": false, "label": "221 JUMPDEST\n222 STOP", "size": 150, "truncLabel": "221 JUMPDEST\n222 STOP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "221 JUMPDEST\n222 STOP", "id": "112", "isExpanded": false, "label": "221 JUMPDEST\n222 STOP", "size": 150, "truncLabel": "221 JUMPDEST\n222 STOP"}];
+        var edges = [{"arrows": "to", "from": "93", "label": "ULE(4, 5_calldatasize)", "smooth": {"type": "cubicBezier"}, "to": "94"}, {"arrows": "to", "from": "93", "label": "Not(ULE(4, 5_calldatasize))", "smooth": {"type": "cubicBezier"}, "to": "95"}, {"arrows": "to", "from": "94", "label": "Not(And(5_calldata[3] == 91,        5_calldata[2] == 0xcb,        5_calldata[1] == 0xa5,        5_calldata[0] == 0x8d))", "smooth": {"type": "cubicBezier"}, "to": "96"}, {"arrows": "to", "from": "94", "label": "And(5_calldata[3] == 91,    5_calldata[2] == 0xcb,    5_calldata[1] == 0xa5,    5_calldata[0] == 0x8d)", "smooth": {"type": "cubicBezier"}, "to": "97"}, {"arrows": "to", "from": "97", "label": "Not(call_value5 == 0)", "smooth": {"type": "cubicBezier"}, "to": "98"}, {"arrows": "to", "from": "97", "label": "call_value5 == 0", "smooth": {"type": "cubicBezier"}, "to": "99"}, {"arrows": "to", "from": "99", "label": "", "smooth": {"type": "cubicBezier"}, "to": "100"}, {"arrows": "to", "from": "100", "label": "", "smooth": {"type": "cubicBezier"}, "to": "101"}, {"arrows": "to", "from": "96", "label": "Not(And(5_calldata[3] == 0x8b,        5_calldata[2] == 0xe3,        5_calldata[1] == 0xfd,        5_calldata[0] == 0xf2))", "smooth": {"type": "cubicBezier"}, "to": "102"}, {"arrows": "to", "from": "96", "label": "And(5_calldata[3] == 0x8b,    5_calldata[2] == 0xe3,    5_calldata[1] == 0xfd,    5_calldata[0] == 0xf2)", "smooth": {"type": "cubicBezier"}, "to": "103"}, {"arrows": "to", "from": "103", "label": "Not(call_value5 == 0)", "smooth": {"type": "cubicBezier"}, "to": "104"}, {"arrows": "to", "from": "103", "label": "call_value5 == 0", "smooth": {"type": "cubicBezier"}, "to": "105"}, {"arrows": "to", "from": "105", "label": "", "smooth": {"type": "cubicBezier"}, "to": "106"}, {"arrows": "to", "from": "106", "label": "Not(Extract(0x9f, 0, origin5) == Extract(0x9f, 0, storage_0))", "smooth": {"type": "cubicBezier"}, "to": "107"}, {"arrows": "to", "from": "106", "label": "Extract(0x9f, 0, origin5) == Extract(0x9f, 0, storage_0)", "smooth": {"type": "cubicBezier"}, "to": "108"}, {"arrows": "to", "from": "108", "label": "Not(And(5_calldata[35] == 0,        5_calldata[34] == 0,        5_calldata[33] == 0,        5_calldata[32] == 0,        5_calldata[31] == 0,        5_calldata[30] == 0,        5_calldata[29] == 0,        5_calldata[28] == 0,        5_calldata[27] == 0,        5_calldata[26] == 0,        5_calldata[25] == 0,        5_calldata[24] == 0,        5_calldata[23] == 0,        5_calldata[22] == 0,        5_calldata[21] == 0,        5_calldata[20] == 0,        5_calldata[19] == 0,        5_calldata[18] == 0,        5_calldata[17] == 0,        5_calldata[16] == 0))", "smooth": {"type": "cubicBezier"}, "to": "109"}, {"arrows": "to", "from": "108", "label": "And(5_calldata[35] == 0,    5_calldata[34] == 0,    5_calldata[33] == 0,    5_calldata[32] == 0,    5_calldata[31] == 0,    5_calldata[30] == 0,    5_calldata[29] == 0,    5_calldata[28] == 0,    5_calldata[27] == 0,    5_calldata[26] == 0,    5_calldata[25] == 0,    5_calldata[24] == 0,    5_calldata[23] == 0,    5_calldata[22] == 0,    5_calldata[21] == 0,    5_calldata[20] == 0,    5_calldata[19] == 0,    5_calldata[18] == 0,    5_calldata[17] == 0,    5_calldata[16] == 0)", "smooth": {"type": "cubicBezier"}, "to": "110"}, {"arrows": "to", "from": "110", "label": "", "smooth": {"type": "cubicBezier"}, "to": "111"}, {"arrows": "to", "from": "109", "label": "", "smooth": {"type": "cubicBezier"}, "to": "112"}];
+    </script>
+</head>
+<body>
+<p>Mythril / Ethereum LASER Symbolic VM</p>
+<div id="mynetwork"></div>
+<script type="text/javascript">
+    var container = document.getElementById('mynetwork');
+
+    var nodesSet = new vis.DataSet(nodes);
+    var edgesSet = new vis.DataSet(edges);
+    var data = {'nodes': nodesSet, 'edges': edgesSet}
+
+    var gph = new vis.Network(container, data, options);
+    gph.on("click", function (params) {
+        // parse node id
+        var nodeID = params['nodes']['0'];
+        if (nodeID) {
+            var clickedNode = nodesSet.get(nodeID);
+
+            if(clickedNode.isExpanded) {
+                clickedNode.label = clickedNode.truncLabel;
+            }
+            else {
+                clickedNode.label = clickedNode.fullLabel;
+            }
+
+            clickedNode.isExpanded = !clickedNode.isExpanded;
+
+            nodesSet.update(clickedNode);
+        }
+    });
+</script>
+</body>
+</html>
diff --git a/tests/testdata/outputs_expected/overflow.sol.o.easm b/tests/testdata/outputs_expected/overflow.sol.o.easm
new file mode 100644
index 0000000000000000000000000000000000000000..b07639994b16f994aecba310dc20f3a6c2496445
--- /dev/null
+++ b/tests/testdata/outputs_expected/overflow.sol.o.easm
@@ -0,0 +1,388 @@
+0 PUSH1 0x60
+2 PUSH1 0x40
+4 MSTORE
+5 PUSH1 0x04
+7 CALLDATASIZE
+8 LT
+9 PUSH2 0x0062
+12 JUMPI
+13 PUSH1 0x00
+15 CALLDATALOAD
+16 PUSH29 0x0100000000000000000000000000000000000000000000000000000000
+46 SWAP1
+47 DIV
+48 PUSH4 0xffffffff
+53 AND
+54 DUP1
+55 PUSH4 0x18160ddd
+60 EQ
+61 PUSH2 0x0067
+64 JUMPI
+65 DUP1
+66 PUSH4 0x6241bfd1
+71 EQ
+72 PUSH2 0x0090
+75 JUMPI
+76 DUP1
+77 PUSH4 0x70a08231
+82 EQ
+83 PUSH2 0x00b3
+86 JUMPI
+87 DUP1
+88 PUSH4 0xa3210e87
+93 EQ
+94 PUSH2 0x0100
+97 JUMPI
+98 JUMPDEST
+99 PUSH1 0x00
+101 DUP1
+102 REVERT
+103 JUMPDEST
+104 CALLVALUE
+105 ISZERO
+106 PUSH2 0x0072
+109 JUMPI
+110 PUSH1 0x00
+112 DUP1
+113 REVERT
+114 JUMPDEST
+115 PUSH2 0x007a
+118 PUSH2 0x015a
+121 JUMP
+122 JUMPDEST
+123 PUSH1 0x40
+125 MLOAD
+126 DUP1
+127 DUP3
+128 DUP2
+129 MSTORE
+130 PUSH1 0x20
+132 ADD
+133 SWAP2
+134 POP
+135 POP
+136 PUSH1 0x40
+138 MLOAD
+139 DUP1
+140 SWAP2
+141 SUB
+142 SWAP1
+143 RETURN
+144 JUMPDEST
+145 CALLVALUE
+146 ISZERO
+147 PUSH2 0x009b
+150 JUMPI
+151 PUSH1 0x00
+153 DUP1
+154 REVERT
+155 JUMPDEST
+156 PUSH2 0x00b1
+159 PUSH1 0x04
+161 DUP1
+162 DUP1
+163 CALLDATALOAD
+164 SWAP1
+165 PUSH1 0x20
+167 ADD
+168 SWAP1
+169 SWAP2
+170 SWAP1
+171 POP
+172 POP
+173 PUSH2 0x0160
+176 JUMP
+177 JUMPDEST
+178 STOP
+179 JUMPDEST
+180 CALLVALUE
+181 ISZERO
+182 PUSH2 0x00be
+185 JUMPI
+186 PUSH1 0x00
+188 DUP1
+189 REVERT
+190 JUMPDEST
+191 PUSH2 0x00ea
+194 PUSH1 0x04
+196 DUP1
+197 DUP1
+198 CALLDATALOAD
+199 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+220 AND
+221 SWAP1
+222 PUSH1 0x20
+224 ADD
+225 SWAP1
+226 SWAP2
+227 SWAP1
+228 POP
+229 POP
+230 PUSH2 0x01ab
+233 JUMP
+234 JUMPDEST
+235 PUSH1 0x40
+237 MLOAD
+238 DUP1
+239 DUP3
+240 DUP2
+241 MSTORE
+242 PUSH1 0x20
+244 ADD
+245 SWAP2
+246 POP
+247 POP
+248 PUSH1 0x40
+250 MLOAD
+251 DUP1
+252 SWAP2
+253 SUB
+254 SWAP1
+255 RETURN
+256 JUMPDEST
+257 CALLVALUE
+258 ISZERO
+259 PUSH2 0x010b
+262 JUMPI
+263 PUSH1 0x00
+265 DUP1
+266 REVERT
+267 JUMPDEST
+268 PUSH2 0x0140
+271 PUSH1 0x04
+273 DUP1
+274 DUP1
+275 CALLDATALOAD
+276 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+297 AND
+298 SWAP1
+299 PUSH1 0x20
+301 ADD
+302 SWAP1
+303 SWAP2
+304 SWAP1
+305 DUP1
+306 CALLDATALOAD
+307 SWAP1
+308 PUSH1 0x20
+310 ADD
+311 SWAP1
+312 SWAP2
+313 SWAP1
+314 POP
+315 POP
+316 PUSH2 0x01f3
+319 JUMP
+320 JUMPDEST
+321 PUSH1 0x40
+323 MLOAD
+324 DUP1
+325 DUP3
+326 ISZERO
+327 ISZERO
+328 ISZERO
+329 ISZERO
+330 DUP2
+331 MSTORE
+332 PUSH1 0x20
+334 ADD
+335 SWAP2
+336 POP
+337 POP
+338 PUSH1 0x40
+340 MLOAD
+341 DUP1
+342 SWAP2
+343 SUB
+344 SWAP1
+345 RETURN
+346 JUMPDEST
+347 PUSH1 0x01
+349 SLOAD
+350 DUP2
+351 JUMP
+352 JUMPDEST
+353 DUP1
+354 PUSH1 0x01
+356 DUP2
+357 SWAP1
+358 SSTORE
+359 PUSH1 0x00
+361 DUP1
+362 CALLER
+363 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+384 AND
+385 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+406 AND
+407 DUP2
+408 MSTORE
+409 PUSH1 0x20
+411 ADD
+412 SWAP1
+413 DUP2
+414 MSTORE
+415 PUSH1 0x20
+417 ADD
+418 PUSH1 0x00
+420 SHA3
+421 DUP2
+422 SWAP1
+423 SSTORE
+424 POP
+425 POP
+426 JUMP
+427 JUMPDEST
+428 PUSH1 0x00
+430 DUP1
+431 PUSH1 0x00
+433 DUP4
+434 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+455 AND
+456 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+477 AND
+478 DUP2
+479 MSTORE
+480 PUSH1 0x20
+482 ADD
+483 SWAP1
+484 DUP2
+485 MSTORE
+486 PUSH1 0x20
+488 ADD
+489 PUSH1 0x00
+491 SHA3
+492 SLOAD
+493 SWAP1
+494 POP
+495 SWAP2
+496 SWAP1
+497 POP
+498 JUMP
+499 JUMPDEST
+500 PUSH1 0x00
+502 DUP1
+503 DUP3
+504 PUSH1 0x00
+506 DUP1
+507 CALLER
+508 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+529 AND
+530 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+551 AND
+552 DUP2
+553 MSTORE
+554 PUSH1 0x20
+556 ADD
+557 SWAP1
+558 DUP2
+559 MSTORE
+560 PUSH1 0x20
+562 ADD
+563 PUSH1 0x00
+565 SHA3
+566 SLOAD
+567 SUB
+568 LT
+569 ISZERO
+570 ISZERO
+571 ISZERO
+572 PUSH2 0x0244
+575 JUMPI
+576 PUSH1 0x00
+578 DUP1
+579 REVERT
+580 JUMPDEST
+581 DUP2
+582 PUSH1 0x00
+584 DUP1
+585 CALLER
+586 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+607 AND
+608 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+629 AND
+630 DUP2
+631 MSTORE
+632 PUSH1 0x20
+634 ADD
+635 SWAP1
+636 DUP2
+637 MSTORE
+638 PUSH1 0x20
+640 ADD
+641 PUSH1 0x00
+643 SHA3
+644 PUSH1 0x00
+646 DUP3
+647 DUP3
+648 SLOAD
+649 SUB
+650 SWAP3
+651 POP
+652 POP
+653 DUP2
+654 SWAP1
+655 SSTORE
+656 POP
+657 DUP2
+658 PUSH1 0x00
+660 DUP1
+661 DUP6
+662 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+683 AND
+684 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+705 AND
+706 DUP2
+707 MSTORE
+708 PUSH1 0x20
+710 ADD
+711 SWAP1
+712 DUP2
+713 MSTORE
+714 PUSH1 0x20
+716 ADD
+717 PUSH1 0x00
+719 SHA3
+720 PUSH1 0x00
+722 DUP3
+723 DUP3
+724 SLOAD
+725 ADD
+726 SWAP3
+727 POP
+728 POP
+729 DUP2
+730 SWAP1
+731 SSTORE
+732 POP
+733 PUSH1 0x02
+735 PUSH1 0x00
+737 DUP1
+738 DUP6
+739 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+760 AND
+761 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+782 AND
+783 DUP2
+784 MSTORE
+785 PUSH1 0x20
+787 ADD
+788 SWAP1
+789 DUP2
+790 MSTORE
+791 PUSH1 0x20
+793 ADD
+794 PUSH1 0x00
+796 SHA3
+797 DUP2
+798 SWAP1
+799 SSTORE
+800 POP
+801 PUSH1 0x01
+803 SWAP1
+804 POP
+805 SWAP3
+806 SWAP2
+807 POP
+808 POP
+809 JUMP
+810 STOP
diff --git a/tests/testdata/outputs_expected/overflow.sol.o.graph.html b/tests/testdata/outputs_expected/overflow.sol.o.graph.html
new file mode 100644
index 0000000000000000000000000000000000000000..7021017731e612f2e363e17dbc01a74495d47283
--- /dev/null
+++ b/tests/testdata/outputs_expected/overflow.sol.o.graph.html
@@ -0,0 +1,62 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>Call Graph</title>
+    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.css" integrity="sha256-iq5ygGJ7021Pi7H5S+QAUXCPUfaBzfqeplbg/KlEssg=" crossorigin="anonymous" />
+    <script src="https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.js" integrity="sha256-JuQeAGbk9rG/EoRMixuy5X8syzICcvB0dj3KindZkY0=" crossorigin="anonymous"></script>
+
+    
+    <style type="text/css">
+        #mynetwork {
+          height: 100%;
+            background-color: #232625;
+        }
+        body {
+            background-color: #232625;
+            color: #ffffff;
+            font-size: 10px;
+        }
+        html, body {
+          height: 95%;
+        }
+    </style>
+    
+
+    <script>
+        var options = {"autoResize": true, "edges": {"font": {"align": "horizontal", "background": "none", "color": "#FFFFFF", "face": "arial", "multi": false, "strokeColor": "#ffffff", "strokeWidth": 0, "vadjust": 0}}, "height": "100%", "layout": {"hierarchical": {"blockShifting": true, "direction": "LR", "edgeMinimization": true, "enabled": true, "levelSeparation": 450, "nodeSpacing": 200, "parentCentralization": false, "sortMethod": "directed", "treeSpacing": 100}, "improvedLayout": true}, "manipulation": false, "nodes": {"borderWidth": 1, "borderWidthSelected": 2, "chosen": true, "color": "#000000", "font": {"align": "left", "color": "#FFFFFF"}, "shape": "box"}, "physics": {"enabled": false}, "width": "100%"};
+        var nodes = [{"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n9 PUSH2 0x0062\n12 JUMPI", "id": "204", "isExpanded": false, "label": "0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n(click to expand +)", "size": 150, "truncLabel": "0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x01000000(...)\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n53 AND\n54 DUP1\n55 PUSH4 0x18160ddd\n60 EQ\n61 PUSH2 0x0067\n64 JUMPI", "id": "205", "isExpanded": false, "label": "13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x01000000(...)\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n(click to expand +)", "size": 150, "truncLabel": "13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x01000000(...)\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "98 JUMPDEST\n99 PUSH1 0x00\n101 DUP1\n102 REVERT", "id": "206", "isExpanded": false, "label": "98 JUMPDEST\n99 PUSH1 0x00\n101 DUP1\n102 REVERT", "size": 150, "truncLabel": "98 JUMPDEST\n99 PUSH1 0x00\n101 DUP1\n102 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "65 DUP1\n66 PUSH4 0x6241bfd1\n71 EQ\n72 PUSH2 0x0090\n75 JUMPI", "id": "207", "isExpanded": false, "label": "65 DUP1\n66 PUSH4 0x6241bfd1\n71 EQ\n72 PUSH2 0x0090\n75 JUMPI", "size": 150, "truncLabel": "65 DUP1\n66 PUSH4 0x6241bfd1\n71 EQ\n72 PUSH2 0x0090\n75 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "103 JUMPDEST\n104 CALLVALUE\n105 ISZERO\n106 PUSH2 0x0072\n109 JUMPI", "id": "208", "isExpanded": false, "label": "103 JUMPDEST\n104 CALLVALUE\n105 ISZERO\n106 PUSH2 0x0072\n109 JUMPI", "size": 150, "truncLabel": "103 JUMPDEST\n104 CALLVALUE\n105 ISZERO\n106 PUSH2 0x0072\n109 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "110 PUSH1 0x00\n112 DUP1\n113 REVERT", "id": "209", "isExpanded": false, "label": "110 PUSH1 0x00\n112 DUP1\n113 REVERT", "size": 150, "truncLabel": "110 PUSH1 0x00\n112 DUP1\n113 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "114 JUMPDEST\n115 PUSH2 0x007a\n118 PUSH2 0x015a\n121 JUMP", "id": "210", "isExpanded": false, "label": "114 JUMPDEST\n115 PUSH2 0x007a\n118 PUSH2 0x015a\n121 JUMP", "size": 150, "truncLabel": "114 JUMPDEST\n115 PUSH2 0x007a\n118 PUSH2 0x015a\n121 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "346 JUMPDEST\n347 PUSH1 0x01\n349 SLOAD\n350 DUP2\n351 JUMP", "id": "211", "isExpanded": false, "label": "346 JUMPDEST\n347 PUSH1 0x01\n349 SLOAD\n350 DUP2\n351 JUMP", "size": 150, "truncLabel": "346 JUMPDEST\n347 PUSH1 0x01\n349 SLOAD\n350 DUP2\n351 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "122 JUMPDEST\n123 PUSH1 0x40\n125 MLOAD\n126 DUP1\n127 DUP3\n128 DUP2\n129 MSTORE\n130 PUSH1 0x20\n132 ADD\n133 SWAP2\n134 POP\n135 POP\n136 PUSH1 0x40\n138 MLOAD\n139 DUP1\n140 SWAP2\n141 SUB\n142 SWAP1\n143 RETURN", "id": "212", "isExpanded": false, "label": "122 JUMPDEST\n123 PUSH1 0x40\n125 MLOAD\n126 DUP1\n127 DUP3\n128 DUP2\n(click to expand +)", "size": 150, "truncLabel": "122 JUMPDEST\n123 PUSH1 0x40\n125 MLOAD\n126 DUP1\n127 DUP3\n128 DUP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "76 DUP1\n77 PUSH4 0x70a08231\n82 EQ\n83 PUSH2 0x00b3\n86 JUMPI", "id": "213", "isExpanded": false, "label": "76 DUP1\n77 PUSH4 0x70a08231\n82 EQ\n83 PUSH2 0x00b3\n86 JUMPI", "size": 150, "truncLabel": "76 DUP1\n77 PUSH4 0x70a08231\n82 EQ\n83 PUSH2 0x00b3\n86 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "144 JUMPDEST\n145 CALLVALUE\n146 ISZERO\n147 PUSH2 0x009b\n150 JUMPI", "id": "214", "isExpanded": false, "label": "144 JUMPDEST\n145 CALLVALUE\n146 ISZERO\n147 PUSH2 0x009b\n150 JUMPI", "size": 150, "truncLabel": "144 JUMPDEST\n145 CALLVALUE\n146 ISZERO\n147 PUSH2 0x009b\n150 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "151 PUSH1 0x00\n153 DUP1\n154 REVERT", "id": "215", "isExpanded": false, "label": "151 PUSH1 0x00\n153 DUP1\n154 REVERT", "size": 150, "truncLabel": "151 PUSH1 0x00\n153 DUP1\n154 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "155 JUMPDEST\n156 PUSH2 0x00b1\n159 PUSH1 0x04\n161 DUP1\n162 DUP1\n163 CALLDATALOAD\n164 SWAP1\n165 PUSH1 0x20\n167 ADD\n168 SWAP1\n169 SWAP2\n170 SWAP1\n171 POP\n172 POP\n173 PUSH2 0x0160\n176 JUMP", "id": "216", "isExpanded": false, "label": "155 JUMPDEST\n156 PUSH2 0x00b1\n159 PUSH1 0x04\n161 DUP1\n162 DUP1\n163 CALLDATALOAD\n(click to expand +)", "size": 150, "truncLabel": "155 JUMPDEST\n156 PUSH2 0x00b1\n159 PUSH1 0x04\n161 DUP1\n162 DUP1\n163 CALLDATALOAD\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "352 JUMPDEST\n353 DUP1\n354 PUSH1 0x01\n356 DUP2\n357 SWAP1\n358 SSTORE\n359 PUSH1 0x00\n361 DUP1\n362 CALLER\n363 PUSH20 0xffffffff(...)\n384 AND\n385 PUSH20 0xffffffff(...)\n406 AND\n407 DUP2\n408 MSTORE\n409 PUSH1 0x20\n411 ADD\n412 SWAP1\n413 DUP2\n414 MSTORE\n415 PUSH1 0x20\n417 ADD\n418 PUSH1 0x00\n420 SHA3\n421 DUP2\n422 SWAP1\n423 SSTORE\n424 POP\n425 POP\n426 JUMP", "id": "217", "isExpanded": false, "label": "352 JUMPDEST\n353 DUP1\n354 PUSH1 0x01\n356 DUP2\n357 SWAP1\n358 SSTORE\n(click to expand +)", "size": 150, "truncLabel": "352 JUMPDEST\n353 DUP1\n354 PUSH1 0x01\n356 DUP2\n357 SWAP1\n358 SSTORE\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "177 JUMPDEST\n178 STOP", "id": "218", "isExpanded": false, "label": "177 JUMPDEST\n178 STOP", "size": 150, "truncLabel": "177 JUMPDEST\n178 STOP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "87 DUP1\n88 PUSH4 0xa3210e87\n93 EQ\n94 PUSH2 0x0100\n97 JUMPI", "id": "219", "isExpanded": false, "label": "87 DUP1\n88 PUSH4 0xa3210e87\n93 EQ\n94 PUSH2 0x0100\n97 JUMPI", "size": 150, "truncLabel": "87 DUP1\n88 PUSH4 0xa3210e87\n93 EQ\n94 PUSH2 0x0100\n97 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "179 JUMPDEST\n180 CALLVALUE\n181 ISZERO\n182 PUSH2 0x00be\n185 JUMPI", "id": "220", "isExpanded": false, "label": "179 JUMPDEST\n180 CALLVALUE\n181 ISZERO\n182 PUSH2 0x00be\n185 JUMPI", "size": 150, "truncLabel": "179 JUMPDEST\n180 CALLVALUE\n181 ISZERO\n182 PUSH2 0x00be\n185 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "186 PUSH1 0x00\n188 DUP1\n189 REVERT", "id": "221", "isExpanded": false, "label": "186 PUSH1 0x00\n188 DUP1\n189 REVERT", "size": 150, "truncLabel": "186 PUSH1 0x00\n188 DUP1\n189 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "190 JUMPDEST\n191 PUSH2 0x00ea\n194 PUSH1 0x04\n196 DUP1\n197 DUP1\n198 CALLDATALOAD\n199 PUSH20 0xffffffff(...)\n220 AND\n221 SWAP1\n222 PUSH1 0x20\n224 ADD\n225 SWAP1\n226 SWAP2\n227 SWAP1\n228 POP\n229 POP\n230 PUSH2 0x01ab\n233 JUMP", "id": "222", "isExpanded": false, "label": "190 JUMPDEST\n191 PUSH2 0x00ea\n194 PUSH1 0x04\n196 DUP1\n197 DUP1\n198 CALLDATALOAD\n(click to expand +)", "size": 150, "truncLabel": "190 JUMPDEST\n191 PUSH2 0x00ea\n194 PUSH1 0x04\n196 DUP1\n197 DUP1\n198 CALLDATALOAD\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "427 JUMPDEST\n428 PUSH1 0x00\n430 DUP1\n431 PUSH1 0x00\n433 DUP4\n434 PUSH20 0xffffffff(...)\n455 AND\n456 PUSH20 0xffffffff(...)\n477 AND\n478 DUP2\n479 MSTORE\n480 PUSH1 0x20\n482 ADD\n483 SWAP1\n484 DUP2\n485 MSTORE\n486 PUSH1 0x20\n488 ADD\n489 PUSH1 0x00\n491 SHA3\n492 SLOAD\n493 SWAP1\n494 POP\n495 SWAP2\n496 SWAP1\n497 POP\n498 JUMP", "id": "223", "isExpanded": false, "label": "427 JUMPDEST\n428 PUSH1 0x00\n430 DUP1\n431 PUSH1 0x00\n433 DUP4\n434 PUSH20 0xffffffff(...)\n(click to expand +)", "size": 150, "truncLabel": "427 JUMPDEST\n428 PUSH1 0x00\n430 DUP1\n431 PUSH1 0x00\n433 DUP4\n434 PUSH20 0xffffffff(...)\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "234 JUMPDEST\n235 PUSH1 0x40\n237 MLOAD\n238 DUP1\n239 DUP3\n240 DUP2\n241 MSTORE\n242 PUSH1 0x20\n244 ADD\n245 SWAP2\n246 POP\n247 POP\n248 PUSH1 0x40\n250 MLOAD\n251 DUP1\n252 SWAP2\n253 SUB\n254 SWAP1\n255 RETURN", "id": "224", "isExpanded": false, "label": "234 JUMPDEST\n235 PUSH1 0x40\n237 MLOAD\n238 DUP1\n239 DUP3\n240 DUP2\n(click to expand +)", "size": 150, "truncLabel": "234 JUMPDEST\n235 PUSH1 0x40\n237 MLOAD\n238 DUP1\n239 DUP3\n240 DUP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "98 JUMPDEST\n99 PUSH1 0x00\n101 DUP1\n102 REVERT", "id": "225", "isExpanded": false, "label": "98 JUMPDEST\n99 PUSH1 0x00\n101 DUP1\n102 REVERT", "size": 150, "truncLabel": "98 JUMPDEST\n99 PUSH1 0x00\n101 DUP1\n102 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "256 JUMPDEST\n257 CALLVALUE\n258 ISZERO\n259 PUSH2 0x010b\n262 JUMPI", "id": "226", "isExpanded": false, "label": "256 JUMPDEST\n257 CALLVALUE\n258 ISZERO\n259 PUSH2 0x010b\n262 JUMPI", "size": 150, "truncLabel": "256 JUMPDEST\n257 CALLVALUE\n258 ISZERO\n259 PUSH2 0x010b\n262 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "263 PUSH1 0x00\n265 DUP1\n266 REVERT", "id": "227", "isExpanded": false, "label": "263 PUSH1 0x00\n265 DUP1\n266 REVERT", "size": 150, "truncLabel": "263 PUSH1 0x00\n265 DUP1\n266 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "267 JUMPDEST\n268 PUSH2 0x0140\n271 PUSH1 0x04\n273 DUP1\n274 DUP1\n275 CALLDATALOAD\n276 PUSH20 0xffffffff(...)\n297 AND\n298 SWAP1\n299 PUSH1 0x20\n301 ADD\n302 SWAP1\n303 SWAP2\n304 SWAP1\n305 DUP1\n306 CALLDATALOAD\n307 SWAP1\n308 PUSH1 0x20\n310 ADD\n311 SWAP1\n312 SWAP2\n313 SWAP1\n314 POP\n315 POP\n316 PUSH2 0x01f3\n319 JUMP", "id": "228", "isExpanded": false, "label": "267 JUMPDEST\n268 PUSH2 0x0140\n271 PUSH1 0x04\n273 DUP1\n274 DUP1\n275 CALLDATALOAD\n(click to expand +)", "size": 150, "truncLabel": "267 JUMPDEST\n268 PUSH2 0x0140\n271 PUSH1 0x04\n273 DUP1\n274 DUP1\n275 CALLDATALOAD\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "499 JUMPDEST\n500 PUSH1 0x00\n502 DUP1\n503 DUP3\n504 PUSH1 0x00\n506 DUP1\n507 CALLER\n508 PUSH20 0xffffffff(...)\n529 AND\n530 PUSH20 0xffffffff(...)\n551 AND\n552 DUP2\n553 MSTORE\n554 PUSH1 0x20\n556 ADD\n557 SWAP1\n558 DUP2\n559 MSTORE\n560 PUSH1 0x20\n562 ADD\n563 PUSH1 0x00\n565 SHA3\n566 SLOAD\n567 SUB\n568 LT\n569 ISZERO\n570 ISZERO\n571 ISZERO\n572 PUSH2 0x0244\n575 JUMPI", "id": "229", "isExpanded": false, "label": "499 JUMPDEST\n500 PUSH1 0x00\n502 DUP1\n503 DUP3\n504 PUSH1 0x00\n506 DUP1\n(click to expand +)", "size": 150, "truncLabel": "499 JUMPDEST\n500 PUSH1 0x00\n502 DUP1\n503 DUP3\n504 PUSH1 0x00\n506 DUP1\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "580 JUMPDEST\n581 DUP2\n582 PUSH1 0x00\n584 DUP1\n585 CALLER\n586 PUSH20 0xffffffff(...)\n607 AND\n608 PUSH20 0xffffffff(...)\n629 AND\n630 DUP2\n631 MSTORE\n632 PUSH1 0x20\n634 ADD\n635 SWAP1\n636 DUP2\n637 MSTORE\n638 PUSH1 0x20\n640 ADD\n641 PUSH1 0x00\n643 SHA3\n644 PUSH1 0x00\n646 DUP3\n647 DUP3\n648 SLOAD\n649 SUB\n650 SWAP3\n651 POP\n652 POP\n653 DUP2\n654 SWAP1\n655 SSTORE", "id": "230", "isExpanded": false, "label": "580 JUMPDEST\n581 DUP2\n582 PUSH1 0x00\n584 DUP1\n585 CALLER\n586 PUSH20 0xffffffff(...)\n(click to expand +)", "size": 150, "truncLabel": "580 JUMPDEST\n581 DUP2\n582 PUSH1 0x00\n584 DUP1\n585 CALLER\n586 PUSH20 0xffffffff(...)\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n683 AND\n684 PUSH20 0xffffffff(...)\n705 AND\n706 DUP2\n707 MSTORE\n708 PUSH1 0x20\n710 ADD\n711 SWAP1\n712 DUP2\n713 MSTORE\n714 PUSH1 0x20\n716 ADD\n717 PUSH1 0x00\n719 SHA3\n720 PUSH1 0x00\n722 DUP3\n723 DUP3\n724 SLOAD\n725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n731 SSTORE", "id": "231", "isExpanded": false, "label": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n(click to expand +)", "size": 150, "truncLabel": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n683 AND\n684 PUSH20 0xffffffff(...)\n705 AND\n706 DUP2\n707 MSTORE\n708 PUSH1 0x20\n710 ADD\n711 SWAP1\n712 DUP2\n713 MSTORE\n714 PUSH1 0x20\n716 ADD\n717 PUSH1 0x00\n719 SHA3\n720 PUSH1 0x00\n722 DUP3\n723 DUP3\n724 SLOAD", "id": "232", "isExpanded": false, "label": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n(click to expand +)", "size": 150, "truncLabel": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n731 SSTORE", "id": "233", "isExpanded": false, "label": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)", "size": 150, "truncLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n731 SSTORE", "id": "234", "isExpanded": false, "label": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)", "size": 150, "truncLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x02\n735 PUSH1 0x00\n737 DUP1\n738 DUP6\n739 PUSH20 0xffffffff(...)\n760 AND\n761 PUSH20 0xffffffff(...)\n782 AND\n783 DUP2\n784 MSTORE\n785 PUSH1 0x20\n787 ADD\n788 SWAP1\n789 DUP2\n790 MSTORE\n791 PUSH1 0x20\n793 ADD\n794 PUSH1 0x00\n796 SHA3\n797 DUP2\n798 SWAP1\n799 SSTORE", "id": "235", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x02\n735 PUSH1 0x00\n737 DUP1\n738 DUP6\n739 PUSH20 0xffffffff(...)\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x02\n735 PUSH1 0x00\n737 DUP1\n738 DUP6\n739 PUSH20 0xffffffff(...)\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x02\n735 PUSH1 0x00\n737 DUP1\n738 DUP6\n739 PUSH20 0xffffffff(...)\n760 AND\n761 PUSH20 0xffffffff(...)\n782 AND\n783 DUP2\n784 MSTORE\n785 PUSH1 0x20\n787 ADD\n788 SWAP1\n789 DUP2\n790 MSTORE\n791 PUSH1 0x20\n793 ADD\n794 PUSH1 0x00\n796 SHA3\n797 DUP2\n798 SWAP1\n799 SSTORE", "id": "236", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x02\n735 PUSH1 0x00\n737 DUP1\n738 DUP6\n739 PUSH20 0xffffffff(...)\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x02\n735 PUSH1 0x00\n737 DUP1\n738 DUP6\n739 PUSH20 0xffffffff(...)\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x02\n735 PUSH1 0x00\n737 DUP1\n738 DUP6\n739 PUSH20 0xffffffff(...)\n760 AND\n761 PUSH20 0xffffffff(...)\n782 AND\n783 DUP2\n784 MSTORE\n785 PUSH1 0x20\n787 ADD\n788 SWAP1\n789 DUP2\n790 MSTORE\n791 PUSH1 0x20\n793 ADD\n794 PUSH1 0x00\n796 SHA3\n797 DUP2\n798 SWAP1\n799 SSTORE", "id": "237", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x02\n735 PUSH1 0x00\n737 DUP1\n738 DUP6\n739 PUSH20 0xffffffff(...)\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x02\n735 PUSH1 0x00\n737 DUP1\n738 DUP6\n739 PUSH20 0xffffffff(...)\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n807 POP\n808 POP\n809 JUMP", "id": "238", "isExpanded": false, "label": "800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n807 POP\n808 POP\n809 JUMP", "id": "239", "isExpanded": false, "label": "800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n807 POP\n808 POP\n809 JUMP", "id": "240", "isExpanded": false, "label": "800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "241", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "242", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "243", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n807 POP\n808 POP\n809 JUMP", "id": "244", "isExpanded": false, "label": "800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n807 POP\n808 POP\n809 JUMP", "id": "245", "isExpanded": false, "label": "800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n807 POP\n808 POP\n809 JUMP", "id": "246", "isExpanded": false, "label": "800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "247", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "248", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "249", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n807 POP\n808 POP\n809 JUMP", "id": "250", "isExpanded": false, "label": "800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n807 POP\n808 POP\n809 JUMP", "id": "251", "isExpanded": false, "label": "800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n807 POP\n808 POP\n809 JUMP", "id": "252", "isExpanded": false, "label": "800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "253", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "254", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "255", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x02\n735 PUSH1 0x00\n737 DUP1\n738 DUP6\n739 PUSH20 0xffffffff(...)\n760 AND\n761 PUSH20 0xffffffff(...)\n782 AND\n783 DUP2\n784 MSTORE\n785 PUSH1 0x20\n787 ADD\n788 SWAP1\n789 DUP2\n790 MSTORE\n791 PUSH1 0x20\n793 ADD\n794 PUSH1 0x00\n796 SHA3\n797 DUP2\n798 SWAP1\n799 SSTORE", "id": "256", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x02\n735 PUSH1 0x00\n737 DUP1\n738 DUP6\n739 PUSH20 0xffffffff(...)\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x02\n735 PUSH1 0x00\n737 DUP1\n738 DUP6\n739 PUSH20 0xffffffff(...)\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x02\n735 PUSH1 0x00\n737 DUP1\n738 DUP6\n739 PUSH20 0xffffffff(...)\n760 AND\n761 PUSH20 0xffffffff(...)\n782 AND\n783 DUP2\n784 MSTORE\n785 PUSH1 0x20\n787 ADD\n788 SWAP1\n789 DUP2\n790 MSTORE\n791 PUSH1 0x20\n793 ADD\n794 PUSH1 0x00\n796 SHA3\n797 DUP2\n798 SWAP1\n799 SSTORE", "id": "257", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x02\n735 PUSH1 0x00\n737 DUP1\n738 DUP6\n739 PUSH20 0xffffffff(...)\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x02\n735 PUSH1 0x00\n737 DUP1\n738 DUP6\n739 PUSH20 0xffffffff(...)\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x02\n735 PUSH1 0x00\n737 DUP1\n738 DUP6\n739 PUSH20 0xffffffff(...)\n760 AND\n761 PUSH20 0xffffffff(...)\n782 AND\n783 DUP2\n784 MSTORE\n785 PUSH1 0x20\n787 ADD\n788 SWAP1\n789 DUP2\n790 MSTORE\n791 PUSH1 0x20\n793 ADD\n794 PUSH1 0x00\n796 SHA3\n797 DUP2\n798 SWAP1\n799 SSTORE", "id": "258", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x02\n735 PUSH1 0x00\n737 DUP1\n738 DUP6\n739 PUSH20 0xffffffff(...)\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x02\n735 PUSH1 0x00\n737 DUP1\n738 DUP6\n739 PUSH20 0xffffffff(...)\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n807 POP\n808 POP\n809 JUMP", "id": "259", "isExpanded": false, "label": "800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n807 POP\n808 POP\n809 JUMP", "id": "260", "isExpanded": false, "label": "800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n807 POP\n808 POP\n809 JUMP", "id": "261", "isExpanded": false, "label": "800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "262", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "263", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "264", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n807 POP\n808 POP\n809 JUMP", "id": "265", "isExpanded": false, "label": "800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n807 POP\n808 POP\n809 JUMP", "id": "266", "isExpanded": false, "label": "800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n807 POP\n808 POP\n809 JUMP", "id": "267", "isExpanded": false, "label": "800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "268", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "269", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "270", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n807 POP\n808 POP\n809 JUMP", "id": "271", "isExpanded": false, "label": "800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n807 POP\n808 POP\n809 JUMP", "id": "272", "isExpanded": false, "label": "800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n807 POP\n808 POP\n809 JUMP", "id": "273", "isExpanded": false, "label": "800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "274", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "275", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "276", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x02\n735 PUSH1 0x00\n737 DUP1\n738 DUP6\n739 PUSH20 0xffffffff(...)\n760 AND\n761 PUSH20 0xffffffff(...)\n782 AND\n783 DUP2\n784 MSTORE\n785 PUSH1 0x20\n787 ADD\n788 SWAP1\n789 DUP2\n790 MSTORE\n791 PUSH1 0x20\n793 ADD\n794 PUSH1 0x00\n796 SHA3\n797 DUP2\n798 SWAP1\n799 SSTORE", "id": "277", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x02\n735 PUSH1 0x00\n737 DUP1\n738 DUP6\n739 PUSH20 0xffffffff(...)\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x02\n735 PUSH1 0x00\n737 DUP1\n738 DUP6\n739 PUSH20 0xffffffff(...)\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x02\n735 PUSH1 0x00\n737 DUP1\n738 DUP6\n739 PUSH20 0xffffffff(...)\n760 AND\n761 PUSH20 0xffffffff(...)\n782 AND\n783 DUP2\n784 MSTORE\n785 PUSH1 0x20\n787 ADD\n788 SWAP1\n789 DUP2\n790 MSTORE\n791 PUSH1 0x20\n793 ADD\n794 PUSH1 0x00\n796 SHA3\n797 DUP2\n798 SWAP1\n799 SSTORE", "id": "278", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x02\n735 PUSH1 0x00\n737 DUP1\n738 DUP6\n739 PUSH20 0xffffffff(...)\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x02\n735 PUSH1 0x00\n737 DUP1\n738 DUP6\n739 PUSH20 0xffffffff(...)\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n807 POP\n808 POP\n809 JUMP", "id": "279", "isExpanded": false, "label": "800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n807 POP\n808 POP\n809 JUMP", "id": "280", "isExpanded": false, "label": "800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "281", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "282", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n807 POP\n808 POP\n809 JUMP", "id": "283", "isExpanded": false, "label": "800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n807 POP\n808 POP\n809 JUMP", "id": "284", "isExpanded": false, "label": "800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "285", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "286", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}];
+        var edges = [{"arrows": "to", "from": "204", "label": "ULE(4, 8_calldatasize)", "smooth": {"type": "cubicBezier"}, "to": "205"}, {"arrows": "to", "from": "204", "label": "Not(ULE(4, 8_calldatasize))", "smooth": {"type": "cubicBezier"}, "to": "206"}, {"arrows": "to", "from": "205", "label": "Not(And(8_calldata[3] == 0xdd,        8_calldata[2] == 13,        8_calldata[1] == 22,        8_calldata[0] == 24))", "smooth": {"type": "cubicBezier"}, "to": "207"}, {"arrows": "to", "from": "205", "label": "And(8_calldata[3] == 0xdd,    8_calldata[2] == 13,    8_calldata[1] == 22,    8_calldata[0] == 24)", "smooth": {"type": "cubicBezier"}, "to": "208"}, {"arrows": "to", "from": "208", "label": "Not(call_value8 == 0)", "smooth": {"type": "cubicBezier"}, "to": "209"}, {"arrows": "to", "from": "208", "label": "call_value8 == 0", "smooth": {"type": "cubicBezier"}, "to": "210"}, {"arrows": "to", "from": "210", "label": "", "smooth": {"type": "cubicBezier"}, "to": "211"}, {"arrows": "to", "from": "211", "label": "", "smooth": {"type": "cubicBezier"}, "to": "212"}, {"arrows": "to", "from": "207", "label": "Not(And(8_calldata[3] == 0xd1,        8_calldata[2] == 0xbf,        8_calldata[1] == 65,        8_calldata[0] == 98))", "smooth": {"type": "cubicBezier"}, "to": "213"}, {"arrows": "to", "from": "207", "label": "And(8_calldata[3] == 0xd1,    8_calldata[2] == 0xbf,    8_calldata[1] == 65,    8_calldata[0] == 98)", "smooth": {"type": "cubicBezier"}, "to": "214"}, {"arrows": "to", "from": "214", "label": "Not(call_value8 == 0)", "smooth": {"type": "cubicBezier"}, "to": "215"}, {"arrows": "to", "from": "214", "label": "call_value8 == 0", "smooth": {"type": "cubicBezier"}, "to": "216"}, {"arrows": "to", "from": "216", "label": "", "smooth": {"type": "cubicBezier"}, "to": "217"}, {"arrows": "to", "from": "217", "label": "", "smooth": {"type": "cubicBezier"}, "to": "218"}, {"arrows": "to", "from": "213", "label": "Not(And(8_calldata[3] == 49,        8_calldata[2] == 0x82,        8_calldata[1] == 0xa0,        8_calldata[0] == 0x70))", "smooth": {"type": "cubicBezier"}, "to": "219"}, {"arrows": "to", "from": "213", "label": "And(8_calldata[3] == 49,    8_calldata[2] == 0x82,    8_calldata[1] == 0xa0,    8_calldata[0] == 0x70)", "smooth": {"type": "cubicBezier"}, "to": "220"}, {"arrows": "to", "from": "220", "label": "Not(call_value8 == 0)", "smooth": {"type": "cubicBezier"}, "to": "221"}, {"arrows": "to", "from": "220", "label": "call_value8 == 0", "smooth": {"type": "cubicBezier"}, "to": "222"}, {"arrows": "to", "from": "222", "label": "", "smooth": {"type": "cubicBezier"}, "to": "223"}, {"arrows": "to", "from": "223", "label": "", "smooth": {"type": "cubicBezier"}, "to": "224"}, {"arrows": "to", "from": "219", "label": "Not(And(8_calldata[3] == 0x87,        8_calldata[2] == 14,        8_calldata[1] == 33,        8_calldata[0] == 0xa3))", "smooth": {"type": "cubicBezier"}, "to": "225"}, {"arrows": "to", "from": "219", "label": "And(8_calldata[3] == 0x87,    8_calldata[2] == 14,    8_calldata[1] == 33,    8_calldata[0] == 0xa3)", "smooth": {"type": "cubicBezier"}, "to": "226"}, {"arrows": "to", "from": "226", "label": "Not(call_value8 == 0)", "smooth": {"type": "cubicBezier"}, "to": "227"}, {"arrows": "to", "from": "226", "label": "call_value8 == 0", "smooth": {"type": "cubicBezier"}, "to": "228"}, {"arrows": "to", "from": "228", "label": "", "smooth": {"type": "cubicBezier"}, "to": "229"}, {"arrows": "to", "from": "229", "label": "True", "smooth": {"type": "cubicBezier"}, "to": "230"}, {"arrows": "to", "from": "230", "label": "And(8_calldata[35] == Extract(7, 0, caller8),    8_calldata[34] == Extract(15, 8, caller8),    8_calldata[33] == Extract(23, 16, caller8),    8_calldata[32] == Extract(31, 24, caller8),    8_calldata[31] == Extract(39, 32, caller8),    8_calldata[30] == Extract(47, 40, caller8),    8_calldata[29] == Extract(55, 48, caller8),    8_calldata[28] == Extract(63, 56, caller8),    8_calldata[27] == Extract(71, 64, caller8),    8_calldata[26] == Extract(79, 72, caller8),    8_calldata[25] == Extract(87, 80, caller8),    8_calldata[24] == Extract(95, 88, caller8),    8_calldata[23] == Extract(0x67, 96, caller8),    8_calldata[22] == Extract(0x6f, 0x68, caller8),    8_calldata[21] == Extract(0x77, 0x70, caller8),    8_calldata[20] == Extract(0x7f, 0x78, caller8),    8_calldata[19] == Extract(0x87, 0x80, caller8),    8_calldata[18] == Extract(0x8f, 0x88, caller8),    8_calldata[17] == Extract(0x97, 0x90, caller8),    8_calldata[16] == Extract(0x9f, 0x98, caller8))", "smooth": {"type": "cubicBezier"}, "to": "231"}, {"arrows": "to", "from": "230", "label": "Not(And(8_calldata[35] == Extract(7, 0, caller8),        8_calldata[34] == Extract(15, 8, caller8),        8_calldata[33] == Extract(23, 16, caller8),        8_calldata[32] == Extract(31, 24, caller8),        8_calldata[31] == Extract(39, 32, caller8),        8_calldata[30] == Extract(47, 40, caller8),        8_calldata[29] == Extract(55, 48, caller8),        8_calldata[28] == Extract(63, 56, caller8),        8_calldata[27] == Extract(71, 64, caller8),        8_calldata[26] == Extract(79, 72, caller8),        8_calldata[25] == Extract(87, 80, caller8),        8_calldata[24] == Extract(95, 88, caller8),        8_calldata[23] == Extract(0x67, 96, caller8),        8_calldata[22] == Extract(0x6f, 0x68, caller8),        8_calldata[21] == Extract(0x77, 0x70, caller8),        8_calldata[20] == Extract(0x7f, 0x78, caller8),        8_calldata[19] == Extract(0x87, 0x80, caller8),        8_calldata[18] == Extract(0x8f, 0x88, caller8),        8_calldata[17] == Extract(0x97, 0x90, caller8),        8_calldata[16] == Extract(0x9f, 0x98, caller8)))", "smooth": {"type": "cubicBezier"}, "to": "232"}, {"arrows": "to", "from": "232", "label": "True", "smooth": {"type": "cubicBezier"}, "to": "233"}, {"arrows": "to", "from": "232", "label": "And(Extract(7, 0, caller8) == 8_calldata[35],    Extract(15, 8, caller8) == 8_calldata[34],    Extract(23, 16, caller8) == 8_calldata[33],    Extract(31, 24, caller8) == 8_calldata[32],    Extract(39, 32, caller8) == 8_calldata[31],    Extract(47, 40, caller8) == 8_calldata[30],    Extract(55, 48, caller8) == 8_calldata[29],    Extract(63, 56, caller8) == 8_calldata[28],    Extract(71, 64, caller8) == 8_calldata[27],    Extract(79, 72, caller8) == 8_calldata[26],    Extract(87, 80, caller8) == 8_calldata[25],    Extract(95, 88, caller8) == 8_calldata[24],    Extract(0x67, 96, caller8) == 8_calldata[23],    Extract(0x6f, 0x68, caller8) == 8_calldata[22],    Extract(0x77, 0x70, caller8) == 8_calldata[21],    Extract(0x7f, 0x78, caller8) == 8_calldata[20],    Extract(0x87, 0x80, caller8) == 8_calldata[19],    Extract(0x8f, 0x88, caller8) == 8_calldata[18],    Extract(0x97, 0x90, caller8) == 8_calldata[17],    Extract(0x9f, 0x98, caller8) == 8_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "234"}, {"arrows": "to", "from": "234", "label": "True", "smooth": {"type": "cubicBezier"}, "to": "235"}, {"arrows": "to", "from": "234", "label": "And(Extract(7, 0, caller8) == 8_calldata[35],    Extract(15, 8, caller8) == 8_calldata[34],    Extract(23, 16, caller8) == 8_calldata[33],    Extract(31, 24, caller8) == 8_calldata[32],    Extract(39, 32, caller8) == 8_calldata[31],    Extract(47, 40, caller8) == 8_calldata[30],    Extract(55, 48, caller8) == 8_calldata[29],    Extract(63, 56, caller8) == 8_calldata[28],    Extract(71, 64, caller8) == 8_calldata[27],    Extract(79, 72, caller8) == 8_calldata[26],    Extract(87, 80, caller8) == 8_calldata[25],    Extract(95, 88, caller8) == 8_calldata[24],    Extract(0x67, 96, caller8) == 8_calldata[23],    Extract(0x6f, 0x68, caller8) == 8_calldata[22],    Extract(0x77, 0x70, caller8) == 8_calldata[21],    Extract(0x7f, 0x78, caller8) == 8_calldata[20],    Extract(0x87, 0x80, caller8) == 8_calldata[19],    Extract(0x8f, 0x88, caller8) == 8_calldata[18],    Extract(0x97, 0x90, caller8) == 8_calldata[17],    Extract(0x9f, 0x98, caller8) == 8_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "236"}, {"arrows": "to", "from": "234", "label": "Not(And(Extract(7, 0, caller8) == 8_calldata[35],        Extract(15, 8, caller8) == 8_calldata[34],        Extract(23, 16, caller8) == 8_calldata[33],        Extract(31, 24, caller8) == 8_calldata[32],        Extract(39, 32, caller8) == 8_calldata[31],        Extract(47, 40, caller8) == 8_calldata[30],        Extract(55, 48, caller8) == 8_calldata[29],        Extract(63, 56, caller8) == 8_calldata[28],        Extract(71, 64, caller8) == 8_calldata[27],        Extract(79, 72, caller8) == 8_calldata[26],        Extract(87, 80, caller8) == 8_calldata[25],        Extract(95, 88, caller8) == 8_calldata[24],        Extract(0x67, 96, caller8) == 8_calldata[23],        Extract(0x6f, 0x68, caller8) == 8_calldata[22],        Extract(0x77, 0x70, caller8) == 8_calldata[21],        Extract(0x7f, 0x78, caller8) == 8_calldata[20],        Extract(0x87, 0x80, caller8) == 8_calldata[19],        Extract(0x8f, 0x88, caller8) == 8_calldata[18],        Extract(0x97, 0x90, caller8) == 8_calldata[17],        Extract(0x9f, 0x98, caller8) == 8_calldata[16]))", "smooth": {"type": "cubicBezier"}, "to": "237"}, {"arrows": "to", "from": "237", "label": "True", "smooth": {"type": "cubicBezier"}, "to": "238"}, {"arrows": "to", "from": "237", "label": "And(Extract(7, 0, caller8) == 8_calldata[35],    Extract(15, 8, caller8) == 8_calldata[34],    Extract(23, 16, caller8) == 8_calldata[33],    Extract(31, 24, caller8) == 8_calldata[32],    Extract(39, 32, caller8) == 8_calldata[31],    Extract(47, 40, caller8) == 8_calldata[30],    Extract(55, 48, caller8) == 8_calldata[29],    Extract(63, 56, caller8) == 8_calldata[28],    Extract(71, 64, caller8) == 8_calldata[27],    Extract(79, 72, caller8) == 8_calldata[26],    Extract(87, 80, caller8) == 8_calldata[25],    Extract(95, 88, caller8) == 8_calldata[24],    Extract(0x67, 96, caller8) == 8_calldata[23],    Extract(0x6f, 0x68, caller8) == 8_calldata[22],    Extract(0x77, 0x70, caller8) == 8_calldata[21],    Extract(0x7f, 0x78, caller8) == 8_calldata[20],    Extract(0x87, 0x80, caller8) == 8_calldata[19],    Extract(0x8f, 0x88, caller8) == 8_calldata[18],    Extract(0x97, 0x90, caller8) == 8_calldata[17],    Extract(0x9f, 0x98, caller8) == 8_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "239"}, {"arrows": "to", "from": "237", "label": "Not(And(Extract(7, 0, caller8) == 8_calldata[35],        Extract(15, 8, caller8) == 8_calldata[34],        Extract(23, 16, caller8) == 8_calldata[33],        Extract(31, 24, caller8) == 8_calldata[32],        Extract(39, 32, caller8) == 8_calldata[31],        Extract(47, 40, caller8) == 8_calldata[30],        Extract(55, 48, caller8) == 8_calldata[29],        Extract(63, 56, caller8) == 8_calldata[28],        Extract(71, 64, caller8) == 8_calldata[27],        Extract(79, 72, caller8) == 8_calldata[26],        Extract(87, 80, caller8) == 8_calldata[25],        Extract(95, 88, caller8) == 8_calldata[24],        Extract(0x67, 96, caller8) == 8_calldata[23],        Extract(0x6f, 0x68, caller8) == 8_calldata[22],        Extract(0x77, 0x70, caller8) == 8_calldata[21],        Extract(0x7f, 0x78, caller8) == 8_calldata[20],        Extract(0x87, 0x80, caller8) == 8_calldata[19],        Extract(0x8f, 0x88, caller8) == 8_calldata[18],        Extract(0x97, 0x90, caller8) == 8_calldata[17],        Extract(0x9f, 0x98, caller8) == 8_calldata[16]))", "smooth": {"type": "cubicBezier"}, "to": "240"}, {"arrows": "to", "from": "240", "label": "", "smooth": {"type": "cubicBezier"}, "to": "241"}, {"arrows": "to", "from": "239", "label": "", "smooth": {"type": "cubicBezier"}, "to": "242"}, {"arrows": "to", "from": "238", "label": "", "smooth": {"type": "cubicBezier"}, "to": "243"}, {"arrows": "to", "from": "236", "label": "True", "smooth": {"type": "cubicBezier"}, "to": "244"}, {"arrows": "to", "from": "236", "label": "And(Extract(7, 0, caller8) == 8_calldata[35],    Extract(15, 8, caller8) == 8_calldata[34],    Extract(23, 16, caller8) == 8_calldata[33],    Extract(31, 24, caller8) == 8_calldata[32],    Extract(39, 32, caller8) == 8_calldata[31],    Extract(47, 40, caller8) == 8_calldata[30],    Extract(55, 48, caller8) == 8_calldata[29],    Extract(63, 56, caller8) == 8_calldata[28],    Extract(71, 64, caller8) == 8_calldata[27],    Extract(79, 72, caller8) == 8_calldata[26],    Extract(87, 80, caller8) == 8_calldata[25],    Extract(95, 88, caller8) == 8_calldata[24],    Extract(0x67, 96, caller8) == 8_calldata[23],    Extract(0x6f, 0x68, caller8) == 8_calldata[22],    Extract(0x77, 0x70, caller8) == 8_calldata[21],    Extract(0x7f, 0x78, caller8) == 8_calldata[20],    Extract(0x87, 0x80, caller8) == 8_calldata[19],    Extract(0x8f, 0x88, caller8) == 8_calldata[18],    Extract(0x97, 0x90, caller8) == 8_calldata[17],    Extract(0x9f, 0x98, caller8) == 8_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "245"}, {"arrows": "to", "from": "236", "label": "Not(And(Extract(7, 0, caller8) == 8_calldata[35],        Extract(15, 8, caller8) == 8_calldata[34],        Extract(23, 16, caller8) == 8_calldata[33],        Extract(31, 24, caller8) == 8_calldata[32],        Extract(39, 32, caller8) == 8_calldata[31],        Extract(47, 40, caller8) == 8_calldata[30],        Extract(55, 48, caller8) == 8_calldata[29],        Extract(63, 56, caller8) == 8_calldata[28],        Extract(71, 64, caller8) == 8_calldata[27],        Extract(79, 72, caller8) == 8_calldata[26],        Extract(87, 80, caller8) == 8_calldata[25],        Extract(95, 88, caller8) == 8_calldata[24],        Extract(0x67, 96, caller8) == 8_calldata[23],        Extract(0x6f, 0x68, caller8) == 8_calldata[22],        Extract(0x77, 0x70, caller8) == 8_calldata[21],        Extract(0x7f, 0x78, caller8) == 8_calldata[20],        Extract(0x87, 0x80, caller8) == 8_calldata[19],        Extract(0x8f, 0x88, caller8) == 8_calldata[18],        Extract(0x97, 0x90, caller8) == 8_calldata[17],        Extract(0x9f, 0x98, caller8) == 8_calldata[16]))", "smooth": {"type": "cubicBezier"}, "to": "246"}, {"arrows": "to", "from": "246", "label": "", "smooth": {"type": "cubicBezier"}, "to": "247"}, {"arrows": "to", "from": "245", "label": "", "smooth": {"type": "cubicBezier"}, "to": "248"}, {"arrows": "to", "from": "244", "label": "", "smooth": {"type": "cubicBezier"}, "to": "249"}, {"arrows": "to", "from": "235", "label": "True", "smooth": {"type": "cubicBezier"}, "to": "250"}, {"arrows": "to", "from": "235", "label": "And(Extract(7, 0, caller8) == 8_calldata[35],    Extract(15, 8, caller8) == 8_calldata[34],    Extract(23, 16, caller8) == 8_calldata[33],    Extract(31, 24, caller8) == 8_calldata[32],    Extract(39, 32, caller8) == 8_calldata[31],    Extract(47, 40, caller8) == 8_calldata[30],    Extract(55, 48, caller8) == 8_calldata[29],    Extract(63, 56, caller8) == 8_calldata[28],    Extract(71, 64, caller8) == 8_calldata[27],    Extract(79, 72, caller8) == 8_calldata[26],    Extract(87, 80, caller8) == 8_calldata[25],    Extract(95, 88, caller8) == 8_calldata[24],    Extract(0x67, 96, caller8) == 8_calldata[23],    Extract(0x6f, 0x68, caller8) == 8_calldata[22],    Extract(0x77, 0x70, caller8) == 8_calldata[21],    Extract(0x7f, 0x78, caller8) == 8_calldata[20],    Extract(0x87, 0x80, caller8) == 8_calldata[19],    Extract(0x8f, 0x88, caller8) == 8_calldata[18],    Extract(0x97, 0x90, caller8) == 8_calldata[17],    Extract(0x9f, 0x98, caller8) == 8_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "251"}, {"arrows": "to", "from": "235", "label": "Not(And(Extract(7, 0, caller8) == 8_calldata[35],        Extract(15, 8, caller8) == 8_calldata[34],        Extract(23, 16, caller8) == 8_calldata[33],        Extract(31, 24, caller8) == 8_calldata[32],        Extract(39, 32, caller8) == 8_calldata[31],        Extract(47, 40, caller8) == 8_calldata[30],        Extract(55, 48, caller8) == 8_calldata[29],        Extract(63, 56, caller8) == 8_calldata[28],        Extract(71, 64, caller8) == 8_calldata[27],        Extract(79, 72, caller8) == 8_calldata[26],        Extract(87, 80, caller8) == 8_calldata[25],        Extract(95, 88, caller8) == 8_calldata[24],        Extract(0x67, 96, caller8) == 8_calldata[23],        Extract(0x6f, 0x68, caller8) == 8_calldata[22],        Extract(0x77, 0x70, caller8) == 8_calldata[21],        Extract(0x7f, 0x78, caller8) == 8_calldata[20],        Extract(0x87, 0x80, caller8) == 8_calldata[19],        Extract(0x8f, 0x88, caller8) == 8_calldata[18],        Extract(0x97, 0x90, caller8) == 8_calldata[17],        Extract(0x9f, 0x98, caller8) == 8_calldata[16]))", "smooth": {"type": "cubicBezier"}, "to": "252"}, {"arrows": "to", "from": "252", "label": "", "smooth": {"type": "cubicBezier"}, "to": "253"}, {"arrows": "to", "from": "251", "label": "", "smooth": {"type": "cubicBezier"}, "to": "254"}, {"arrows": "to", "from": "250", "label": "", "smooth": {"type": "cubicBezier"}, "to": "255"}, {"arrows": "to", "from": "233", "label": "True", "smooth": {"type": "cubicBezier"}, "to": "256"}, {"arrows": "to", "from": "233", "label": "And(Extract(7, 0, caller8) == 8_calldata[35],    Extract(15, 8, caller8) == 8_calldata[34],    Extract(23, 16, caller8) == 8_calldata[33],    Extract(31, 24, caller8) == 8_calldata[32],    Extract(39, 32, caller8) == 8_calldata[31],    Extract(47, 40, caller8) == 8_calldata[30],    Extract(55, 48, caller8) == 8_calldata[29],    Extract(63, 56, caller8) == 8_calldata[28],    Extract(71, 64, caller8) == 8_calldata[27],    Extract(79, 72, caller8) == 8_calldata[26],    Extract(87, 80, caller8) == 8_calldata[25],    Extract(95, 88, caller8) == 8_calldata[24],    Extract(0x67, 96, caller8) == 8_calldata[23],    Extract(0x6f, 0x68, caller8) == 8_calldata[22],    Extract(0x77, 0x70, caller8) == 8_calldata[21],    Extract(0x7f, 0x78, caller8) == 8_calldata[20],    Extract(0x87, 0x80, caller8) == 8_calldata[19],    Extract(0x8f, 0x88, caller8) == 8_calldata[18],    Extract(0x97, 0x90, caller8) == 8_calldata[17],    Extract(0x9f, 0x98, caller8) == 8_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "257"}, {"arrows": "to", "from": "233", "label": "Not(And(Extract(7, 0, caller8) == 8_calldata[35],        Extract(15, 8, caller8) == 8_calldata[34],        Extract(23, 16, caller8) == 8_calldata[33],        Extract(31, 24, caller8) == 8_calldata[32],        Extract(39, 32, caller8) == 8_calldata[31],        Extract(47, 40, caller8) == 8_calldata[30],        Extract(55, 48, caller8) == 8_calldata[29],        Extract(63, 56, caller8) == 8_calldata[28],        Extract(71, 64, caller8) == 8_calldata[27],        Extract(79, 72, caller8) == 8_calldata[26],        Extract(87, 80, caller8) == 8_calldata[25],        Extract(95, 88, caller8) == 8_calldata[24],        Extract(0x67, 96, caller8) == 8_calldata[23],        Extract(0x6f, 0x68, caller8) == 8_calldata[22],        Extract(0x77, 0x70, caller8) == 8_calldata[21],        Extract(0x7f, 0x78, caller8) == 8_calldata[20],        Extract(0x87, 0x80, caller8) == 8_calldata[19],        Extract(0x8f, 0x88, caller8) == 8_calldata[18],        Extract(0x97, 0x90, caller8) == 8_calldata[17],        Extract(0x9f, 0x98, caller8) == 8_calldata[16]))", "smooth": {"type": "cubicBezier"}, "to": "258"}, {"arrows": "to", "from": "258", "label": "True", "smooth": {"type": "cubicBezier"}, "to": "259"}, {"arrows": "to", "from": "258", "label": "And(Extract(7, 0, caller8) == 8_calldata[35],    Extract(15, 8, caller8) == 8_calldata[34],    Extract(23, 16, caller8) == 8_calldata[33],    Extract(31, 24, caller8) == 8_calldata[32],    Extract(39, 32, caller8) == 8_calldata[31],    Extract(47, 40, caller8) == 8_calldata[30],    Extract(55, 48, caller8) == 8_calldata[29],    Extract(63, 56, caller8) == 8_calldata[28],    Extract(71, 64, caller8) == 8_calldata[27],    Extract(79, 72, caller8) == 8_calldata[26],    Extract(87, 80, caller8) == 8_calldata[25],    Extract(95, 88, caller8) == 8_calldata[24],    Extract(0x67, 96, caller8) == 8_calldata[23],    Extract(0x6f, 0x68, caller8) == 8_calldata[22],    Extract(0x77, 0x70, caller8) == 8_calldata[21],    Extract(0x7f, 0x78, caller8) == 8_calldata[20],    Extract(0x87, 0x80, caller8) == 8_calldata[19],    Extract(0x8f, 0x88, caller8) == 8_calldata[18],    Extract(0x97, 0x90, caller8) == 8_calldata[17],    Extract(0x9f, 0x98, caller8) == 8_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "260"}, {"arrows": "to", "from": "258", "label": "Not(And(Extract(7, 0, caller8) == 8_calldata[35],        Extract(15, 8, caller8) == 8_calldata[34],        Extract(23, 16, caller8) == 8_calldata[33],        Extract(31, 24, caller8) == 8_calldata[32],        Extract(39, 32, caller8) == 8_calldata[31],        Extract(47, 40, caller8) == 8_calldata[30],        Extract(55, 48, caller8) == 8_calldata[29],        Extract(63, 56, caller8) == 8_calldata[28],        Extract(71, 64, caller8) == 8_calldata[27],        Extract(79, 72, caller8) == 8_calldata[26],        Extract(87, 80, caller8) == 8_calldata[25],        Extract(95, 88, caller8) == 8_calldata[24],        Extract(0x67, 96, caller8) == 8_calldata[23],        Extract(0x6f, 0x68, caller8) == 8_calldata[22],        Extract(0x77, 0x70, caller8) == 8_calldata[21],        Extract(0x7f, 0x78, caller8) == 8_calldata[20],        Extract(0x87, 0x80, caller8) == 8_calldata[19],        Extract(0x8f, 0x88, caller8) == 8_calldata[18],        Extract(0x97, 0x90, caller8) == 8_calldata[17],        Extract(0x9f, 0x98, caller8) == 8_calldata[16]))", "smooth": {"type": "cubicBezier"}, "to": "261"}, {"arrows": "to", "from": "261", "label": "", "smooth": {"type": "cubicBezier"}, "to": "262"}, {"arrows": "to", "from": "260", "label": "", "smooth": {"type": "cubicBezier"}, "to": "263"}, {"arrows": "to", "from": "259", "label": "", "smooth": {"type": "cubicBezier"}, "to": "264"}, {"arrows": "to", "from": "257", "label": "True", "smooth": {"type": "cubicBezier"}, "to": "265"}, {"arrows": "to", "from": "257", "label": "And(Extract(7, 0, caller8) == 8_calldata[35],    Extract(15, 8, caller8) == 8_calldata[34],    Extract(23, 16, caller8) == 8_calldata[33],    Extract(31, 24, caller8) == 8_calldata[32],    Extract(39, 32, caller8) == 8_calldata[31],    Extract(47, 40, caller8) == 8_calldata[30],    Extract(55, 48, caller8) == 8_calldata[29],    Extract(63, 56, caller8) == 8_calldata[28],    Extract(71, 64, caller8) == 8_calldata[27],    Extract(79, 72, caller8) == 8_calldata[26],    Extract(87, 80, caller8) == 8_calldata[25],    Extract(95, 88, caller8) == 8_calldata[24],    Extract(0x67, 96, caller8) == 8_calldata[23],    Extract(0x6f, 0x68, caller8) == 8_calldata[22],    Extract(0x77, 0x70, caller8) == 8_calldata[21],    Extract(0x7f, 0x78, caller8) == 8_calldata[20],    Extract(0x87, 0x80, caller8) == 8_calldata[19],    Extract(0x8f, 0x88, caller8) == 8_calldata[18],    Extract(0x97, 0x90, caller8) == 8_calldata[17],    Extract(0x9f, 0x98, caller8) == 8_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "266"}, {"arrows": "to", "from": "257", "label": "Not(And(Extract(7, 0, caller8) == 8_calldata[35],        Extract(15, 8, caller8) == 8_calldata[34],        Extract(23, 16, caller8) == 8_calldata[33],        Extract(31, 24, caller8) == 8_calldata[32],        Extract(39, 32, caller8) == 8_calldata[31],        Extract(47, 40, caller8) == 8_calldata[30],        Extract(55, 48, caller8) == 8_calldata[29],        Extract(63, 56, caller8) == 8_calldata[28],        Extract(71, 64, caller8) == 8_calldata[27],        Extract(79, 72, caller8) == 8_calldata[26],        Extract(87, 80, caller8) == 8_calldata[25],        Extract(95, 88, caller8) == 8_calldata[24],        Extract(0x67, 96, caller8) == 8_calldata[23],        Extract(0x6f, 0x68, caller8) == 8_calldata[22],        Extract(0x77, 0x70, caller8) == 8_calldata[21],        Extract(0x7f, 0x78, caller8) == 8_calldata[20],        Extract(0x87, 0x80, caller8) == 8_calldata[19],        Extract(0x8f, 0x88, caller8) == 8_calldata[18],        Extract(0x97, 0x90, caller8) == 8_calldata[17],        Extract(0x9f, 0x98, caller8) == 8_calldata[16]))", "smooth": {"type": "cubicBezier"}, "to": "267"}, {"arrows": "to", "from": "267", "label": "", "smooth": {"type": "cubicBezier"}, "to": "268"}, {"arrows": "to", "from": "266", "label": "", "smooth": {"type": "cubicBezier"}, "to": "269"}, {"arrows": "to", "from": "265", "label": "", "smooth": {"type": "cubicBezier"}, "to": "270"}, {"arrows": "to", "from": "256", "label": "True", "smooth": {"type": "cubicBezier"}, "to": "271"}, {"arrows": "to", "from": "256", "label": "And(Extract(7, 0, caller8) == 8_calldata[35],    Extract(15, 8, caller8) == 8_calldata[34],    Extract(23, 16, caller8) == 8_calldata[33],    Extract(31, 24, caller8) == 8_calldata[32],    Extract(39, 32, caller8) == 8_calldata[31],    Extract(47, 40, caller8) == 8_calldata[30],    Extract(55, 48, caller8) == 8_calldata[29],    Extract(63, 56, caller8) == 8_calldata[28],    Extract(71, 64, caller8) == 8_calldata[27],    Extract(79, 72, caller8) == 8_calldata[26],    Extract(87, 80, caller8) == 8_calldata[25],    Extract(95, 88, caller8) == 8_calldata[24],    Extract(0x67, 96, caller8) == 8_calldata[23],    Extract(0x6f, 0x68, caller8) == 8_calldata[22],    Extract(0x77, 0x70, caller8) == 8_calldata[21],    Extract(0x7f, 0x78, caller8) == 8_calldata[20],    Extract(0x87, 0x80, caller8) == 8_calldata[19],    Extract(0x8f, 0x88, caller8) == 8_calldata[18],    Extract(0x97, 0x90, caller8) == 8_calldata[17],    Extract(0x9f, 0x98, caller8) == 8_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "272"}, {"arrows": "to", "from": "256", "label": "Not(And(Extract(7, 0, caller8) == 8_calldata[35],        Extract(15, 8, caller8) == 8_calldata[34],        Extract(23, 16, caller8) == 8_calldata[33],        Extract(31, 24, caller8) == 8_calldata[32],        Extract(39, 32, caller8) == 8_calldata[31],        Extract(47, 40, caller8) == 8_calldata[30],        Extract(55, 48, caller8) == 8_calldata[29],        Extract(63, 56, caller8) == 8_calldata[28],        Extract(71, 64, caller8) == 8_calldata[27],        Extract(79, 72, caller8) == 8_calldata[26],        Extract(87, 80, caller8) == 8_calldata[25],        Extract(95, 88, caller8) == 8_calldata[24],        Extract(0x67, 96, caller8) == 8_calldata[23],        Extract(0x6f, 0x68, caller8) == 8_calldata[22],        Extract(0x77, 0x70, caller8) == 8_calldata[21],        Extract(0x7f, 0x78, caller8) == 8_calldata[20],        Extract(0x87, 0x80, caller8) == 8_calldata[19],        Extract(0x8f, 0x88, caller8) == 8_calldata[18],        Extract(0x97, 0x90, caller8) == 8_calldata[17],        Extract(0x9f, 0x98, caller8) == 8_calldata[16]))", "smooth": {"type": "cubicBezier"}, "to": "273"}, {"arrows": "to", "from": "273", "label": "", "smooth": {"type": "cubicBezier"}, "to": "274"}, {"arrows": "to", "from": "272", "label": "", "smooth": {"type": "cubicBezier"}, "to": "275"}, {"arrows": "to", "from": "271", "label": "", "smooth": {"type": "cubicBezier"}, "to": "276"}, {"arrows": "to", "from": "231", "label": "True", "smooth": {"type": "cubicBezier"}, "to": "277"}, {"arrows": "to", "from": "231", "label": "False", "smooth": {"type": "cubicBezier"}, "to": "278"}, {"arrows": "to", "from": "278", "label": "True", "smooth": {"type": "cubicBezier"}, "to": "279"}, {"arrows": "to", "from": "278", "label": "False", "smooth": {"type": "cubicBezier"}, "to": "280"}, {"arrows": "to", "from": "280", "label": "", "smooth": {"type": "cubicBezier"}, "to": "281"}, {"arrows": "to", "from": "279", "label": "", "smooth": {"type": "cubicBezier"}, "to": "282"}, {"arrows": "to", "from": "277", "label": "True", "smooth": {"type": "cubicBezier"}, "to": "283"}, {"arrows": "to", "from": "277", "label": "False", "smooth": {"type": "cubicBezier"}, "to": "284"}, {"arrows": "to", "from": "284", "label": "", "smooth": {"type": "cubicBezier"}, "to": "285"}, {"arrows": "to", "from": "283", "label": "", "smooth": {"type": "cubicBezier"}, "to": "286"}];
+    </script>
+</head>
+<body>
+<p>Mythril / Ethereum LASER Symbolic VM</p>
+<div id="mynetwork"></div>
+<script type="text/javascript">
+    var container = document.getElementById('mynetwork');
+
+    var nodesSet = new vis.DataSet(nodes);
+    var edgesSet = new vis.DataSet(edges);
+    var data = {'nodes': nodesSet, 'edges': edgesSet}
+
+    var gph = new vis.Network(container, data, options);
+    gph.on("click", function (params) {
+        // parse node id
+        var nodeID = params['nodes']['0'];
+        if (nodeID) {
+            var clickedNode = nodesSet.get(nodeID);
+
+            if(clickedNode.isExpanded) {
+                clickedNode.label = clickedNode.truncLabel;
+            }
+            else {
+                clickedNode.label = clickedNode.fullLabel;
+            }
+
+            clickedNode.isExpanded = !clickedNode.isExpanded;
+
+            nodesSet.update(clickedNode);
+        }
+    });
+</script>
+</body>
+</html>
diff --git a/tests/testdata/outputs_expected/returnvalue.sol.o.easm b/tests/testdata/outputs_expected/returnvalue.sol.o.easm
new file mode 100644
index 0000000000000000000000000000000000000000..13a426cca0a306473b9c0a487faa213d8fde5b4d
--- /dev/null
+++ b/tests/testdata/outputs_expected/returnvalue.sol.o.easm
@@ -0,0 +1,129 @@
+0 PUSH1 0x60
+2 PUSH1 0x40
+4 MSTORE
+5 PUSH1 0x04
+7 CALLDATASIZE
+8 LT
+9 PUSH2 0x004c
+12 JUMPI
+13 PUSH1 0x00
+15 CALLDATALOAD
+16 PUSH29 0x0100000000000000000000000000000000000000000000000000000000
+46 SWAP1
+47 DIV
+48 PUSH4 0xffffffff
+53 AND
+54 DUP1
+55 PUSH4 0x633ab5e0
+60 EQ
+61 PUSH2 0x0051
+64 JUMPI
+65 DUP1
+66 PUSH4 0xe3bea282
+71 EQ
+72 PUSH2 0x0066
+75 JUMPI
+76 JUMPDEST
+77 PUSH1 0x00
+79 DUP1
+80 REVERT
+81 JUMPDEST
+82 CALLVALUE
+83 ISZERO
+84 PUSH2 0x005c
+87 JUMPI
+88 PUSH1 0x00
+90 DUP1
+91 REVERT
+92 JUMPDEST
+93 PUSH2 0x0064
+96 PUSH2 0x007b
+99 JUMP
+100 JUMPDEST
+101 STOP
+102 JUMPDEST
+103 CALLVALUE
+104 ISZERO
+105 PUSH2 0x0071
+108 JUMPI
+109 PUSH1 0x00
+111 DUP1
+112 REVERT
+113 JUMPDEST
+114 PUSH2 0x0079
+117 PUSH2 0x00d4
+120 JUMP
+121 JUMPDEST
+122 STOP
+123 JUMPDEST
+124 PUSH1 0x00
+126 DUP1
+127 SWAP1
+128 SLOAD
+129 SWAP1
+130 PUSH2 0x0100
+133 EXP
+134 SWAP1
+135 DIV
+136 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+157 AND
+158 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+179 AND
+180 PUSH1 0x40
+182 MLOAD
+183 PUSH1 0x00
+185 PUSH1 0x40
+187 MLOAD
+188 DUP1
+189 DUP4
+190 SUB
+191 DUP2
+192 PUSH1 0x00
+194 DUP7
+195 GAS
+196 CALL
+197 SWAP2
+198 POP
+199 POP
+200 ISZERO
+201 ISZERO
+202 PUSH2 0x00d2
+205 JUMPI
+206 PUSH1 0x00
+208 DUP1
+209 REVERT
+210 JUMPDEST
+211 JUMP
+212 JUMPDEST
+213 PUSH1 0x00
+215 DUP1
+216 SWAP1
+217 SLOAD
+218 SWAP1
+219 PUSH2 0x0100
+222 EXP
+223 SWAP1
+224 DIV
+225 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+246 AND
+247 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+268 AND
+269 PUSH1 0x40
+271 MLOAD
+272 PUSH1 0x00
+274 PUSH1 0x40
+276 MLOAD
+277 DUP1
+278 DUP4
+279 SUB
+280 DUP2
+281 PUSH1 0x00
+283 DUP7
+284 GAS
+285 CALL
+286 SWAP2
+287 POP
+288 POP
+289 POP
+290 JUMP
+291 STOP
diff --git a/tests/testdata/outputs_expected/returnvalue.sol.o.graph.html b/tests/testdata/outputs_expected/returnvalue.sol.o.graph.html
new file mode 100644
index 0000000000000000000000000000000000000000..cbc662d51f6df68fa0b5492d9ef2414eaa6888af
--- /dev/null
+++ b/tests/testdata/outputs_expected/returnvalue.sol.o.graph.html
@@ -0,0 +1,62 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>Call Graph</title>
+    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.css" integrity="sha256-iq5ygGJ7021Pi7H5S+QAUXCPUfaBzfqeplbg/KlEssg=" crossorigin="anonymous" />
+    <script src="https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.js" integrity="sha256-JuQeAGbk9rG/EoRMixuy5X8syzICcvB0dj3KindZkY0=" crossorigin="anonymous"></script>
+
+    
+    <style type="text/css">
+        #mynetwork {
+          height: 100%;
+            background-color: #232625;
+        }
+        body {
+            background-color: #232625;
+            color: #ffffff;
+            font-size: 10px;
+        }
+        html, body {
+          height: 95%;
+        }
+    </style>
+    
+
+    <script>
+        var options = {"autoResize": true, "edges": {"font": {"align": "horizontal", "background": "none", "color": "#FFFFFF", "face": "arial", "multi": false, "strokeColor": "#ffffff", "strokeWidth": 0, "vadjust": 0}}, "height": "100%", "layout": {"hierarchical": {"blockShifting": true, "direction": "LR", "edgeMinimization": true, "enabled": true, "levelSeparation": 450, "nodeSpacing": 200, "parentCentralization": false, "sortMethod": "directed", "treeSpacing": 100}, "improvedLayout": true}, "manipulation": false, "nodes": {"borderWidth": 1, "borderWidthSelected": 2, "chosen": true, "color": "#000000", "font": {"align": "left", "color": "#FFFFFF"}, "shape": "box"}, "physics": {"enabled": false}, "width": "100%"};
+        var nodes = [{"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n9 PUSH2 0x004c\n12 JUMPI", "id": "0", "isExpanded": false, "label": "0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n(click to expand +)", "size": 150, "truncLabel": "0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x01000000(...)\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n53 AND\n54 DUP1\n55 PUSH4 0x633ab5e0\n60 EQ\n61 PUSH2 0x0051\n64 JUMPI", "id": "1", "isExpanded": false, "label": "13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x01000000(...)\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n(click to expand +)", "size": 150, "truncLabel": "13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x01000000(...)\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "76 JUMPDEST\n77 PUSH1 0x00\n79 DUP1\n80 REVERT", "id": "2", "isExpanded": false, "label": "76 JUMPDEST\n77 PUSH1 0x00\n79 DUP1\n80 REVERT", "size": 150, "truncLabel": "76 JUMPDEST\n77 PUSH1 0x00\n79 DUP1\n80 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "65 DUP1\n66 PUSH4 0xe3bea282\n71 EQ\n72 PUSH2 0x0066\n75 JUMPI", "id": "3", "isExpanded": false, "label": "65 DUP1\n66 PUSH4 0xe3bea282\n71 EQ\n72 PUSH2 0x0066\n75 JUMPI", "size": 150, "truncLabel": "65 DUP1\n66 PUSH4 0xe3bea282\n71 EQ\n72 PUSH2 0x0066\n75 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "81 JUMPDEST\n82 CALLVALUE\n83 ISZERO\n84 PUSH2 0x005c\n87 JUMPI", "id": "4", "isExpanded": false, "label": "81 JUMPDEST\n82 CALLVALUE\n83 ISZERO\n84 PUSH2 0x005c\n87 JUMPI", "size": 150, "truncLabel": "81 JUMPDEST\n82 CALLVALUE\n83 ISZERO\n84 PUSH2 0x005c\n87 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "88 PUSH1 0x00\n90 DUP1\n91 REVERT", "id": "5", "isExpanded": false, "label": "88 PUSH1 0x00\n90 DUP1\n91 REVERT", "size": 150, "truncLabel": "88 PUSH1 0x00\n90 DUP1\n91 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "92 JUMPDEST\n93 PUSH2 0x0064\n96 PUSH2 0x007b\n99 JUMP", "id": "6", "isExpanded": false, "label": "92 JUMPDEST\n93 PUSH2 0x0064\n96 PUSH2 0x007b\n99 JUMP", "size": 150, "truncLabel": "92 JUMPDEST\n93 PUSH2 0x0064\n96 PUSH2 0x007b\n99 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "123 JUMPDEST\n124 PUSH1 0x00\n126 DUP1\n127 SWAP1\n128 SLOAD\n129 SWAP1\n130 PUSH2 0x0100\n133 EXP\n134 SWAP1\n135 DIV\n136 PUSH20 0xffffffff(...)\n157 AND\n158 PUSH20 0xffffffff(...)\n179 AND\n180 PUSH1 0x40\n182 MLOAD\n183 PUSH1 0x00\n185 PUSH1 0x40\n187 MLOAD\n188 DUP1\n189 DUP4\n190 SUB\n191 DUP2\n192 PUSH1 0x00\n194 DUP7\n195 GAS\n196 CALL\n197 SWAP2\n198 POP\n199 POP\n200 ISZERO\n201 ISZERO\n202 PUSH2 0x00d2\n205 JUMPI", "id": "7", "isExpanded": false, "label": "123 JUMPDEST\n124 PUSH1 0x00\n126 DUP1\n127 SWAP1\n128 SLOAD\n129 SWAP1\n(click to expand +)", "size": 150, "truncLabel": "123 JUMPDEST\n124 PUSH1 0x00\n126 DUP1\n127 SWAP1\n128 SLOAD\n129 SWAP1\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "206 PUSH1 0x00\n208 DUP1\n209 REVERT", "id": "8", "isExpanded": false, "label": "206 PUSH1 0x00\n208 DUP1\n209 REVERT", "size": 150, "truncLabel": "206 PUSH1 0x00\n208 DUP1\n209 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "210 JUMPDEST\n211 JUMP", "id": "9", "isExpanded": false, "label": "210 JUMPDEST\n211 JUMP", "size": 150, "truncLabel": "210 JUMPDEST\n211 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "100 JUMPDEST\n101 STOP", "id": "10", "isExpanded": false, "label": "100 JUMPDEST\n101 STOP", "size": 150, "truncLabel": "100 JUMPDEST\n101 STOP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "76 JUMPDEST\n77 PUSH1 0x00\n79 DUP1\n80 REVERT", "id": "11", "isExpanded": false, "label": "76 JUMPDEST\n77 PUSH1 0x00\n79 DUP1\n80 REVERT", "size": 150, "truncLabel": "76 JUMPDEST\n77 PUSH1 0x00\n79 DUP1\n80 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "102 JUMPDEST\n103 CALLVALUE\n104 ISZERO\n105 PUSH2 0x0071\n108 JUMPI", "id": "12", "isExpanded": false, "label": "102 JUMPDEST\n103 CALLVALUE\n104 ISZERO\n105 PUSH2 0x0071\n108 JUMPI", "size": 150, "truncLabel": "102 JUMPDEST\n103 CALLVALUE\n104 ISZERO\n105 PUSH2 0x0071\n108 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "109 PUSH1 0x00\n111 DUP1\n112 REVERT", "id": "13", "isExpanded": false, "label": "109 PUSH1 0x00\n111 DUP1\n112 REVERT", "size": 150, "truncLabel": "109 PUSH1 0x00\n111 DUP1\n112 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "113 JUMPDEST\n114 PUSH2 0x0079\n117 PUSH2 0x00d4\n120 JUMP", "id": "14", "isExpanded": false, "label": "113 JUMPDEST\n114 PUSH2 0x0079\n117 PUSH2 0x00d4\n120 JUMP", "size": 150, "truncLabel": "113 JUMPDEST\n114 PUSH2 0x0079\n117 PUSH2 0x00d4\n120 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "212 JUMPDEST\n213 PUSH1 0x00\n215 DUP1\n216 SWAP1\n217 SLOAD\n218 SWAP1\n219 PUSH2 0x0100\n222 EXP\n223 SWAP1\n224 DIV\n225 PUSH20 0xffffffff(...)\n246 AND\n247 PUSH20 0xffffffff(...)\n268 AND\n269 PUSH1 0x40\n271 MLOAD\n272 PUSH1 0x00\n274 PUSH1 0x40\n276 MLOAD\n277 DUP1\n278 DUP4\n279 SUB\n280 DUP2\n281 PUSH1 0x00\n283 DUP7\n284 GAS\n285 CALL\n286 SWAP2\n287 POP\n288 POP\n289 POP\n290 JUMP", "id": "15", "isExpanded": false, "label": "212 JUMPDEST\n213 PUSH1 0x00\n215 DUP1\n216 SWAP1\n217 SLOAD\n218 SWAP1\n(click to expand +)", "size": 150, "truncLabel": "212 JUMPDEST\n213 PUSH1 0x00\n215 DUP1\n216 SWAP1\n217 SLOAD\n218 SWAP1\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "121 JUMPDEST\n122 STOP", "id": "16", "isExpanded": false, "label": "121 JUMPDEST\n122 STOP", "size": 150, "truncLabel": "121 JUMPDEST\n122 STOP"}];
+        var edges = [{"arrows": "to", "from": "0", "label": "ULE(4, 1_calldatasize)", "smooth": {"type": "cubicBezier"}, "to": "1"}, {"arrows": "to", "from": "0", "label": "Not(ULE(4, 1_calldatasize))", "smooth": {"type": "cubicBezier"}, "to": "2"}, {"arrows": "to", "from": "1", "label": "Not(And(If(1_calldatasize \u003c= 3, 0, 1_calldata[3]) == 0xe0,        If(1_calldatasize \u003c= 2, 0, 1_calldata[2]) == 0xb5,        If(1_calldatasize \u003c= 1, 0, 1_calldata[1]) == 58,        If(1_calldatasize \u003c= 0, 0, 1_calldata[0]) == 99))", "smooth": {"type": "cubicBezier"}, "to": "3"}, {"arrows": "to", "from": "1", "label": "And(If(1_calldatasize \u003c= 3, 0, 1_calldata[3]) == 0xe0,    If(1_calldatasize \u003c= 2, 0, 1_calldata[2]) == 0xb5,    If(1_calldatasize \u003c= 1, 0, 1_calldata[1]) == 58,    If(1_calldatasize \u003c= 0, 0, 1_calldata[0]) == 99)", "smooth": {"type": "cubicBezier"}, "to": "4"}, {"arrows": "to", "from": "4", "label": "If(call_value1 == 0, 1, 0) == 0", "smooth": {"type": "cubicBezier"}, "to": "5"}, {"arrows": "to", "from": "4", "label": "Not(If(call_value1 == 0, 1, 0) == 0)", "smooth": {"type": "cubicBezier"}, "to": "6"}, {"arrows": "to", "from": "6", "label": "", "smooth": {"type": "cubicBezier"}, "to": "7"}, {"arrows": "to", "from": "7", "label": "If(If(1_retval_196 == 0, 1, 0) == 0, 1, 0) == 0", "smooth": {"type": "cubicBezier"}, "to": "8"}, {"arrows": "to", "from": "7", "label": "Not(If(If(1_retval_196 == 0, 1, 0) == 0, 1, 0) == 0)", "smooth": {"type": "cubicBezier"}, "to": "9"}, {"arrows": "to", "from": "9", "label": "", "smooth": {"type": "cubicBezier"}, "to": "10"}, {"arrows": "to", "from": "3", "label": "Not(And(If(1_calldatasize \u003c= 3, 0, 1_calldata[3]) == 0x82,        If(1_calldatasize \u003c= 2, 0, 1_calldata[2]) == 0xa2,        If(1_calldatasize \u003c= 1, 0, 1_calldata[1]) == 0xbe,        If(1_calldatasize \u003c= 0, 0, 1_calldata[0]) == 0xe3))", "smooth": {"type": "cubicBezier"}, "to": "11"}, {"arrows": "to", "from": "3", "label": "And(If(1_calldatasize \u003c= 3, 0, 1_calldata[3]) == 0x82,    If(1_calldatasize \u003c= 2, 0, 1_calldata[2]) == 0xa2,    If(1_calldatasize \u003c= 1, 0, 1_calldata[1]) == 0xbe,    If(1_calldatasize \u003c= 0, 0, 1_calldata[0]) == 0xe3)", "smooth": {"type": "cubicBezier"}, "to": "12"}, {"arrows": "to", "from": "12", "label": "If(call_value1 == 0, 1, 0) == 0", "smooth": {"type": "cubicBezier"}, "to": "13"}, {"arrows": "to", "from": "12", "label": "Not(If(call_value1 == 0, 1, 0) == 0)", "smooth": {"type": "cubicBezier"}, "to": "14"}, {"arrows": "to", "from": "14", "label": "", "smooth": {"type": "cubicBezier"}, "to": "15"}, {"arrows": "to", "from": "15", "label": "", "smooth": {"type": "cubicBezier"}, "to": "16"}];
+    </script>
+</head>
+<body>
+<p>Mythril / Ethereum LASER Symbolic VM</p>
+<div id="mynetwork"></div>
+<script type="text/javascript">
+    var container = document.getElementById('mynetwork');
+
+    var nodesSet = new vis.DataSet(nodes);
+    var edgesSet = new vis.DataSet(edges);
+    var data = {'nodes': nodesSet, 'edges': edgesSet}
+
+    var gph = new vis.Network(container, data, options);
+    gph.on("click", function (params) {
+        // parse node id
+        var nodeID = params['nodes']['0'];
+        if (nodeID) {
+            var clickedNode = nodesSet.get(nodeID);
+
+            if(clickedNode.isExpanded) {
+                clickedNode.label = clickedNode.truncLabel;
+            }
+            else {
+                clickedNode.label = clickedNode.fullLabel;
+            }
+
+            clickedNode.isExpanded = !clickedNode.isExpanded;
+
+            nodesSet.update(clickedNode);
+        }
+    });
+</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/tests/testdata/outputs_expected/suicide.sol.o.easm b/tests/testdata/outputs_expected/suicide.sol.o.easm
new file mode 100644
index 0000000000000000000000000000000000000000..892e77871a91358d71ea2f536e1a482186eb151a
--- /dev/null
+++ b/tests/testdata/outputs_expected/suicide.sol.o.easm
@@ -0,0 +1,58 @@
+0 PUSH1 0x60
+2 PUSH1 0x40
+4 MSTORE
+5 PUSH1 0x04
+7 CALLDATASIZE
+8 LT
+9 PUSH1 0x3f
+11 JUMPI
+12 PUSH1 0x00
+14 CALLDATALOAD
+15 PUSH29 0x0100000000000000000000000000000000000000000000000000000000
+45 SWAP1
+46 DIV
+47 PUSH4 0xffffffff
+52 AND
+53 DUP1
+54 PUSH4 0xcbf0b0c0
+59 EQ
+60 PUSH1 0x44
+62 JUMPI
+63 JUMPDEST
+64 PUSH1 0x00
+66 DUP1
+67 REVERT
+68 JUMPDEST
+69 CALLVALUE
+70 ISZERO
+71 PUSH1 0x4e
+73 JUMPI
+74 PUSH1 0x00
+76 DUP1
+77 REVERT
+78 JUMPDEST
+79 PUSH1 0x78
+81 PUSH1 0x04
+83 DUP1
+84 DUP1
+85 CALLDATALOAD
+86 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+107 AND
+108 SWAP1
+109 PUSH1 0x20
+111 ADD
+112 SWAP1
+113 SWAP2
+114 SWAP1
+115 POP
+116 POP
+117 PUSH1 0x7a
+119 JUMP
+120 JUMPDEST
+121 STOP
+122 JUMPDEST
+123 DUP1
+124 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+145 AND
+146 SUICIDE
+147 STOP
diff --git a/tests/testdata/outputs_expected/suicide.sol.o.graph.html b/tests/testdata/outputs_expected/suicide.sol.o.graph.html
new file mode 100644
index 0000000000000000000000000000000000000000..54a5d101a3a90dfcf997d44f7e952c8dd02f53c9
--- /dev/null
+++ b/tests/testdata/outputs_expected/suicide.sol.o.graph.html
@@ -0,0 +1,62 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>Call Graph</title>
+    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.css" integrity="sha256-iq5ygGJ7021Pi7H5S+QAUXCPUfaBzfqeplbg/KlEssg=" crossorigin="anonymous" />
+    <script src="https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.js" integrity="sha256-JuQeAGbk9rG/EoRMixuy5X8syzICcvB0dj3KindZkY0=" crossorigin="anonymous"></script>
+
+    
+    <style type="text/css">
+        #mynetwork {
+          height: 100%;
+            background-color: #232625;
+        }
+        body {
+            background-color: #232625;
+            color: #ffffff;
+            font-size: 10px;
+        }
+        html, body {
+          height: 95%;
+        }
+    </style>
+    
+
+    <script>
+        var options = {"autoResize": true, "edges": {"font": {"align": "horizontal", "background": "none", "color": "#FFFFFF", "face": "arial", "multi": false, "strokeColor": "#ffffff", "strokeWidth": 0, "vadjust": 0}}, "height": "100%", "layout": {"hierarchical": {"blockShifting": true, "direction": "LR", "edgeMinimization": true, "enabled": true, "levelSeparation": 450, "nodeSpacing": 200, "parentCentralization": false, "sortMethod": "directed", "treeSpacing": 100}, "improvedLayout": true}, "manipulation": false, "nodes": {"borderWidth": 1, "borderWidthSelected": 2, "chosen": true, "color": "#000000", "font": {"align": "left", "color": "#FFFFFF"}, "shape": "box"}, "physics": {"enabled": false}, "width": "100%"};
+        var nodes = [{"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n9 PUSH1 0x3f\n11 JUMPI", "id": "700", "isExpanded": false, "label": "0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n(click to expand +)", "size": 150, "truncLabel": "0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "12 PUSH1 0x00\n14 CALLDATALOAD\n15 PUSH29 0x01000000(...)\n45 SWAP1\n46 DIV\n47 PUSH4 0xffffffff\n52 AND\n53 DUP1\n54 PUSH4 0xcbf0b0c0\n59 EQ\n60 PUSH1 0x44\n62 JUMPI", "id": "701", "isExpanded": false, "label": "12 PUSH1 0x00\n14 CALLDATALOAD\n15 PUSH29 0x01000000(...)\n45 SWAP1\n46 DIV\n47 PUSH4 0xffffffff\n(click to expand +)", "size": 150, "truncLabel": "12 PUSH1 0x00\n14 CALLDATALOAD\n15 PUSH29 0x01000000(...)\n45 SWAP1\n46 DIV\n47 PUSH4 0xffffffff\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "63 JUMPDEST\n64 PUSH1 0x00\n66 DUP1\n67 REVERT", "id": "702", "isExpanded": false, "label": "63 JUMPDEST\n64 PUSH1 0x00\n66 DUP1\n67 REVERT", "size": 150, "truncLabel": "63 JUMPDEST\n64 PUSH1 0x00\n66 DUP1\n67 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "63 JUMPDEST\n64 PUSH1 0x00\n66 DUP1\n67 REVERT", "id": "703", "isExpanded": false, "label": "63 JUMPDEST\n64 PUSH1 0x00\n66 DUP1\n67 REVERT", "size": 150, "truncLabel": "63 JUMPDEST\n64 PUSH1 0x00\n66 DUP1\n67 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "68 JUMPDEST\n69 CALLVALUE\n70 ISZERO\n71 PUSH1 0x4e\n73 JUMPI", "id": "704", "isExpanded": false, "label": "68 JUMPDEST\n69 CALLVALUE\n70 ISZERO\n71 PUSH1 0x4e\n73 JUMPI", "size": 150, "truncLabel": "68 JUMPDEST\n69 CALLVALUE\n70 ISZERO\n71 PUSH1 0x4e\n73 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "74 PUSH1 0x00\n76 DUP1\n77 REVERT", "id": "705", "isExpanded": false, "label": "74 PUSH1 0x00\n76 DUP1\n77 REVERT", "size": 150, "truncLabel": "74 PUSH1 0x00\n76 DUP1\n77 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "78 JUMPDEST\n79 PUSH1 0x78\n81 PUSH1 0x04\n83 DUP1\n84 DUP1\n85 CALLDATALOAD\n86 PUSH20 0xffffffff(...)\n107 AND\n108 SWAP1\n109 PUSH1 0x20\n111 ADD\n112 SWAP1\n113 SWAP2\n114 SWAP1\n115 POP\n116 POP\n117 PUSH1 0x7a\n119 JUMP", "id": "706", "isExpanded": false, "label": "78 JUMPDEST\n79 PUSH1 0x78\n81 PUSH1 0x04\n83 DUP1\n84 DUP1\n85 CALLDATALOAD\n(click to expand +)", "size": 150, "truncLabel": "78 JUMPDEST\n79 PUSH1 0x78\n81 PUSH1 0x04\n83 DUP1\n84 DUP1\n85 CALLDATALOAD\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "122 JUMPDEST\n123 DUP1\n124 PUSH20 0xffffffff(...)\n145 AND\n146 SUICIDE", "id": "707", "isExpanded": false, "label": "122 JUMPDEST\n123 DUP1\n124 PUSH20 0xffffffff(...)\n145 AND\n146 SUICIDE", "size": 150, "truncLabel": "122 JUMPDEST\n123 DUP1\n124 PUSH20 0xffffffff(...)\n145 AND\n146 SUICIDE"}];
+        var edges = [{"arrows": "to", "from": "700", "label": "ULE(4, 11_calldatasize)", "smooth": {"type": "cubicBezier"}, "to": "701"}, {"arrows": "to", "from": "700", "label": "Not(ULE(4, 11_calldatasize))", "smooth": {"type": "cubicBezier"}, "to": "702"}, {"arrows": "to", "from": "701", "label": "Not(And(11_calldata[3] == 0xc0,        11_calldata[2] == 0xb0,        11_calldata[1] == 0xf0,        11_calldata[0] == 0xcb))", "smooth": {"type": "cubicBezier"}, "to": "703"}, {"arrows": "to", "from": "701", "label": "And(11_calldata[3] == 0xc0,    11_calldata[2] == 0xb0,    11_calldata[1] == 0xf0,    11_calldata[0] == 0xcb)", "smooth": {"type": "cubicBezier"}, "to": "704"}, {"arrows": "to", "from": "704", "label": "Not(call_value11 == 0)", "smooth": {"type": "cubicBezier"}, "to": "705"}, {"arrows": "to", "from": "704", "label": "call_value11 == 0", "smooth": {"type": "cubicBezier"}, "to": "706"}, {"arrows": "to", "from": "706", "label": "", "smooth": {"type": "cubicBezier"}, "to": "707"}];
+    </script>
+</head>
+<body>
+<p>Mythril / Ethereum LASER Symbolic VM</p>
+<div id="mynetwork"></div>
+<script type="text/javascript">
+    var container = document.getElementById('mynetwork');
+
+    var nodesSet = new vis.DataSet(nodes);
+    var edgesSet = new vis.DataSet(edges);
+    var data = {'nodes': nodesSet, 'edges': edgesSet}
+
+    var gph = new vis.Network(container, data, options);
+    gph.on("click", function (params) {
+        // parse node id
+        var nodeID = params['nodes']['0'];
+        if (nodeID) {
+            var clickedNode = nodesSet.get(nodeID);
+
+            if(clickedNode.isExpanded) {
+                clickedNode.label = clickedNode.truncLabel;
+            }
+            else {
+                clickedNode.label = clickedNode.fullLabel;
+            }
+
+            clickedNode.isExpanded = !clickedNode.isExpanded;
+
+            nodesSet.update(clickedNode);
+        }
+    });
+</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/tests/testdata/outputs_expected/underflow.sol.o.easm b/tests/testdata/outputs_expected/underflow.sol.o.easm
new file mode 100644
index 0000000000000000000000000000000000000000..0ed8f65119817efe09c34cef7158200af1677583
--- /dev/null
+++ b/tests/testdata/outputs_expected/underflow.sol.o.easm
@@ -0,0 +1,365 @@
+0 PUSH1 0x60
+2 PUSH1 0x40
+4 MSTORE
+5 PUSH1 0x04
+7 CALLDATASIZE
+8 LT
+9 PUSH2 0x0062
+12 JUMPI
+13 PUSH1 0x00
+15 CALLDATALOAD
+16 PUSH29 0x0100000000000000000000000000000000000000000000000000000000
+46 SWAP1
+47 DIV
+48 PUSH4 0xffffffff
+53 AND
+54 DUP1
+55 PUSH4 0x18160ddd
+60 EQ
+61 PUSH2 0x0067
+64 JUMPI
+65 DUP1
+66 PUSH4 0x6241bfd1
+71 EQ
+72 PUSH2 0x0090
+75 JUMPI
+76 DUP1
+77 PUSH4 0x70a08231
+82 EQ
+83 PUSH2 0x00b3
+86 JUMPI
+87 DUP1
+88 PUSH4 0xa3210e87
+93 EQ
+94 PUSH2 0x0100
+97 JUMPI
+98 JUMPDEST
+99 PUSH1 0x00
+101 DUP1
+102 REVERT
+103 JUMPDEST
+104 CALLVALUE
+105 ISZERO
+106 PUSH2 0x0072
+109 JUMPI
+110 PUSH1 0x00
+112 DUP1
+113 REVERT
+114 JUMPDEST
+115 PUSH2 0x007a
+118 PUSH2 0x015a
+121 JUMP
+122 JUMPDEST
+123 PUSH1 0x40
+125 MLOAD
+126 DUP1
+127 DUP3
+128 DUP2
+129 MSTORE
+130 PUSH1 0x20
+132 ADD
+133 SWAP2
+134 POP
+135 POP
+136 PUSH1 0x40
+138 MLOAD
+139 DUP1
+140 SWAP2
+141 SUB
+142 SWAP1
+143 RETURN
+144 JUMPDEST
+145 CALLVALUE
+146 ISZERO
+147 PUSH2 0x009b
+150 JUMPI
+151 PUSH1 0x00
+153 DUP1
+154 REVERT
+155 JUMPDEST
+156 PUSH2 0x00b1
+159 PUSH1 0x04
+161 DUP1
+162 DUP1
+163 CALLDATALOAD
+164 SWAP1
+165 PUSH1 0x20
+167 ADD
+168 SWAP1
+169 SWAP2
+170 SWAP1
+171 POP
+172 POP
+173 PUSH2 0x0160
+176 JUMP
+177 JUMPDEST
+178 STOP
+179 JUMPDEST
+180 CALLVALUE
+181 ISZERO
+182 PUSH2 0x00be
+185 JUMPI
+186 PUSH1 0x00
+188 DUP1
+189 REVERT
+190 JUMPDEST
+191 PUSH2 0x00ea
+194 PUSH1 0x04
+196 DUP1
+197 DUP1
+198 CALLDATALOAD
+199 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+220 AND
+221 SWAP1
+222 PUSH1 0x20
+224 ADD
+225 SWAP1
+226 SWAP2
+227 SWAP1
+228 POP
+229 POP
+230 PUSH2 0x01ab
+233 JUMP
+234 JUMPDEST
+235 PUSH1 0x40
+237 MLOAD
+238 DUP1
+239 DUP3
+240 DUP2
+241 MSTORE
+242 PUSH1 0x20
+244 ADD
+245 SWAP2
+246 POP
+247 POP
+248 PUSH1 0x40
+250 MLOAD
+251 DUP1
+252 SWAP2
+253 SUB
+254 SWAP1
+255 RETURN
+256 JUMPDEST
+257 CALLVALUE
+258 ISZERO
+259 PUSH2 0x010b
+262 JUMPI
+263 PUSH1 0x00
+265 DUP1
+266 REVERT
+267 JUMPDEST
+268 PUSH2 0x0140
+271 PUSH1 0x04
+273 DUP1
+274 DUP1
+275 CALLDATALOAD
+276 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+297 AND
+298 SWAP1
+299 PUSH1 0x20
+301 ADD
+302 SWAP1
+303 SWAP2
+304 SWAP1
+305 DUP1
+306 CALLDATALOAD
+307 SWAP1
+308 PUSH1 0x20
+310 ADD
+311 SWAP1
+312 SWAP2
+313 SWAP1
+314 POP
+315 POP
+316 PUSH2 0x01f3
+319 JUMP
+320 JUMPDEST
+321 PUSH1 0x40
+323 MLOAD
+324 DUP1
+325 DUP3
+326 ISZERO
+327 ISZERO
+328 ISZERO
+329 ISZERO
+330 DUP2
+331 MSTORE
+332 PUSH1 0x20
+334 ADD
+335 SWAP2
+336 POP
+337 POP
+338 PUSH1 0x40
+340 MLOAD
+341 DUP1
+342 SWAP2
+343 SUB
+344 SWAP1
+345 RETURN
+346 JUMPDEST
+347 PUSH1 0x01
+349 SLOAD
+350 DUP2
+351 JUMP
+352 JUMPDEST
+353 DUP1
+354 PUSH1 0x01
+356 DUP2
+357 SWAP1
+358 SSTORE
+359 PUSH1 0x00
+361 DUP1
+362 CALLER
+363 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+384 AND
+385 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+406 AND
+407 DUP2
+408 MSTORE
+409 PUSH1 0x20
+411 ADD
+412 SWAP1
+413 DUP2
+414 MSTORE
+415 PUSH1 0x20
+417 ADD
+418 PUSH1 0x00
+420 SHA3
+421 DUP2
+422 SWAP1
+423 SSTORE
+424 POP
+425 POP
+426 JUMP
+427 JUMPDEST
+428 PUSH1 0x00
+430 DUP1
+431 PUSH1 0x00
+433 DUP4
+434 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+455 AND
+456 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+477 AND
+478 DUP2
+479 MSTORE
+480 PUSH1 0x20
+482 ADD
+483 SWAP1
+484 DUP2
+485 MSTORE
+486 PUSH1 0x20
+488 ADD
+489 PUSH1 0x00
+491 SHA3
+492 SLOAD
+493 SWAP1
+494 POP
+495 SWAP2
+496 SWAP1
+497 POP
+498 JUMP
+499 JUMPDEST
+500 PUSH1 0x00
+502 DUP1
+503 DUP3
+504 PUSH1 0x00
+506 DUP1
+507 CALLER
+508 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+529 AND
+530 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+551 AND
+552 DUP2
+553 MSTORE
+554 PUSH1 0x20
+556 ADD
+557 SWAP1
+558 DUP2
+559 MSTORE
+560 PUSH1 0x20
+562 ADD
+563 PUSH1 0x00
+565 SHA3
+566 SLOAD
+567 SUB
+568 LT
+569 ISZERO
+570 ISZERO
+571 ISZERO
+572 PUSH2 0x0244
+575 JUMPI
+576 PUSH1 0x00
+578 DUP1
+579 REVERT
+580 JUMPDEST
+581 DUP2
+582 PUSH1 0x00
+584 DUP1
+585 CALLER
+586 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+607 AND
+608 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+629 AND
+630 DUP2
+631 MSTORE
+632 PUSH1 0x20
+634 ADD
+635 SWAP1
+636 DUP2
+637 MSTORE
+638 PUSH1 0x20
+640 ADD
+641 PUSH1 0x00
+643 SHA3
+644 PUSH1 0x00
+646 DUP3
+647 DUP3
+648 SLOAD
+649 SUB
+650 SWAP3
+651 POP
+652 POP
+653 DUP2
+654 SWAP1
+655 SSTORE
+656 POP
+657 DUP2
+658 PUSH1 0x00
+660 DUP1
+661 DUP6
+662 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+683 AND
+684 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
+705 AND
+706 DUP2
+707 MSTORE
+708 PUSH1 0x20
+710 ADD
+711 SWAP1
+712 DUP2
+713 MSTORE
+714 PUSH1 0x20
+716 ADD
+717 PUSH1 0x00
+719 SHA3
+720 PUSH1 0x00
+722 DUP3
+723 DUP3
+724 SLOAD
+725 ADD
+726 SWAP3
+727 POP
+728 POP
+729 DUP2
+730 SWAP1
+731 SSTORE
+732 POP
+733 PUSH1 0x01
+735 SWAP1
+736 POP
+737 SWAP3
+738 SWAP2
+739 POP
+740 POP
+741 JUMP
+742 STOP
diff --git a/tests/testdata/outputs_expected/underflow.sol.o.graph.html b/tests/testdata/outputs_expected/underflow.sol.o.graph.html
new file mode 100644
index 0000000000000000000000000000000000000000..62381211cc5017fc2f11df255687751ecb320d0e
--- /dev/null
+++ b/tests/testdata/outputs_expected/underflow.sol.o.graph.html
@@ -0,0 +1,62 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>Call Graph</title>
+    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.css" integrity="sha256-iq5ygGJ7021Pi7H5S+QAUXCPUfaBzfqeplbg/KlEssg=" crossorigin="anonymous" />
+    <script src="https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.js" integrity="sha256-JuQeAGbk9rG/EoRMixuy5X8syzICcvB0dj3KindZkY0=" crossorigin="anonymous"></script>
+
+    
+    <style type="text/css">
+        #mynetwork {
+          height: 100%;
+            background-color: #232625;
+        }
+        body {
+            background-color: #232625;
+            color: #ffffff;
+            font-size: 10px;
+        }
+        html, body {
+          height: 95%;
+        }
+    </style>
+    
+
+    <script>
+        var options = {"autoResize": true, "edges": {"font": {"align": "horizontal", "background": "none", "color": "#FFFFFF", "face": "arial", "multi": false, "strokeColor": "#ffffff", "strokeWidth": 0, "vadjust": 0}}, "height": "100%", "layout": {"hierarchical": {"blockShifting": true, "direction": "LR", "edgeMinimization": true, "enabled": true, "levelSeparation": 450, "nodeSpacing": 200, "parentCentralization": false, "sortMethod": "directed", "treeSpacing": 100}, "improvedLayout": true}, "manipulation": false, "nodes": {"borderWidth": 1, "borderWidthSelected": 2, "chosen": true, "color": "#000000", "font": {"align": "left", "color": "#FFFFFF"}, "shape": "box"}, "physics": {"enabled": false}, "width": "100%"};
+        var nodes = [{"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n9 PUSH2 0x0062\n12 JUMPI", "id": "1142", "isExpanded": false, "label": "0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n(click to expand +)", "size": 150, "truncLabel": "0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x01000000(...)\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n53 AND\n54 DUP1\n55 PUSH4 0x18160ddd\n60 EQ\n61 PUSH2 0x0067\n64 JUMPI", "id": "1143", "isExpanded": false, "label": "13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x01000000(...)\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n(click to expand +)", "size": 150, "truncLabel": "13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x01000000(...)\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "98 JUMPDEST\n99 PUSH1 0x00\n101 DUP1\n102 REVERT", "id": "1144", "isExpanded": false, "label": "98 JUMPDEST\n99 PUSH1 0x00\n101 DUP1\n102 REVERT", "size": 150, "truncLabel": "98 JUMPDEST\n99 PUSH1 0x00\n101 DUP1\n102 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "65 DUP1\n66 PUSH4 0x6241bfd1\n71 EQ\n72 PUSH2 0x0090\n75 JUMPI", "id": "1145", "isExpanded": false, "label": "65 DUP1\n66 PUSH4 0x6241bfd1\n71 EQ\n72 PUSH2 0x0090\n75 JUMPI", "size": 150, "truncLabel": "65 DUP1\n66 PUSH4 0x6241bfd1\n71 EQ\n72 PUSH2 0x0090\n75 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "103 JUMPDEST\n104 CALLVALUE\n105 ISZERO\n106 PUSH2 0x0072\n109 JUMPI", "id": "1146", "isExpanded": false, "label": "103 JUMPDEST\n104 CALLVALUE\n105 ISZERO\n106 PUSH2 0x0072\n109 JUMPI", "size": 150, "truncLabel": "103 JUMPDEST\n104 CALLVALUE\n105 ISZERO\n106 PUSH2 0x0072\n109 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "110 PUSH1 0x00\n112 DUP1\n113 REVERT", "id": "1147", "isExpanded": false, "label": "110 PUSH1 0x00\n112 DUP1\n113 REVERT", "size": 150, "truncLabel": "110 PUSH1 0x00\n112 DUP1\n113 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "114 JUMPDEST\n115 PUSH2 0x007a\n118 PUSH2 0x015a\n121 JUMP", "id": "1148", "isExpanded": false, "label": "114 JUMPDEST\n115 PUSH2 0x007a\n118 PUSH2 0x015a\n121 JUMP", "size": 150, "truncLabel": "114 JUMPDEST\n115 PUSH2 0x007a\n118 PUSH2 0x015a\n121 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "346 JUMPDEST\n347 PUSH1 0x01\n349 SLOAD\n350 DUP2\n351 JUMP", "id": "1149", "isExpanded": false, "label": "346 JUMPDEST\n347 PUSH1 0x01\n349 SLOAD\n350 DUP2\n351 JUMP", "size": 150, "truncLabel": "346 JUMPDEST\n347 PUSH1 0x01\n349 SLOAD\n350 DUP2\n351 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "122 JUMPDEST\n123 PUSH1 0x40\n125 MLOAD\n126 DUP1\n127 DUP3\n128 DUP2\n129 MSTORE\n130 PUSH1 0x20\n132 ADD\n133 SWAP2\n134 POP\n135 POP\n136 PUSH1 0x40\n138 MLOAD\n139 DUP1\n140 SWAP2\n141 SUB\n142 SWAP1\n143 RETURN", "id": "1150", "isExpanded": false, "label": "122 JUMPDEST\n123 PUSH1 0x40\n125 MLOAD\n126 DUP1\n127 DUP3\n128 DUP2\n(click to expand +)", "size": 150, "truncLabel": "122 JUMPDEST\n123 PUSH1 0x40\n125 MLOAD\n126 DUP1\n127 DUP3\n128 DUP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "76 DUP1\n77 PUSH4 0x70a08231\n82 EQ\n83 PUSH2 0x00b3\n86 JUMPI", "id": "1151", "isExpanded": false, "label": "76 DUP1\n77 PUSH4 0x70a08231\n82 EQ\n83 PUSH2 0x00b3\n86 JUMPI", "size": 150, "truncLabel": "76 DUP1\n77 PUSH4 0x70a08231\n82 EQ\n83 PUSH2 0x00b3\n86 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "144 JUMPDEST\n145 CALLVALUE\n146 ISZERO\n147 PUSH2 0x009b\n150 JUMPI", "id": "1152", "isExpanded": false, "label": "144 JUMPDEST\n145 CALLVALUE\n146 ISZERO\n147 PUSH2 0x009b\n150 JUMPI", "size": 150, "truncLabel": "144 JUMPDEST\n145 CALLVALUE\n146 ISZERO\n147 PUSH2 0x009b\n150 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "151 PUSH1 0x00\n153 DUP1\n154 REVERT", "id": "1153", "isExpanded": false, "label": "151 PUSH1 0x00\n153 DUP1\n154 REVERT", "size": 150, "truncLabel": "151 PUSH1 0x00\n153 DUP1\n154 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "155 JUMPDEST\n156 PUSH2 0x00b1\n159 PUSH1 0x04\n161 DUP1\n162 DUP1\n163 CALLDATALOAD\n164 SWAP1\n165 PUSH1 0x20\n167 ADD\n168 SWAP1\n169 SWAP2\n170 SWAP1\n171 POP\n172 POP\n173 PUSH2 0x0160\n176 JUMP", "id": "1154", "isExpanded": false, "label": "155 JUMPDEST\n156 PUSH2 0x00b1\n159 PUSH1 0x04\n161 DUP1\n162 DUP1\n163 CALLDATALOAD\n(click to expand +)", "size": 150, "truncLabel": "155 JUMPDEST\n156 PUSH2 0x00b1\n159 PUSH1 0x04\n161 DUP1\n162 DUP1\n163 CALLDATALOAD\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "352 JUMPDEST\n353 DUP1\n354 PUSH1 0x01\n356 DUP2\n357 SWAP1\n358 SSTORE\n359 PUSH1 0x00\n361 DUP1\n362 CALLER\n363 PUSH20 0xffffffff(...)\n384 AND\n385 PUSH20 0xffffffff(...)\n406 AND\n407 DUP2\n408 MSTORE\n409 PUSH1 0x20\n411 ADD\n412 SWAP1\n413 DUP2\n414 MSTORE\n415 PUSH1 0x20\n417 ADD\n418 PUSH1 0x00\n420 SHA3\n421 DUP2\n422 SWAP1\n423 SSTORE\n424 POP\n425 POP\n426 JUMP", "id": "1155", "isExpanded": false, "label": "352 JUMPDEST\n353 DUP1\n354 PUSH1 0x01\n356 DUP2\n357 SWAP1\n358 SSTORE\n(click to expand +)", "size": 150, "truncLabel": "352 JUMPDEST\n353 DUP1\n354 PUSH1 0x01\n356 DUP2\n357 SWAP1\n358 SSTORE\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "177 JUMPDEST\n178 STOP", "id": "1156", "isExpanded": false, "label": "177 JUMPDEST\n178 STOP", "size": 150, "truncLabel": "177 JUMPDEST\n178 STOP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "87 DUP1\n88 PUSH4 0xa3210e87\n93 EQ\n94 PUSH2 0x0100\n97 JUMPI", "id": "1157", "isExpanded": false, "label": "87 DUP1\n88 PUSH4 0xa3210e87\n93 EQ\n94 PUSH2 0x0100\n97 JUMPI", "size": 150, "truncLabel": "87 DUP1\n88 PUSH4 0xa3210e87\n93 EQ\n94 PUSH2 0x0100\n97 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "179 JUMPDEST\n180 CALLVALUE\n181 ISZERO\n182 PUSH2 0x00be\n185 JUMPI", "id": "1158", "isExpanded": false, "label": "179 JUMPDEST\n180 CALLVALUE\n181 ISZERO\n182 PUSH2 0x00be\n185 JUMPI", "size": 150, "truncLabel": "179 JUMPDEST\n180 CALLVALUE\n181 ISZERO\n182 PUSH2 0x00be\n185 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "186 PUSH1 0x00\n188 DUP1\n189 REVERT", "id": "1159", "isExpanded": false, "label": "186 PUSH1 0x00\n188 DUP1\n189 REVERT", "size": 150, "truncLabel": "186 PUSH1 0x00\n188 DUP1\n189 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "190 JUMPDEST\n191 PUSH2 0x00ea\n194 PUSH1 0x04\n196 DUP1\n197 DUP1\n198 CALLDATALOAD\n199 PUSH20 0xffffffff(...)\n220 AND\n221 SWAP1\n222 PUSH1 0x20\n224 ADD\n225 SWAP1\n226 SWAP2\n227 SWAP1\n228 POP\n229 POP\n230 PUSH2 0x01ab\n233 JUMP", "id": "1160", "isExpanded": false, "label": "190 JUMPDEST\n191 PUSH2 0x00ea\n194 PUSH1 0x04\n196 DUP1\n197 DUP1\n198 CALLDATALOAD\n(click to expand +)", "size": 150, "truncLabel": "190 JUMPDEST\n191 PUSH2 0x00ea\n194 PUSH1 0x04\n196 DUP1\n197 DUP1\n198 CALLDATALOAD\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "427 JUMPDEST\n428 PUSH1 0x00\n430 DUP1\n431 PUSH1 0x00\n433 DUP4\n434 PUSH20 0xffffffff(...)\n455 AND\n456 PUSH20 0xffffffff(...)\n477 AND\n478 DUP2\n479 MSTORE\n480 PUSH1 0x20\n482 ADD\n483 SWAP1\n484 DUP2\n485 MSTORE\n486 PUSH1 0x20\n488 ADD\n489 PUSH1 0x00\n491 SHA3\n492 SLOAD\n493 SWAP1\n494 POP\n495 SWAP2\n496 SWAP1\n497 POP\n498 JUMP", "id": "1161", "isExpanded": false, "label": "427 JUMPDEST\n428 PUSH1 0x00\n430 DUP1\n431 PUSH1 0x00\n433 DUP4\n434 PUSH20 0xffffffff(...)\n(click to expand +)", "size": 150, "truncLabel": "427 JUMPDEST\n428 PUSH1 0x00\n430 DUP1\n431 PUSH1 0x00\n433 DUP4\n434 PUSH20 0xffffffff(...)\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "234 JUMPDEST\n235 PUSH1 0x40\n237 MLOAD\n238 DUP1\n239 DUP3\n240 DUP2\n241 MSTORE\n242 PUSH1 0x20\n244 ADD\n245 SWAP2\n246 POP\n247 POP\n248 PUSH1 0x40\n250 MLOAD\n251 DUP1\n252 SWAP2\n253 SUB\n254 SWAP1\n255 RETURN", "id": "1162", "isExpanded": false, "label": "234 JUMPDEST\n235 PUSH1 0x40\n237 MLOAD\n238 DUP1\n239 DUP3\n240 DUP2\n(click to expand +)", "size": 150, "truncLabel": "234 JUMPDEST\n235 PUSH1 0x40\n237 MLOAD\n238 DUP1\n239 DUP3\n240 DUP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "98 JUMPDEST\n99 PUSH1 0x00\n101 DUP1\n102 REVERT", "id": "1163", "isExpanded": false, "label": "98 JUMPDEST\n99 PUSH1 0x00\n101 DUP1\n102 REVERT", "size": 150, "truncLabel": "98 JUMPDEST\n99 PUSH1 0x00\n101 DUP1\n102 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "256 JUMPDEST\n257 CALLVALUE\n258 ISZERO\n259 PUSH2 0x010b\n262 JUMPI", "id": "1164", "isExpanded": false, "label": "256 JUMPDEST\n257 CALLVALUE\n258 ISZERO\n259 PUSH2 0x010b\n262 JUMPI", "size": 150, "truncLabel": "256 JUMPDEST\n257 CALLVALUE\n258 ISZERO\n259 PUSH2 0x010b\n262 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "263 PUSH1 0x00\n265 DUP1\n266 REVERT", "id": "1165", "isExpanded": false, "label": "263 PUSH1 0x00\n265 DUP1\n266 REVERT", "size": 150, "truncLabel": "263 PUSH1 0x00\n265 DUP1\n266 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "267 JUMPDEST\n268 PUSH2 0x0140\n271 PUSH1 0x04\n273 DUP1\n274 DUP1\n275 CALLDATALOAD\n276 PUSH20 0xffffffff(...)\n297 AND\n298 SWAP1\n299 PUSH1 0x20\n301 ADD\n302 SWAP1\n303 SWAP2\n304 SWAP1\n305 DUP1\n306 CALLDATALOAD\n307 SWAP1\n308 PUSH1 0x20\n310 ADD\n311 SWAP1\n312 SWAP2\n313 SWAP1\n314 POP\n315 POP\n316 PUSH2 0x01f3\n319 JUMP", "id": "1166", "isExpanded": false, "label": "267 JUMPDEST\n268 PUSH2 0x0140\n271 PUSH1 0x04\n273 DUP1\n274 DUP1\n275 CALLDATALOAD\n(click to expand +)", "size": 150, "truncLabel": "267 JUMPDEST\n268 PUSH2 0x0140\n271 PUSH1 0x04\n273 DUP1\n274 DUP1\n275 CALLDATALOAD\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "499 JUMPDEST\n500 PUSH1 0x00\n502 DUP1\n503 DUP3\n504 PUSH1 0x00\n506 DUP1\n507 CALLER\n508 PUSH20 0xffffffff(...)\n529 AND\n530 PUSH20 0xffffffff(...)\n551 AND\n552 DUP2\n553 MSTORE\n554 PUSH1 0x20\n556 ADD\n557 SWAP1\n558 DUP2\n559 MSTORE\n560 PUSH1 0x20\n562 ADD\n563 PUSH1 0x00\n565 SHA3\n566 SLOAD\n567 SUB\n568 LT\n569 ISZERO\n570 ISZERO\n571 ISZERO\n572 PUSH2 0x0244\n575 JUMPI", "id": "1167", "isExpanded": false, "label": "499 JUMPDEST\n500 PUSH1 0x00\n502 DUP1\n503 DUP3\n504 PUSH1 0x00\n506 DUP1\n(click to expand +)", "size": 150, "truncLabel": "499 JUMPDEST\n500 PUSH1 0x00\n502 DUP1\n503 DUP3\n504 PUSH1 0x00\n506 DUP1\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "580 JUMPDEST\n581 DUP2\n582 PUSH1 0x00\n584 DUP1\n585 CALLER\n586 PUSH20 0xffffffff(...)\n607 AND\n608 PUSH20 0xffffffff(...)\n629 AND\n630 DUP2\n631 MSTORE\n632 PUSH1 0x20\n634 ADD\n635 SWAP1\n636 DUP2\n637 MSTORE\n638 PUSH1 0x20\n640 ADD\n641 PUSH1 0x00\n643 SHA3\n644 PUSH1 0x00\n646 DUP3\n647 DUP3\n648 SLOAD\n649 SUB\n650 SWAP3\n651 POP\n652 POP\n653 DUP2\n654 SWAP1\n655 SSTORE", "id": "1168", "isExpanded": false, "label": "580 JUMPDEST\n581 DUP2\n582 PUSH1 0x00\n584 DUP1\n585 CALLER\n586 PUSH20 0xffffffff(...)\n(click to expand +)", "size": 150, "truncLabel": "580 JUMPDEST\n581 DUP2\n582 PUSH1 0x00\n584 DUP1\n585 CALLER\n586 PUSH20 0xffffffff(...)\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n683 AND\n684 PUSH20 0xffffffff(...)\n705 AND\n706 DUP2\n707 MSTORE\n708 PUSH1 0x20\n710 ADD\n711 SWAP1\n712 DUP2\n713 MSTORE\n714 PUSH1 0x20\n716 ADD\n717 PUSH1 0x00\n719 SHA3\n720 PUSH1 0x00\n722 DUP3\n723 DUP3\n724 SLOAD\n725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n731 SSTORE\n732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1169", "isExpanded": false, "label": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n(click to expand +)", "size": 150, "truncLabel": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n683 AND\n684 PUSH20 0xffffffff(...)\n705 AND\n706 DUP2\n707 MSTORE\n708 PUSH1 0x20\n710 ADD\n711 SWAP1\n712 DUP2\n713 MSTORE\n714 PUSH1 0x20\n716 ADD\n717 PUSH1 0x00\n719 SHA3\n720 PUSH1 0x00\n722 DUP3\n723 DUP3\n724 SLOAD", "id": "1170", "isExpanded": false, "label": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n(click to expand +)", "size": 150, "truncLabel": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n731 SSTORE\n732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1171", "isExpanded": false, "label": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)", "size": 150, "truncLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n731 SSTORE\n732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1172", "isExpanded": false, "label": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)", "size": 150, "truncLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1173", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1174", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1175", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n9 PUSH2 0x0062\n12 JUMPI", "id": "1176", "isExpanded": false, "label": "0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n(click to expand +)", "size": 150, "truncLabel": "0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n9 PUSH2 0x0062\n12 JUMPI", "id": "1177", "isExpanded": false, "label": "0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n(click to expand +)", "size": 150, "truncLabel": "0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n9 PUSH2 0x0062\n12 JUMPI", "id": "1178", "isExpanded": false, "label": "0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n(click to expand +)", "size": 150, "truncLabel": "0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n9 PUSH2 0x0062\n12 JUMPI", "id": "1179", "isExpanded": false, "label": "0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n(click to expand +)", "size": 150, "truncLabel": "0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n9 PUSH2 0x0062\n12 JUMPI", "id": "1180", "isExpanded": false, "label": "0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n(click to expand +)", "size": 150, "truncLabel": "0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n9 PUSH2 0x0062\n12 JUMPI", "id": "1181", "isExpanded": false, "label": "0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n(click to expand +)", "size": 150, "truncLabel": "0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x01000000(...)\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n53 AND\n54 DUP1\n55 PUSH4 0x18160ddd\n60 EQ\n61 PUSH2 0x0067\n64 JUMPI", "id": "1182", "isExpanded": false, "label": "13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x01000000(...)\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n(click to expand +)", "size": 150, "truncLabel": "13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x01000000(...)\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "98 JUMPDEST\n99 PUSH1 0x00\n101 DUP1\n102 REVERT", "id": "1183", "isExpanded": false, "label": "98 JUMPDEST\n99 PUSH1 0x00\n101 DUP1\n102 REVERT", "size": 150, "truncLabel": "98 JUMPDEST\n99 PUSH1 0x00\n101 DUP1\n102 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "65 DUP1\n66 PUSH4 0x6241bfd1\n71 EQ\n72 PUSH2 0x0090\n75 JUMPI", "id": "1184", "isExpanded": false, "label": "65 DUP1\n66 PUSH4 0x6241bfd1\n71 EQ\n72 PUSH2 0x0090\n75 JUMPI", "size": 150, "truncLabel": "65 DUP1\n66 PUSH4 0x6241bfd1\n71 EQ\n72 PUSH2 0x0090\n75 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "103 JUMPDEST\n104 CALLVALUE\n105 ISZERO\n106 PUSH2 0x0072\n109 JUMPI", "id": "1185", "isExpanded": false, "label": "103 JUMPDEST\n104 CALLVALUE\n105 ISZERO\n106 PUSH2 0x0072\n109 JUMPI", "size": 150, "truncLabel": "103 JUMPDEST\n104 CALLVALUE\n105 ISZERO\n106 PUSH2 0x0072\n109 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "110 PUSH1 0x00\n112 DUP1\n113 REVERT", "id": "1186", "isExpanded": false, "label": "110 PUSH1 0x00\n112 DUP1\n113 REVERT", "size": 150, "truncLabel": "110 PUSH1 0x00\n112 DUP1\n113 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "114 JUMPDEST\n115 PUSH2 0x007a\n118 PUSH2 0x015a\n121 JUMP", "id": "1187", "isExpanded": false, "label": "114 JUMPDEST\n115 PUSH2 0x007a\n118 PUSH2 0x015a\n121 JUMP", "size": 150, "truncLabel": "114 JUMPDEST\n115 PUSH2 0x007a\n118 PUSH2 0x015a\n121 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "346 JUMPDEST\n347 PUSH1 0x01\n349 SLOAD\n350 DUP2\n351 JUMP", "id": "1188", "isExpanded": false, "label": "346 JUMPDEST\n347 PUSH1 0x01\n349 SLOAD\n350 DUP2\n351 JUMP", "size": 150, "truncLabel": "346 JUMPDEST\n347 PUSH1 0x01\n349 SLOAD\n350 DUP2\n351 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "122 JUMPDEST\n123 PUSH1 0x40\n125 MLOAD\n126 DUP1\n127 DUP3\n128 DUP2\n129 MSTORE\n130 PUSH1 0x20\n132 ADD\n133 SWAP2\n134 POP\n135 POP\n136 PUSH1 0x40\n138 MLOAD\n139 DUP1\n140 SWAP2\n141 SUB\n142 SWAP1\n143 RETURN", "id": "1189", "isExpanded": false, "label": "122 JUMPDEST\n123 PUSH1 0x40\n125 MLOAD\n126 DUP1\n127 DUP3\n128 DUP2\n(click to expand +)", "size": 150, "truncLabel": "122 JUMPDEST\n123 PUSH1 0x40\n125 MLOAD\n126 DUP1\n127 DUP3\n128 DUP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "76 DUP1\n77 PUSH4 0x70a08231\n82 EQ\n83 PUSH2 0x00b3\n86 JUMPI", "id": "1190", "isExpanded": false, "label": "76 DUP1\n77 PUSH4 0x70a08231\n82 EQ\n83 PUSH2 0x00b3\n86 JUMPI", "size": 150, "truncLabel": "76 DUP1\n77 PUSH4 0x70a08231\n82 EQ\n83 PUSH2 0x00b3\n86 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "144 JUMPDEST\n145 CALLVALUE\n146 ISZERO\n147 PUSH2 0x009b\n150 JUMPI", "id": "1191", "isExpanded": false, "label": "144 JUMPDEST\n145 CALLVALUE\n146 ISZERO\n147 PUSH2 0x009b\n150 JUMPI", "size": 150, "truncLabel": "144 JUMPDEST\n145 CALLVALUE\n146 ISZERO\n147 PUSH2 0x009b\n150 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "151 PUSH1 0x00\n153 DUP1\n154 REVERT", "id": "1192", "isExpanded": false, "label": "151 PUSH1 0x00\n153 DUP1\n154 REVERT", "size": 150, "truncLabel": "151 PUSH1 0x00\n153 DUP1\n154 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "155 JUMPDEST\n156 PUSH2 0x00b1\n159 PUSH1 0x04\n161 DUP1\n162 DUP1\n163 CALLDATALOAD\n164 SWAP1\n165 PUSH1 0x20\n167 ADD\n168 SWAP1\n169 SWAP2\n170 SWAP1\n171 POP\n172 POP\n173 PUSH2 0x0160\n176 JUMP", "id": "1193", "isExpanded": false, "label": "155 JUMPDEST\n156 PUSH2 0x00b1\n159 PUSH1 0x04\n161 DUP1\n162 DUP1\n163 CALLDATALOAD\n(click to expand +)", "size": 150, "truncLabel": "155 JUMPDEST\n156 PUSH2 0x00b1\n159 PUSH1 0x04\n161 DUP1\n162 DUP1\n163 CALLDATALOAD\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "352 JUMPDEST\n353 DUP1\n354 PUSH1 0x01\n356 DUP2\n357 SWAP1\n358 SSTORE\n359 PUSH1 0x00\n361 DUP1\n362 CALLER\n363 PUSH20 0xffffffff(...)\n384 AND\n385 PUSH20 0xffffffff(...)\n406 AND\n407 DUP2\n408 MSTORE\n409 PUSH1 0x20\n411 ADD\n412 SWAP1\n413 DUP2\n414 MSTORE\n415 PUSH1 0x20\n417 ADD\n418 PUSH1 0x00\n420 SHA3\n421 DUP2\n422 SWAP1\n423 SSTORE", "id": "1194", "isExpanded": false, "label": "352 JUMPDEST\n353 DUP1\n354 PUSH1 0x01\n356 DUP2\n357 SWAP1\n358 SSTORE\n(click to expand +)", "size": 150, "truncLabel": "352 JUMPDEST\n353 DUP1\n354 PUSH1 0x01\n356 DUP2\n357 SWAP1\n358 SSTORE\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "424 POP\n425 POP\n426 JUMP", "id": "1195", "isExpanded": false, "label": "424 POP\n425 POP\n426 JUMP", "size": 150, "truncLabel": "424 POP\n425 POP\n426 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "424 POP\n425 POP\n426 JUMP", "id": "1196", "isExpanded": false, "label": "424 POP\n425 POP\n426 JUMP", "size": 150, "truncLabel": "424 POP\n425 POP\n426 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "177 JUMPDEST\n178 STOP", "id": "1197", "isExpanded": false, "label": "177 JUMPDEST\n178 STOP", "size": 150, "truncLabel": "177 JUMPDEST\n178 STOP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "177 JUMPDEST\n178 STOP", "id": "1198", "isExpanded": false, "label": "177 JUMPDEST\n178 STOP", "size": 150, "truncLabel": "177 JUMPDEST\n178 STOP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "87 DUP1\n88 PUSH4 0xa3210e87\n93 EQ\n94 PUSH2 0x0100\n97 JUMPI", "id": "1199", "isExpanded": false, "label": "87 DUP1\n88 PUSH4 0xa3210e87\n93 EQ\n94 PUSH2 0x0100\n97 JUMPI", "size": 150, "truncLabel": "87 DUP1\n88 PUSH4 0xa3210e87\n93 EQ\n94 PUSH2 0x0100\n97 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "179 JUMPDEST\n180 CALLVALUE\n181 ISZERO\n182 PUSH2 0x00be\n185 JUMPI", "id": "1200", "isExpanded": false, "label": "179 JUMPDEST\n180 CALLVALUE\n181 ISZERO\n182 PUSH2 0x00be\n185 JUMPI", "size": 150, "truncLabel": "179 JUMPDEST\n180 CALLVALUE\n181 ISZERO\n182 PUSH2 0x00be\n185 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "186 PUSH1 0x00\n188 DUP1\n189 REVERT", "id": "1201", "isExpanded": false, "label": "186 PUSH1 0x00\n188 DUP1\n189 REVERT", "size": 150, "truncLabel": "186 PUSH1 0x00\n188 DUP1\n189 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "190 JUMPDEST\n191 PUSH2 0x00ea\n194 PUSH1 0x04\n196 DUP1\n197 DUP1\n198 CALLDATALOAD\n199 PUSH20 0xffffffff(...)\n220 AND\n221 SWAP1\n222 PUSH1 0x20\n224 ADD\n225 SWAP1\n226 SWAP2\n227 SWAP1\n228 POP\n229 POP\n230 PUSH2 0x01ab\n233 JUMP", "id": "1202", "isExpanded": false, "label": "190 JUMPDEST\n191 PUSH2 0x00ea\n194 PUSH1 0x04\n196 DUP1\n197 DUP1\n198 CALLDATALOAD\n(click to expand +)", "size": 150, "truncLabel": "190 JUMPDEST\n191 PUSH2 0x00ea\n194 PUSH1 0x04\n196 DUP1\n197 DUP1\n198 CALLDATALOAD\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "427 JUMPDEST\n428 PUSH1 0x00\n430 DUP1\n431 PUSH1 0x00\n433 DUP4\n434 PUSH20 0xffffffff(...)\n455 AND\n456 PUSH20 0xffffffff(...)\n477 AND\n478 DUP2\n479 MSTORE\n480 PUSH1 0x20\n482 ADD\n483 SWAP1\n484 DUP2\n485 MSTORE\n486 PUSH1 0x20\n488 ADD\n489 PUSH1 0x00\n491 SHA3\n492 SLOAD\n493 SWAP1\n494 POP\n495 SWAP2\n496 SWAP1\n497 POP\n498 JUMP", "id": "1203", "isExpanded": false, "label": "427 JUMPDEST\n428 PUSH1 0x00\n430 DUP1\n431 PUSH1 0x00\n433 DUP4\n434 PUSH20 0xffffffff(...)\n(click to expand +)", "size": 150, "truncLabel": "427 JUMPDEST\n428 PUSH1 0x00\n430 DUP1\n431 PUSH1 0x00\n433 DUP4\n434 PUSH20 0xffffffff(...)\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "234 JUMPDEST\n235 PUSH1 0x40\n237 MLOAD\n238 DUP1\n239 DUP3\n240 DUP2\n241 MSTORE\n242 PUSH1 0x20\n244 ADD\n245 SWAP2\n246 POP\n247 POP\n248 PUSH1 0x40\n250 MLOAD\n251 DUP1\n252 SWAP2\n253 SUB\n254 SWAP1\n255 RETURN", "id": "1204", "isExpanded": false, "label": "234 JUMPDEST\n235 PUSH1 0x40\n237 MLOAD\n238 DUP1\n239 DUP3\n240 DUP2\n(click to expand +)", "size": 150, "truncLabel": "234 JUMPDEST\n235 PUSH1 0x40\n237 MLOAD\n238 DUP1\n239 DUP3\n240 DUP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "98 JUMPDEST\n99 PUSH1 0x00\n101 DUP1\n102 REVERT", "id": "1205", "isExpanded": false, "label": "98 JUMPDEST\n99 PUSH1 0x00\n101 DUP1\n102 REVERT", "size": 150, "truncLabel": "98 JUMPDEST\n99 PUSH1 0x00\n101 DUP1\n102 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "256 JUMPDEST\n257 CALLVALUE\n258 ISZERO\n259 PUSH2 0x010b\n262 JUMPI", "id": "1206", "isExpanded": false, "label": "256 JUMPDEST\n257 CALLVALUE\n258 ISZERO\n259 PUSH2 0x010b\n262 JUMPI", "size": 150, "truncLabel": "256 JUMPDEST\n257 CALLVALUE\n258 ISZERO\n259 PUSH2 0x010b\n262 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "263 PUSH1 0x00\n265 DUP1\n266 REVERT", "id": "1207", "isExpanded": false, "label": "263 PUSH1 0x00\n265 DUP1\n266 REVERT", "size": 150, "truncLabel": "263 PUSH1 0x00\n265 DUP1\n266 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "267 JUMPDEST\n268 PUSH2 0x0140\n271 PUSH1 0x04\n273 DUP1\n274 DUP1\n275 CALLDATALOAD\n276 PUSH20 0xffffffff(...)\n297 AND\n298 SWAP1\n299 PUSH1 0x20\n301 ADD\n302 SWAP1\n303 SWAP2\n304 SWAP1\n305 DUP1\n306 CALLDATALOAD\n307 SWAP1\n308 PUSH1 0x20\n310 ADD\n311 SWAP1\n312 SWAP2\n313 SWAP1\n314 POP\n315 POP\n316 PUSH2 0x01f3\n319 JUMP", "id": "1208", "isExpanded": false, "label": "267 JUMPDEST\n268 PUSH2 0x0140\n271 PUSH1 0x04\n273 DUP1\n274 DUP1\n275 CALLDATALOAD\n(click to expand +)", "size": 150, "truncLabel": "267 JUMPDEST\n268 PUSH2 0x0140\n271 PUSH1 0x04\n273 DUP1\n274 DUP1\n275 CALLDATALOAD\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "499 JUMPDEST\n500 PUSH1 0x00\n502 DUP1\n503 DUP3\n504 PUSH1 0x00\n506 DUP1\n507 CALLER\n508 PUSH20 0xffffffff(...)\n529 AND\n530 PUSH20 0xffffffff(...)\n551 AND\n552 DUP2\n553 MSTORE\n554 PUSH1 0x20\n556 ADD\n557 SWAP1\n558 DUP2\n559 MSTORE\n560 PUSH1 0x20\n562 ADD\n563 PUSH1 0x00\n565 SHA3\n566 SLOAD\n567 SUB\n568 LT\n569 ISZERO\n570 ISZERO\n571 ISZERO\n572 PUSH2 0x0244\n575 JUMPI", "id": "1209", "isExpanded": false, "label": "499 JUMPDEST\n500 PUSH1 0x00\n502 DUP1\n503 DUP3\n504 PUSH1 0x00\n506 DUP1\n(click to expand +)", "size": 150, "truncLabel": "499 JUMPDEST\n500 PUSH1 0x00\n502 DUP1\n503 DUP3\n504 PUSH1 0x00\n506 DUP1\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "580 JUMPDEST\n581 DUP2\n582 PUSH1 0x00\n584 DUP1\n585 CALLER\n586 PUSH20 0xffffffff(...)\n607 AND\n608 PUSH20 0xffffffff(...)\n629 AND\n630 DUP2\n631 MSTORE\n632 PUSH1 0x20\n634 ADD\n635 SWAP1\n636 DUP2\n637 MSTORE\n638 PUSH1 0x20\n640 ADD\n641 PUSH1 0x00\n643 SHA3\n644 PUSH1 0x00\n646 DUP3\n647 DUP3\n648 SLOAD\n649 SUB\n650 SWAP3\n651 POP\n652 POP\n653 DUP2\n654 SWAP1\n655 SSTORE", "id": "1210", "isExpanded": false, "label": "580 JUMPDEST\n581 DUP2\n582 PUSH1 0x00\n584 DUP1\n585 CALLER\n586 PUSH20 0xffffffff(...)\n(click to expand +)", "size": 150, "truncLabel": "580 JUMPDEST\n581 DUP2\n582 PUSH1 0x00\n584 DUP1\n585 CALLER\n586 PUSH20 0xffffffff(...)\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n683 AND\n684 PUSH20 0xffffffff(...)\n705 AND\n706 DUP2\n707 MSTORE\n708 PUSH1 0x20\n710 ADD\n711 SWAP1\n712 DUP2\n713 MSTORE\n714 PUSH1 0x20\n716 ADD\n717 PUSH1 0x00\n719 SHA3\n720 PUSH1 0x00\n722 DUP3\n723 DUP3\n724 SLOAD\n725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n731 SSTORE", "id": "1211", "isExpanded": false, "label": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n(click to expand +)", "size": 150, "truncLabel": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n683 AND\n684 PUSH20 0xffffffff(...)\n705 AND\n706 DUP2\n707 MSTORE\n708 PUSH1 0x20\n710 ADD\n711 SWAP1\n712 DUP2\n713 MSTORE\n714 PUSH1 0x20\n716 ADD\n717 PUSH1 0x00\n719 SHA3\n720 PUSH1 0x00\n722 DUP3\n723 DUP3\n724 SLOAD", "id": "1212", "isExpanded": false, "label": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n(click to expand +)", "size": 150, "truncLabel": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n731 SSTORE", "id": "1213", "isExpanded": false, "label": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)", "size": 150, "truncLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n731 SSTORE", "id": "1214", "isExpanded": false, "label": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)", "size": 150, "truncLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1215", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1216", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1217", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1218", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1219", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1220", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1221", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1222", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1223", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1224", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1225", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1226", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1227", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1228", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1229", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1230", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x01000000(...)\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n53 AND\n54 DUP1\n55 PUSH4 0x18160ddd\n60 EQ\n61 PUSH2 0x0067\n64 JUMPI", "id": "1231", "isExpanded": false, "label": "13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x01000000(...)\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n(click to expand +)", "size": 150, "truncLabel": "13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x01000000(...)\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "98 JUMPDEST\n99 PUSH1 0x00\n101 DUP1\n102 REVERT", "id": "1232", "isExpanded": false, "label": "98 JUMPDEST\n99 PUSH1 0x00\n101 DUP1\n102 REVERT", "size": 150, "truncLabel": "98 JUMPDEST\n99 PUSH1 0x00\n101 DUP1\n102 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "65 DUP1\n66 PUSH4 0x6241bfd1\n71 EQ\n72 PUSH2 0x0090\n75 JUMPI", "id": "1233", "isExpanded": false, "label": "65 DUP1\n66 PUSH4 0x6241bfd1\n71 EQ\n72 PUSH2 0x0090\n75 JUMPI", "size": 150, "truncLabel": "65 DUP1\n66 PUSH4 0x6241bfd1\n71 EQ\n72 PUSH2 0x0090\n75 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "103 JUMPDEST\n104 CALLVALUE\n105 ISZERO\n106 PUSH2 0x0072\n109 JUMPI", "id": "1234", "isExpanded": false, "label": "103 JUMPDEST\n104 CALLVALUE\n105 ISZERO\n106 PUSH2 0x0072\n109 JUMPI", "size": 150, "truncLabel": "103 JUMPDEST\n104 CALLVALUE\n105 ISZERO\n106 PUSH2 0x0072\n109 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "110 PUSH1 0x00\n112 DUP1\n113 REVERT", "id": "1235", "isExpanded": false, "label": "110 PUSH1 0x00\n112 DUP1\n113 REVERT", "size": 150, "truncLabel": "110 PUSH1 0x00\n112 DUP1\n113 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "114 JUMPDEST\n115 PUSH2 0x007a\n118 PUSH2 0x015a\n121 JUMP", "id": "1236", "isExpanded": false, "label": "114 JUMPDEST\n115 PUSH2 0x007a\n118 PUSH2 0x015a\n121 JUMP", "size": 150, "truncLabel": "114 JUMPDEST\n115 PUSH2 0x007a\n118 PUSH2 0x015a\n121 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "346 JUMPDEST\n347 PUSH1 0x01\n349 SLOAD\n350 DUP2\n351 JUMP", "id": "1237", "isExpanded": false, "label": "346 JUMPDEST\n347 PUSH1 0x01\n349 SLOAD\n350 DUP2\n351 JUMP", "size": 150, "truncLabel": "346 JUMPDEST\n347 PUSH1 0x01\n349 SLOAD\n350 DUP2\n351 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "122 JUMPDEST\n123 PUSH1 0x40\n125 MLOAD\n126 DUP1\n127 DUP3\n128 DUP2\n129 MSTORE\n130 PUSH1 0x20\n132 ADD\n133 SWAP2\n134 POP\n135 POP\n136 PUSH1 0x40\n138 MLOAD\n139 DUP1\n140 SWAP2\n141 SUB\n142 SWAP1\n143 RETURN", "id": "1238", "isExpanded": false, "label": "122 JUMPDEST\n123 PUSH1 0x40\n125 MLOAD\n126 DUP1\n127 DUP3\n128 DUP2\n(click to expand +)", "size": 150, "truncLabel": "122 JUMPDEST\n123 PUSH1 0x40\n125 MLOAD\n126 DUP1\n127 DUP3\n128 DUP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "76 DUP1\n77 PUSH4 0x70a08231\n82 EQ\n83 PUSH2 0x00b3\n86 JUMPI", "id": "1239", "isExpanded": false, "label": "76 DUP1\n77 PUSH4 0x70a08231\n82 EQ\n83 PUSH2 0x00b3\n86 JUMPI", "size": 150, "truncLabel": "76 DUP1\n77 PUSH4 0x70a08231\n82 EQ\n83 PUSH2 0x00b3\n86 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "144 JUMPDEST\n145 CALLVALUE\n146 ISZERO\n147 PUSH2 0x009b\n150 JUMPI", "id": "1240", "isExpanded": false, "label": "144 JUMPDEST\n145 CALLVALUE\n146 ISZERO\n147 PUSH2 0x009b\n150 JUMPI", "size": 150, "truncLabel": "144 JUMPDEST\n145 CALLVALUE\n146 ISZERO\n147 PUSH2 0x009b\n150 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "151 PUSH1 0x00\n153 DUP1\n154 REVERT", "id": "1241", "isExpanded": false, "label": "151 PUSH1 0x00\n153 DUP1\n154 REVERT", "size": 150, "truncLabel": "151 PUSH1 0x00\n153 DUP1\n154 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "155 JUMPDEST\n156 PUSH2 0x00b1\n159 PUSH1 0x04\n161 DUP1\n162 DUP1\n163 CALLDATALOAD\n164 SWAP1\n165 PUSH1 0x20\n167 ADD\n168 SWAP1\n169 SWAP2\n170 SWAP1\n171 POP\n172 POP\n173 PUSH2 0x0160\n176 JUMP", "id": "1242", "isExpanded": false, "label": "155 JUMPDEST\n156 PUSH2 0x00b1\n159 PUSH1 0x04\n161 DUP1\n162 DUP1\n163 CALLDATALOAD\n(click to expand +)", "size": 150, "truncLabel": "155 JUMPDEST\n156 PUSH2 0x00b1\n159 PUSH1 0x04\n161 DUP1\n162 DUP1\n163 CALLDATALOAD\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "352 JUMPDEST\n353 DUP1\n354 PUSH1 0x01\n356 DUP2\n357 SWAP1\n358 SSTORE\n359 PUSH1 0x00\n361 DUP1\n362 CALLER\n363 PUSH20 0xffffffff(...)\n384 AND\n385 PUSH20 0xffffffff(...)\n406 AND\n407 DUP2\n408 MSTORE\n409 PUSH1 0x20\n411 ADD\n412 SWAP1\n413 DUP2\n414 MSTORE\n415 PUSH1 0x20\n417 ADD\n418 PUSH1 0x00\n420 SHA3\n421 DUP2\n422 SWAP1\n423 SSTORE", "id": "1243", "isExpanded": false, "label": "352 JUMPDEST\n353 DUP1\n354 PUSH1 0x01\n356 DUP2\n357 SWAP1\n358 SSTORE\n(click to expand +)", "size": 150, "truncLabel": "352 JUMPDEST\n353 DUP1\n354 PUSH1 0x01\n356 DUP2\n357 SWAP1\n358 SSTORE\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "424 POP\n425 POP\n426 JUMP", "id": "1244", "isExpanded": false, "label": "424 POP\n425 POP\n426 JUMP", "size": 150, "truncLabel": "424 POP\n425 POP\n426 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "424 POP\n425 POP\n426 JUMP", "id": "1245", "isExpanded": false, "label": "424 POP\n425 POP\n426 JUMP", "size": 150, "truncLabel": "424 POP\n425 POP\n426 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "424 POP\n425 POP\n426 JUMP", "id": "1246", "isExpanded": false, "label": "424 POP\n425 POP\n426 JUMP", "size": 150, "truncLabel": "424 POP\n425 POP\n426 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "177 JUMPDEST\n178 STOP", "id": "1247", "isExpanded": false, "label": "177 JUMPDEST\n178 STOP", "size": 150, "truncLabel": "177 JUMPDEST\n178 STOP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "177 JUMPDEST\n178 STOP", "id": "1248", "isExpanded": false, "label": "177 JUMPDEST\n178 STOP", "size": 150, "truncLabel": "177 JUMPDEST\n178 STOP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "177 JUMPDEST\n178 STOP", "id": "1249", "isExpanded": false, "label": "177 JUMPDEST\n178 STOP", "size": 150, "truncLabel": "177 JUMPDEST\n178 STOP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "87 DUP1\n88 PUSH4 0xa3210e87\n93 EQ\n94 PUSH2 0x0100\n97 JUMPI", "id": "1250", "isExpanded": false, "label": "87 DUP1\n88 PUSH4 0xa3210e87\n93 EQ\n94 PUSH2 0x0100\n97 JUMPI", "size": 150, "truncLabel": "87 DUP1\n88 PUSH4 0xa3210e87\n93 EQ\n94 PUSH2 0x0100\n97 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "179 JUMPDEST\n180 CALLVALUE\n181 ISZERO\n182 PUSH2 0x00be\n185 JUMPI", "id": "1251", "isExpanded": false, "label": "179 JUMPDEST\n180 CALLVALUE\n181 ISZERO\n182 PUSH2 0x00be\n185 JUMPI", "size": 150, "truncLabel": "179 JUMPDEST\n180 CALLVALUE\n181 ISZERO\n182 PUSH2 0x00be\n185 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "186 PUSH1 0x00\n188 DUP1\n189 REVERT", "id": "1252", "isExpanded": false, "label": "186 PUSH1 0x00\n188 DUP1\n189 REVERT", "size": 150, "truncLabel": "186 PUSH1 0x00\n188 DUP1\n189 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "190 JUMPDEST\n191 PUSH2 0x00ea\n194 PUSH1 0x04\n196 DUP1\n197 DUP1\n198 CALLDATALOAD\n199 PUSH20 0xffffffff(...)\n220 AND\n221 SWAP1\n222 PUSH1 0x20\n224 ADD\n225 SWAP1\n226 SWAP2\n227 SWAP1\n228 POP\n229 POP\n230 PUSH2 0x01ab\n233 JUMP", "id": "1253", "isExpanded": false, "label": "190 JUMPDEST\n191 PUSH2 0x00ea\n194 PUSH1 0x04\n196 DUP1\n197 DUP1\n198 CALLDATALOAD\n(click to expand +)", "size": 150, "truncLabel": "190 JUMPDEST\n191 PUSH2 0x00ea\n194 PUSH1 0x04\n196 DUP1\n197 DUP1\n198 CALLDATALOAD\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "427 JUMPDEST\n428 PUSH1 0x00\n430 DUP1\n431 PUSH1 0x00\n433 DUP4\n434 PUSH20 0xffffffff(...)\n455 AND\n456 PUSH20 0xffffffff(...)\n477 AND\n478 DUP2\n479 MSTORE\n480 PUSH1 0x20\n482 ADD\n483 SWAP1\n484 DUP2\n485 MSTORE\n486 PUSH1 0x20\n488 ADD\n489 PUSH1 0x00\n491 SHA3\n492 SLOAD", "id": "1254", "isExpanded": false, "label": "427 JUMPDEST\n428 PUSH1 0x00\n430 DUP1\n431 PUSH1 0x00\n433 DUP4\n434 PUSH20 0xffffffff(...)\n(click to expand +)", "size": 150, "truncLabel": "427 JUMPDEST\n428 PUSH1 0x00\n430 DUP1\n431 PUSH1 0x00\n433 DUP4\n434 PUSH20 0xffffffff(...)\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "493 SWAP1\n494 POP\n495 SWAP2\n496 SWAP1\n497 POP\n498 JUMP", "id": "1255", "isExpanded": false, "label": "493 SWAP1\n494 POP\n495 SWAP2\n496 SWAP1\n497 POP\n498 JUMP", "size": 150, "truncLabel": "493 SWAP1\n494 POP\n495 SWAP2\n496 SWAP1\n497 POP\n498 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "493 SWAP1\n494 POP\n495 SWAP2\n496 SWAP1\n497 POP\n498 JUMP", "id": "1256", "isExpanded": false, "label": "493 SWAP1\n494 POP\n495 SWAP2\n496 SWAP1\n497 POP\n498 JUMP", "size": 150, "truncLabel": "493 SWAP1\n494 POP\n495 SWAP2\n496 SWAP1\n497 POP\n498 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "234 JUMPDEST\n235 PUSH1 0x40\n237 MLOAD\n238 DUP1\n239 DUP3\n240 DUP2\n241 MSTORE\n242 PUSH1 0x20\n244 ADD\n245 SWAP2\n246 POP\n247 POP\n248 PUSH1 0x40\n250 MLOAD\n251 DUP1\n252 SWAP2\n253 SUB\n254 SWAP1\n255 RETURN", "id": "1257", "isExpanded": false, "label": "234 JUMPDEST\n235 PUSH1 0x40\n237 MLOAD\n238 DUP1\n239 DUP3\n240 DUP2\n(click to expand +)", "size": 150, "truncLabel": "234 JUMPDEST\n235 PUSH1 0x40\n237 MLOAD\n238 DUP1\n239 DUP3\n240 DUP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "234 JUMPDEST\n235 PUSH1 0x40\n237 MLOAD\n238 DUP1\n239 DUP3\n240 DUP2\n241 MSTORE\n242 PUSH1 0x20\n244 ADD\n245 SWAP2\n246 POP\n247 POP\n248 PUSH1 0x40\n250 MLOAD\n251 DUP1\n252 SWAP2\n253 SUB\n254 SWAP1\n255 RETURN", "id": "1258", "isExpanded": false, "label": "234 JUMPDEST\n235 PUSH1 0x40\n237 MLOAD\n238 DUP1\n239 DUP3\n240 DUP2\n(click to expand +)", "size": 150, "truncLabel": "234 JUMPDEST\n235 PUSH1 0x40\n237 MLOAD\n238 DUP1\n239 DUP3\n240 DUP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "98 JUMPDEST\n99 PUSH1 0x00\n101 DUP1\n102 REVERT", "id": "1259", "isExpanded": false, "label": "98 JUMPDEST\n99 PUSH1 0x00\n101 DUP1\n102 REVERT", "size": 150, "truncLabel": "98 JUMPDEST\n99 PUSH1 0x00\n101 DUP1\n102 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "256 JUMPDEST\n257 CALLVALUE\n258 ISZERO\n259 PUSH2 0x010b\n262 JUMPI", "id": "1260", "isExpanded": false, "label": "256 JUMPDEST\n257 CALLVALUE\n258 ISZERO\n259 PUSH2 0x010b\n262 JUMPI", "size": 150, "truncLabel": "256 JUMPDEST\n257 CALLVALUE\n258 ISZERO\n259 PUSH2 0x010b\n262 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "263 PUSH1 0x00\n265 DUP1\n266 REVERT", "id": "1261", "isExpanded": false, "label": "263 PUSH1 0x00\n265 DUP1\n266 REVERT", "size": 150, "truncLabel": "263 PUSH1 0x00\n265 DUP1\n266 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "267 JUMPDEST\n268 PUSH2 0x0140\n271 PUSH1 0x04\n273 DUP1\n274 DUP1\n275 CALLDATALOAD\n276 PUSH20 0xffffffff(...)\n297 AND\n298 SWAP1\n299 PUSH1 0x20\n301 ADD\n302 SWAP1\n303 SWAP2\n304 SWAP1\n305 DUP1\n306 CALLDATALOAD\n307 SWAP1\n308 PUSH1 0x20\n310 ADD\n311 SWAP1\n312 SWAP2\n313 SWAP1\n314 POP\n315 POP\n316 PUSH2 0x01f3\n319 JUMP", "id": "1262", "isExpanded": false, "label": "267 JUMPDEST\n268 PUSH2 0x0140\n271 PUSH1 0x04\n273 DUP1\n274 DUP1\n275 CALLDATALOAD\n(click to expand +)", "size": 150, "truncLabel": "267 JUMPDEST\n268 PUSH2 0x0140\n271 PUSH1 0x04\n273 DUP1\n274 DUP1\n275 CALLDATALOAD\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "499 JUMPDEST\n500 PUSH1 0x00\n502 DUP1\n503 DUP3\n504 PUSH1 0x00\n506 DUP1\n507 CALLER\n508 PUSH20 0xffffffff(...)\n529 AND\n530 PUSH20 0xffffffff(...)\n551 AND\n552 DUP2\n553 MSTORE\n554 PUSH1 0x20\n556 ADD\n557 SWAP1\n558 DUP2\n559 MSTORE\n560 PUSH1 0x20\n562 ADD\n563 PUSH1 0x00\n565 SHA3\n566 SLOAD", "id": "1263", "isExpanded": false, "label": "499 JUMPDEST\n500 PUSH1 0x00\n502 DUP1\n503 DUP3\n504 PUSH1 0x00\n506 DUP1\n(click to expand +)", "size": 150, "truncLabel": "499 JUMPDEST\n500 PUSH1 0x00\n502 DUP1\n503 DUP3\n504 PUSH1 0x00\n506 DUP1\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "567 SUB\n568 LT\n569 ISZERO\n570 ISZERO\n571 ISZERO\n572 PUSH2 0x0244\n575 JUMPI", "id": "1264", "isExpanded": false, "label": "567 SUB\n568 LT\n569 ISZERO\n570 ISZERO\n571 ISZERO\n572 PUSH2 0x0244\n(click to expand +)", "size": 150, "truncLabel": "567 SUB\n568 LT\n569 ISZERO\n570 ISZERO\n571 ISZERO\n572 PUSH2 0x0244\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "567 SUB\n568 LT\n569 ISZERO\n570 ISZERO\n571 ISZERO\n572 PUSH2 0x0244\n575 JUMPI", "id": "1265", "isExpanded": false, "label": "567 SUB\n568 LT\n569 ISZERO\n570 ISZERO\n571 ISZERO\n572 PUSH2 0x0244\n(click to expand +)", "size": 150, "truncLabel": "567 SUB\n568 LT\n569 ISZERO\n570 ISZERO\n571 ISZERO\n572 PUSH2 0x0244\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "580 JUMPDEST\n581 DUP2\n582 PUSH1 0x00\n584 DUP1\n585 CALLER\n586 PUSH20 0xffffffff(...)\n607 AND\n608 PUSH20 0xffffffff(...)\n629 AND\n630 DUP2\n631 MSTORE\n632 PUSH1 0x20\n634 ADD\n635 SWAP1\n636 DUP2\n637 MSTORE\n638 PUSH1 0x20\n640 ADD\n641 PUSH1 0x00\n643 SHA3\n644 PUSH1 0x00\n646 DUP3\n647 DUP3\n648 SLOAD\n649 SUB\n650 SWAP3\n651 POP\n652 POP\n653 DUP2\n654 SWAP1\n655 SSTORE", "id": "1266", "isExpanded": false, "label": "580 JUMPDEST\n581 DUP2\n582 PUSH1 0x00\n584 DUP1\n585 CALLER\n586 PUSH20 0xffffffff(...)\n(click to expand +)", "size": 150, "truncLabel": "580 JUMPDEST\n581 DUP2\n582 PUSH1 0x00\n584 DUP1\n585 CALLER\n586 PUSH20 0xffffffff(...)\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n683 AND\n684 PUSH20 0xffffffff(...)\n705 AND\n706 DUP2\n707 MSTORE\n708 PUSH1 0x20\n710 ADD\n711 SWAP1\n712 DUP2\n713 MSTORE\n714 PUSH1 0x20\n716 ADD\n717 PUSH1 0x00\n719 SHA3\n720 PUSH1 0x00\n722 DUP3\n723 DUP3\n724 SLOAD", "id": "1267", "isExpanded": false, "label": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n(click to expand +)", "size": 150, "truncLabel": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n683 AND\n684 PUSH20 0xffffffff(...)\n705 AND\n706 DUP2\n707 MSTORE\n708 PUSH1 0x20\n710 ADD\n711 SWAP1\n712 DUP2\n713 MSTORE\n714 PUSH1 0x20\n716 ADD\n717 PUSH1 0x00\n719 SHA3\n720 PUSH1 0x00\n722 DUP3\n723 DUP3\n724 SLOAD", "id": "1268", "isExpanded": false, "label": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n(click to expand +)", "size": 150, "truncLabel": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n683 AND\n684 PUSH20 0xffffffff(...)\n705 AND\n706 DUP2\n707 MSTORE\n708 PUSH1 0x20\n710 ADD\n711 SWAP1\n712 DUP2\n713 MSTORE\n714 PUSH1 0x20\n716 ADD\n717 PUSH1 0x00\n719 SHA3\n720 PUSH1 0x00\n722 DUP3\n723 DUP3\n724 SLOAD", "id": "1269", "isExpanded": false, "label": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n(click to expand +)", "size": 150, "truncLabel": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n731 SSTORE", "id": "1270", "isExpanded": false, "label": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)", "size": 150, "truncLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n731 SSTORE", "id": "1271", "isExpanded": false, "label": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)", "size": 150, "truncLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n731 SSTORE", "id": "1272", "isExpanded": false, "label": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)", "size": 150, "truncLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1273", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1274", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1275", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1276", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1277", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1278", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1279", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1280", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1281", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1282", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1283", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1284", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1285", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1286", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1287", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1288", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1289", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1290", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1291", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1292", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1293", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1294", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1295", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1296", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n731 SSTORE", "id": "1297", "isExpanded": false, "label": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)", "size": 150, "truncLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n731 SSTORE", "id": "1298", "isExpanded": false, "label": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)", "size": 150, "truncLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1299", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1300", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1301", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1302", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1303", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1304", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1305", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1306", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1307", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1308", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1309", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1310", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n731 SSTORE", "id": "1311", "isExpanded": false, "label": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)", "size": 150, "truncLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n731 SSTORE", "id": "1312", "isExpanded": false, "label": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)", "size": 150, "truncLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1313", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1314", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1315", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1316", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1317", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1318", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1319", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1320", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1321", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1322", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1323", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1324", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "580 JUMPDEST\n581 DUP2\n582 PUSH1 0x00\n584 DUP1\n585 CALLER\n586 PUSH20 0xffffffff(...)\n607 AND\n608 PUSH20 0xffffffff(...)\n629 AND\n630 DUP2\n631 MSTORE\n632 PUSH1 0x20\n634 ADD\n635 SWAP1\n636 DUP2\n637 MSTORE\n638 PUSH1 0x20\n640 ADD\n641 PUSH1 0x00\n643 SHA3\n644 PUSH1 0x00\n646 DUP3\n647 DUP3\n648 SLOAD\n649 SUB\n650 SWAP3\n651 POP\n652 POP\n653 DUP2\n654 SWAP1\n655 SSTORE", "id": "1325", "isExpanded": false, "label": "580 JUMPDEST\n581 DUP2\n582 PUSH1 0x00\n584 DUP1\n585 CALLER\n586 PUSH20 0xffffffff(...)\n(click to expand +)", "size": 150, "truncLabel": "580 JUMPDEST\n581 DUP2\n582 PUSH1 0x00\n584 DUP1\n585 CALLER\n586 PUSH20 0xffffffff(...)\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n683 AND\n684 PUSH20 0xffffffff(...)\n705 AND\n706 DUP2\n707 MSTORE\n708 PUSH1 0x20\n710 ADD\n711 SWAP1\n712 DUP2\n713 MSTORE\n714 PUSH1 0x20\n716 ADD\n717 PUSH1 0x00\n719 SHA3\n720 PUSH1 0x00\n722 DUP3\n723 DUP3\n724 SLOAD", "id": "1326", "isExpanded": false, "label": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n(click to expand +)", "size": 150, "truncLabel": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n683 AND\n684 PUSH20 0xffffffff(...)\n705 AND\n706 DUP2\n707 MSTORE\n708 PUSH1 0x20\n710 ADD\n711 SWAP1\n712 DUP2\n713 MSTORE\n714 PUSH1 0x20\n716 ADD\n717 PUSH1 0x00\n719 SHA3\n720 PUSH1 0x00\n722 DUP3\n723 DUP3\n724 SLOAD", "id": "1327", "isExpanded": false, "label": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n(click to expand +)", "size": 150, "truncLabel": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n683 AND\n684 PUSH20 0xffffffff(...)\n705 AND\n706 DUP2\n707 MSTORE\n708 PUSH1 0x20\n710 ADD\n711 SWAP1\n712 DUP2\n713 MSTORE\n714 PUSH1 0x20\n716 ADD\n717 PUSH1 0x00\n719 SHA3\n720 PUSH1 0x00\n722 DUP3\n723 DUP3\n724 SLOAD", "id": "1328", "isExpanded": false, "label": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n(click to expand +)", "size": 150, "truncLabel": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n731 SSTORE", "id": "1329", "isExpanded": false, "label": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)", "size": 150, "truncLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n731 SSTORE", "id": "1330", "isExpanded": false, "label": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)", "size": 150, "truncLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n731 SSTORE", "id": "1331", "isExpanded": false, "label": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)", "size": 150, "truncLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1332", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1333", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1334", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1335", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1336", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1337", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1338", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1339", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1340", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1341", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1342", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1343", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1344", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1345", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1346", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1347", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1348", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1349", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1350", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1351", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1352", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1353", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1354", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1355", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n731 SSTORE", "id": "1356", "isExpanded": false, "label": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)", "size": 150, "truncLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n731 SSTORE", "id": "1357", "isExpanded": false, "label": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)", "size": 150, "truncLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1358", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1359", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1360", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1361", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1362", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1363", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1364", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1365", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1366", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1367", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1368", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1369", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n731 SSTORE", "id": "1370", "isExpanded": false, "label": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)", "size": 150, "truncLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n731 SSTORE", "id": "1371", "isExpanded": false, "label": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)", "size": 150, "truncLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1372", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1373", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1374", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1375", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1376", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1377", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1378", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1379", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1380", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1381", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1382", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1383", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x01000000(...)\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n53 AND\n54 DUP1\n55 PUSH4 0x18160ddd\n60 EQ\n61 PUSH2 0x0067\n64 JUMPI", "id": "1384", "isExpanded": false, "label": "13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x01000000(...)\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n(click to expand +)", "size": 150, "truncLabel": "13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x01000000(...)\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "98 JUMPDEST\n99 PUSH1 0x00\n101 DUP1\n102 REVERT", "id": "1385", "isExpanded": false, "label": "98 JUMPDEST\n99 PUSH1 0x00\n101 DUP1\n102 REVERT", "size": 150, "truncLabel": "98 JUMPDEST\n99 PUSH1 0x00\n101 DUP1\n102 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "65 DUP1\n66 PUSH4 0x6241bfd1\n71 EQ\n72 PUSH2 0x0090\n75 JUMPI", "id": "1386", "isExpanded": false, "label": "65 DUP1\n66 PUSH4 0x6241bfd1\n71 EQ\n72 PUSH2 0x0090\n75 JUMPI", "size": 150, "truncLabel": "65 DUP1\n66 PUSH4 0x6241bfd1\n71 EQ\n72 PUSH2 0x0090\n75 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "103 JUMPDEST\n104 CALLVALUE\n105 ISZERO\n106 PUSH2 0x0072\n109 JUMPI", "id": "1387", "isExpanded": false, "label": "103 JUMPDEST\n104 CALLVALUE\n105 ISZERO\n106 PUSH2 0x0072\n109 JUMPI", "size": 150, "truncLabel": "103 JUMPDEST\n104 CALLVALUE\n105 ISZERO\n106 PUSH2 0x0072\n109 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "110 PUSH1 0x00\n112 DUP1\n113 REVERT", "id": "1388", "isExpanded": false, "label": "110 PUSH1 0x00\n112 DUP1\n113 REVERT", "size": 150, "truncLabel": "110 PUSH1 0x00\n112 DUP1\n113 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "114 JUMPDEST\n115 PUSH2 0x007a\n118 PUSH2 0x015a\n121 JUMP", "id": "1389", "isExpanded": false, "label": "114 JUMPDEST\n115 PUSH2 0x007a\n118 PUSH2 0x015a\n121 JUMP", "size": 150, "truncLabel": "114 JUMPDEST\n115 PUSH2 0x007a\n118 PUSH2 0x015a\n121 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "346 JUMPDEST\n347 PUSH1 0x01\n349 SLOAD\n350 DUP2\n351 JUMP", "id": "1390", "isExpanded": false, "label": "346 JUMPDEST\n347 PUSH1 0x01\n349 SLOAD\n350 DUP2\n351 JUMP", "size": 150, "truncLabel": "346 JUMPDEST\n347 PUSH1 0x01\n349 SLOAD\n350 DUP2\n351 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "122 JUMPDEST\n123 PUSH1 0x40\n125 MLOAD\n126 DUP1\n127 DUP3\n128 DUP2\n129 MSTORE\n130 PUSH1 0x20\n132 ADD\n133 SWAP2\n134 POP\n135 POP\n136 PUSH1 0x40\n138 MLOAD\n139 DUP1\n140 SWAP2\n141 SUB\n142 SWAP1\n143 RETURN", "id": "1391", "isExpanded": false, "label": "122 JUMPDEST\n123 PUSH1 0x40\n125 MLOAD\n126 DUP1\n127 DUP3\n128 DUP2\n(click to expand +)", "size": 150, "truncLabel": "122 JUMPDEST\n123 PUSH1 0x40\n125 MLOAD\n126 DUP1\n127 DUP3\n128 DUP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "76 DUP1\n77 PUSH4 0x70a08231\n82 EQ\n83 PUSH2 0x00b3\n86 JUMPI", "id": "1392", "isExpanded": false, "label": "76 DUP1\n77 PUSH4 0x70a08231\n82 EQ\n83 PUSH2 0x00b3\n86 JUMPI", "size": 150, "truncLabel": "76 DUP1\n77 PUSH4 0x70a08231\n82 EQ\n83 PUSH2 0x00b3\n86 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "144 JUMPDEST\n145 CALLVALUE\n146 ISZERO\n147 PUSH2 0x009b\n150 JUMPI", "id": "1393", "isExpanded": false, "label": "144 JUMPDEST\n145 CALLVALUE\n146 ISZERO\n147 PUSH2 0x009b\n150 JUMPI", "size": 150, "truncLabel": "144 JUMPDEST\n145 CALLVALUE\n146 ISZERO\n147 PUSH2 0x009b\n150 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "151 PUSH1 0x00\n153 DUP1\n154 REVERT", "id": "1394", "isExpanded": false, "label": "151 PUSH1 0x00\n153 DUP1\n154 REVERT", "size": 150, "truncLabel": "151 PUSH1 0x00\n153 DUP1\n154 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "155 JUMPDEST\n156 PUSH2 0x00b1\n159 PUSH1 0x04\n161 DUP1\n162 DUP1\n163 CALLDATALOAD\n164 SWAP1\n165 PUSH1 0x20\n167 ADD\n168 SWAP1\n169 SWAP2\n170 SWAP1\n171 POP\n172 POP\n173 PUSH2 0x0160\n176 JUMP", "id": "1395", "isExpanded": false, "label": "155 JUMPDEST\n156 PUSH2 0x00b1\n159 PUSH1 0x04\n161 DUP1\n162 DUP1\n163 CALLDATALOAD\n(click to expand +)", "size": 150, "truncLabel": "155 JUMPDEST\n156 PUSH2 0x00b1\n159 PUSH1 0x04\n161 DUP1\n162 DUP1\n163 CALLDATALOAD\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "352 JUMPDEST\n353 DUP1\n354 PUSH1 0x01\n356 DUP2\n357 SWAP1\n358 SSTORE\n359 PUSH1 0x00\n361 DUP1\n362 CALLER\n363 PUSH20 0xffffffff(...)\n384 AND\n385 PUSH20 0xffffffff(...)\n406 AND\n407 DUP2\n408 MSTORE\n409 PUSH1 0x20\n411 ADD\n412 SWAP1\n413 DUP2\n414 MSTORE\n415 PUSH1 0x20\n417 ADD\n418 PUSH1 0x00\n420 SHA3\n421 DUP2\n422 SWAP1\n423 SSTORE", "id": "1396", "isExpanded": false, "label": "352 JUMPDEST\n353 DUP1\n354 PUSH1 0x01\n356 DUP2\n357 SWAP1\n358 SSTORE\n(click to expand +)", "size": 150, "truncLabel": "352 JUMPDEST\n353 DUP1\n354 PUSH1 0x01\n356 DUP2\n357 SWAP1\n358 SSTORE\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "424 POP\n425 POP\n426 JUMP", "id": "1397", "isExpanded": false, "label": "424 POP\n425 POP\n426 JUMP", "size": 150, "truncLabel": "424 POP\n425 POP\n426 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "424 POP\n425 POP\n426 JUMP", "id": "1398", "isExpanded": false, "label": "424 POP\n425 POP\n426 JUMP", "size": 150, "truncLabel": "424 POP\n425 POP\n426 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "424 POP\n425 POP\n426 JUMP", "id": "1399", "isExpanded": false, "label": "424 POP\n425 POP\n426 JUMP", "size": 150, "truncLabel": "424 POP\n425 POP\n426 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "177 JUMPDEST\n178 STOP", "id": "1400", "isExpanded": false, "label": "177 JUMPDEST\n178 STOP", "size": 150, "truncLabel": "177 JUMPDEST\n178 STOP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "177 JUMPDEST\n178 STOP", "id": "1401", "isExpanded": false, "label": "177 JUMPDEST\n178 STOP", "size": 150, "truncLabel": "177 JUMPDEST\n178 STOP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "177 JUMPDEST\n178 STOP", "id": "1402", "isExpanded": false, "label": "177 JUMPDEST\n178 STOP", "size": 150, "truncLabel": "177 JUMPDEST\n178 STOP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "87 DUP1\n88 PUSH4 0xa3210e87\n93 EQ\n94 PUSH2 0x0100\n97 JUMPI", "id": "1403", "isExpanded": false, "label": "87 DUP1\n88 PUSH4 0xa3210e87\n93 EQ\n94 PUSH2 0x0100\n97 JUMPI", "size": 150, "truncLabel": "87 DUP1\n88 PUSH4 0xa3210e87\n93 EQ\n94 PUSH2 0x0100\n97 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "179 JUMPDEST\n180 CALLVALUE\n181 ISZERO\n182 PUSH2 0x00be\n185 JUMPI", "id": "1404", "isExpanded": false, "label": "179 JUMPDEST\n180 CALLVALUE\n181 ISZERO\n182 PUSH2 0x00be\n185 JUMPI", "size": 150, "truncLabel": "179 JUMPDEST\n180 CALLVALUE\n181 ISZERO\n182 PUSH2 0x00be\n185 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "186 PUSH1 0x00\n188 DUP1\n189 REVERT", "id": "1405", "isExpanded": false, "label": "186 PUSH1 0x00\n188 DUP1\n189 REVERT", "size": 150, "truncLabel": "186 PUSH1 0x00\n188 DUP1\n189 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "190 JUMPDEST\n191 PUSH2 0x00ea\n194 PUSH1 0x04\n196 DUP1\n197 DUP1\n198 CALLDATALOAD\n199 PUSH20 0xffffffff(...)\n220 AND\n221 SWAP1\n222 PUSH1 0x20\n224 ADD\n225 SWAP1\n226 SWAP2\n227 SWAP1\n228 POP\n229 POP\n230 PUSH2 0x01ab\n233 JUMP", "id": "1406", "isExpanded": false, "label": "190 JUMPDEST\n191 PUSH2 0x00ea\n194 PUSH1 0x04\n196 DUP1\n197 DUP1\n198 CALLDATALOAD\n(click to expand +)", "size": 150, "truncLabel": "190 JUMPDEST\n191 PUSH2 0x00ea\n194 PUSH1 0x04\n196 DUP1\n197 DUP1\n198 CALLDATALOAD\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "427 JUMPDEST\n428 PUSH1 0x00\n430 DUP1\n431 PUSH1 0x00\n433 DUP4\n434 PUSH20 0xffffffff(...)\n455 AND\n456 PUSH20 0xffffffff(...)\n477 AND\n478 DUP2\n479 MSTORE\n480 PUSH1 0x20\n482 ADD\n483 SWAP1\n484 DUP2\n485 MSTORE\n486 PUSH1 0x20\n488 ADD\n489 PUSH1 0x00\n491 SHA3\n492 SLOAD", "id": "1407", "isExpanded": false, "label": "427 JUMPDEST\n428 PUSH1 0x00\n430 DUP1\n431 PUSH1 0x00\n433 DUP4\n434 PUSH20 0xffffffff(...)\n(click to expand +)", "size": 150, "truncLabel": "427 JUMPDEST\n428 PUSH1 0x00\n430 DUP1\n431 PUSH1 0x00\n433 DUP4\n434 PUSH20 0xffffffff(...)\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "493 SWAP1\n494 POP\n495 SWAP2\n496 SWAP1\n497 POP\n498 JUMP", "id": "1408", "isExpanded": false, "label": "493 SWAP1\n494 POP\n495 SWAP2\n496 SWAP1\n497 POP\n498 JUMP", "size": 150, "truncLabel": "493 SWAP1\n494 POP\n495 SWAP2\n496 SWAP1\n497 POP\n498 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "493 SWAP1\n494 POP\n495 SWAP2\n496 SWAP1\n497 POP\n498 JUMP", "id": "1409", "isExpanded": false, "label": "493 SWAP1\n494 POP\n495 SWAP2\n496 SWAP1\n497 POP\n498 JUMP", "size": 150, "truncLabel": "493 SWAP1\n494 POP\n495 SWAP2\n496 SWAP1\n497 POP\n498 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "234 JUMPDEST\n235 PUSH1 0x40\n237 MLOAD\n238 DUP1\n239 DUP3\n240 DUP2\n241 MSTORE\n242 PUSH1 0x20\n244 ADD\n245 SWAP2\n246 POP\n247 POP\n248 PUSH1 0x40\n250 MLOAD\n251 DUP1\n252 SWAP2\n253 SUB\n254 SWAP1\n255 RETURN", "id": "1410", "isExpanded": false, "label": "234 JUMPDEST\n235 PUSH1 0x40\n237 MLOAD\n238 DUP1\n239 DUP3\n240 DUP2\n(click to expand +)", "size": 150, "truncLabel": "234 JUMPDEST\n235 PUSH1 0x40\n237 MLOAD\n238 DUP1\n239 DUP3\n240 DUP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "234 JUMPDEST\n235 PUSH1 0x40\n237 MLOAD\n238 DUP1\n239 DUP3\n240 DUP2\n241 MSTORE\n242 PUSH1 0x20\n244 ADD\n245 SWAP2\n246 POP\n247 POP\n248 PUSH1 0x40\n250 MLOAD\n251 DUP1\n252 SWAP2\n253 SUB\n254 SWAP1\n255 RETURN", "id": "1411", "isExpanded": false, "label": "234 JUMPDEST\n235 PUSH1 0x40\n237 MLOAD\n238 DUP1\n239 DUP3\n240 DUP2\n(click to expand +)", "size": 150, "truncLabel": "234 JUMPDEST\n235 PUSH1 0x40\n237 MLOAD\n238 DUP1\n239 DUP3\n240 DUP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "98 JUMPDEST\n99 PUSH1 0x00\n101 DUP1\n102 REVERT", "id": "1412", "isExpanded": false, "label": "98 JUMPDEST\n99 PUSH1 0x00\n101 DUP1\n102 REVERT", "size": 150, "truncLabel": "98 JUMPDEST\n99 PUSH1 0x00\n101 DUP1\n102 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "256 JUMPDEST\n257 CALLVALUE\n258 ISZERO\n259 PUSH2 0x010b\n262 JUMPI", "id": "1413", "isExpanded": false, "label": "256 JUMPDEST\n257 CALLVALUE\n258 ISZERO\n259 PUSH2 0x010b\n262 JUMPI", "size": 150, "truncLabel": "256 JUMPDEST\n257 CALLVALUE\n258 ISZERO\n259 PUSH2 0x010b\n262 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "263 PUSH1 0x00\n265 DUP1\n266 REVERT", "id": "1414", "isExpanded": false, "label": "263 PUSH1 0x00\n265 DUP1\n266 REVERT", "size": 150, "truncLabel": "263 PUSH1 0x00\n265 DUP1\n266 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "267 JUMPDEST\n268 PUSH2 0x0140\n271 PUSH1 0x04\n273 DUP1\n274 DUP1\n275 CALLDATALOAD\n276 PUSH20 0xffffffff(...)\n297 AND\n298 SWAP1\n299 PUSH1 0x20\n301 ADD\n302 SWAP1\n303 SWAP2\n304 SWAP1\n305 DUP1\n306 CALLDATALOAD\n307 SWAP1\n308 PUSH1 0x20\n310 ADD\n311 SWAP1\n312 SWAP2\n313 SWAP1\n314 POP\n315 POP\n316 PUSH2 0x01f3\n319 JUMP", "id": "1415", "isExpanded": false, "label": "267 JUMPDEST\n268 PUSH2 0x0140\n271 PUSH1 0x04\n273 DUP1\n274 DUP1\n275 CALLDATALOAD\n(click to expand +)", "size": 150, "truncLabel": "267 JUMPDEST\n268 PUSH2 0x0140\n271 PUSH1 0x04\n273 DUP1\n274 DUP1\n275 CALLDATALOAD\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "499 JUMPDEST\n500 PUSH1 0x00\n502 DUP1\n503 DUP3\n504 PUSH1 0x00\n506 DUP1\n507 CALLER\n508 PUSH20 0xffffffff(...)\n529 AND\n530 PUSH20 0xffffffff(...)\n551 AND\n552 DUP2\n553 MSTORE\n554 PUSH1 0x20\n556 ADD\n557 SWAP1\n558 DUP2\n559 MSTORE\n560 PUSH1 0x20\n562 ADD\n563 PUSH1 0x00\n565 SHA3\n566 SLOAD", "id": "1416", "isExpanded": false, "label": "499 JUMPDEST\n500 PUSH1 0x00\n502 DUP1\n503 DUP3\n504 PUSH1 0x00\n506 DUP1\n(click to expand +)", "size": 150, "truncLabel": "499 JUMPDEST\n500 PUSH1 0x00\n502 DUP1\n503 DUP3\n504 PUSH1 0x00\n506 DUP1\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "567 SUB\n568 LT\n569 ISZERO\n570 ISZERO\n571 ISZERO\n572 PUSH2 0x0244\n575 JUMPI", "id": "1417", "isExpanded": false, "label": "567 SUB\n568 LT\n569 ISZERO\n570 ISZERO\n571 ISZERO\n572 PUSH2 0x0244\n(click to expand +)", "size": 150, "truncLabel": "567 SUB\n568 LT\n569 ISZERO\n570 ISZERO\n571 ISZERO\n572 PUSH2 0x0244\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "567 SUB\n568 LT\n569 ISZERO\n570 ISZERO\n571 ISZERO\n572 PUSH2 0x0244\n575 JUMPI", "id": "1418", "isExpanded": false, "label": "567 SUB\n568 LT\n569 ISZERO\n570 ISZERO\n571 ISZERO\n572 PUSH2 0x0244\n(click to expand +)", "size": 150, "truncLabel": "567 SUB\n568 LT\n569 ISZERO\n570 ISZERO\n571 ISZERO\n572 PUSH2 0x0244\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "580 JUMPDEST\n581 DUP2\n582 PUSH1 0x00\n584 DUP1\n585 CALLER\n586 PUSH20 0xffffffff(...)\n607 AND\n608 PUSH20 0xffffffff(...)\n629 AND\n630 DUP2\n631 MSTORE\n632 PUSH1 0x20\n634 ADD\n635 SWAP1\n636 DUP2\n637 MSTORE\n638 PUSH1 0x20\n640 ADD\n641 PUSH1 0x00\n643 SHA3\n644 PUSH1 0x00\n646 DUP3\n647 DUP3\n648 SLOAD\n649 SUB\n650 SWAP3\n651 POP\n652 POP\n653 DUP2\n654 SWAP1\n655 SSTORE", "id": "1419", "isExpanded": false, "label": "580 JUMPDEST\n581 DUP2\n582 PUSH1 0x00\n584 DUP1\n585 CALLER\n586 PUSH20 0xffffffff(...)\n(click to expand +)", "size": 150, "truncLabel": "580 JUMPDEST\n581 DUP2\n582 PUSH1 0x00\n584 DUP1\n585 CALLER\n586 PUSH20 0xffffffff(...)\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n683 AND\n684 PUSH20 0xffffffff(...)\n705 AND\n706 DUP2\n707 MSTORE\n708 PUSH1 0x20\n710 ADD\n711 SWAP1\n712 DUP2\n713 MSTORE\n714 PUSH1 0x20\n716 ADD\n717 PUSH1 0x00\n719 SHA3\n720 PUSH1 0x00\n722 DUP3\n723 DUP3\n724 SLOAD", "id": "1420", "isExpanded": false, "label": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n(click to expand +)", "size": 150, "truncLabel": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n683 AND\n684 PUSH20 0xffffffff(...)\n705 AND\n706 DUP2\n707 MSTORE\n708 PUSH1 0x20\n710 ADD\n711 SWAP1\n712 DUP2\n713 MSTORE\n714 PUSH1 0x20\n716 ADD\n717 PUSH1 0x00\n719 SHA3\n720 PUSH1 0x00\n722 DUP3\n723 DUP3\n724 SLOAD", "id": "1421", "isExpanded": false, "label": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n(click to expand +)", "size": 150, "truncLabel": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n683 AND\n684 PUSH20 0xffffffff(...)\n705 AND\n706 DUP2\n707 MSTORE\n708 PUSH1 0x20\n710 ADD\n711 SWAP1\n712 DUP2\n713 MSTORE\n714 PUSH1 0x20\n716 ADD\n717 PUSH1 0x00\n719 SHA3\n720 PUSH1 0x00\n722 DUP3\n723 DUP3\n724 SLOAD", "id": "1422", "isExpanded": false, "label": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n(click to expand +)", "size": 150, "truncLabel": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n731 SSTORE", "id": "1423", "isExpanded": false, "label": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)", "size": 150, "truncLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n731 SSTORE", "id": "1424", "isExpanded": false, "label": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)", "size": 150, "truncLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n731 SSTORE", "id": "1425", "isExpanded": false, "label": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)", "size": 150, "truncLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1426", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1427", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1428", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1429", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1430", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1431", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1432", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1433", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1434", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1435", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1436", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1437", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1438", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1439", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1440", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1441", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1442", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1443", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1444", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1445", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1446", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1447", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1448", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1449", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n731 SSTORE", "id": "1450", "isExpanded": false, "label": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)", "size": 150, "truncLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n731 SSTORE", "id": "1451", "isExpanded": false, "label": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)", "size": 150, "truncLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1452", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1453", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1454", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1455", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1456", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1457", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1458", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1459", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1460", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1461", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1462", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1463", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n731 SSTORE", "id": "1464", "isExpanded": false, "label": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)", "size": 150, "truncLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n731 SSTORE", "id": "1465", "isExpanded": false, "label": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)", "size": 150, "truncLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1466", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1467", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1468", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1469", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1470", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1471", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1472", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1473", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1474", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1475", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1476", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1477", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "580 JUMPDEST\n581 DUP2\n582 PUSH1 0x00\n584 DUP1\n585 CALLER\n586 PUSH20 0xffffffff(...)\n607 AND\n608 PUSH20 0xffffffff(...)\n629 AND\n630 DUP2\n631 MSTORE\n632 PUSH1 0x20\n634 ADD\n635 SWAP1\n636 DUP2\n637 MSTORE\n638 PUSH1 0x20\n640 ADD\n641 PUSH1 0x00\n643 SHA3\n644 PUSH1 0x00\n646 DUP3\n647 DUP3\n648 SLOAD\n649 SUB\n650 SWAP3\n651 POP\n652 POP\n653 DUP2\n654 SWAP1\n655 SSTORE", "id": "1478", "isExpanded": false, "label": "580 JUMPDEST\n581 DUP2\n582 PUSH1 0x00\n584 DUP1\n585 CALLER\n586 PUSH20 0xffffffff(...)\n(click to expand +)", "size": 150, "truncLabel": "580 JUMPDEST\n581 DUP2\n582 PUSH1 0x00\n584 DUP1\n585 CALLER\n586 PUSH20 0xffffffff(...)\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n683 AND\n684 PUSH20 0xffffffff(...)\n705 AND\n706 DUP2\n707 MSTORE\n708 PUSH1 0x20\n710 ADD\n711 SWAP1\n712 DUP2\n713 MSTORE\n714 PUSH1 0x20\n716 ADD\n717 PUSH1 0x00\n719 SHA3\n720 PUSH1 0x00\n722 DUP3\n723 DUP3\n724 SLOAD", "id": "1479", "isExpanded": false, "label": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n(click to expand +)", "size": 150, "truncLabel": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n683 AND\n684 PUSH20 0xffffffff(...)\n705 AND\n706 DUP2\n707 MSTORE\n708 PUSH1 0x20\n710 ADD\n711 SWAP1\n712 DUP2\n713 MSTORE\n714 PUSH1 0x20\n716 ADD\n717 PUSH1 0x00\n719 SHA3\n720 PUSH1 0x00\n722 DUP3\n723 DUP3\n724 SLOAD", "id": "1480", "isExpanded": false, "label": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n(click to expand +)", "size": 150, "truncLabel": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n683 AND\n684 PUSH20 0xffffffff(...)\n705 AND\n706 DUP2\n707 MSTORE\n708 PUSH1 0x20\n710 ADD\n711 SWAP1\n712 DUP2\n713 MSTORE\n714 PUSH1 0x20\n716 ADD\n717 PUSH1 0x00\n719 SHA3\n720 PUSH1 0x00\n722 DUP3\n723 DUP3\n724 SLOAD", "id": "1481", "isExpanded": false, "label": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n(click to expand +)", "size": 150, "truncLabel": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n731 SSTORE", "id": "1482", "isExpanded": false, "label": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)", "size": 150, "truncLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n731 SSTORE", "id": "1483", "isExpanded": false, "label": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)", "size": 150, "truncLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n731 SSTORE", "id": "1484", "isExpanded": false, "label": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)", "size": 150, "truncLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1485", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1486", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1487", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1488", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1489", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1490", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1491", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1492", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1493", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1494", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1495", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1496", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1497", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1498", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1499", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1500", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1501", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1502", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1503", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1504", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1505", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1506", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1507", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1508", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n731 SSTORE", "id": "1509", "isExpanded": false, "label": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)", "size": 150, "truncLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n731 SSTORE", "id": "1510", "isExpanded": false, "label": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)", "size": 150, "truncLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1511", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1512", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1513", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1514", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1515", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1516", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1517", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1518", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1519", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1520", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1521", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1522", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n731 SSTORE", "id": "1523", "isExpanded": false, "label": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)", "size": 150, "truncLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n731 SSTORE", "id": "1524", "isExpanded": false, "label": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)", "size": 150, "truncLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1525", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1526", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1527", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1528", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1529", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1530", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1531", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1532", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1533", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1534", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1535", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1536", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x01000000(...)\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n53 AND\n54 DUP1\n55 PUSH4 0x18160ddd\n60 EQ\n61 PUSH2 0x0067\n64 JUMPI", "id": "1537", "isExpanded": false, "label": "13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x01000000(...)\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n(click to expand +)", "size": 150, "truncLabel": "13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x01000000(...)\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "98 JUMPDEST\n99 PUSH1 0x00\n101 DUP1\n102 REVERT", "id": "1538", "isExpanded": false, "label": "98 JUMPDEST\n99 PUSH1 0x00\n101 DUP1\n102 REVERT", "size": 150, "truncLabel": "98 JUMPDEST\n99 PUSH1 0x00\n101 DUP1\n102 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "65 DUP1\n66 PUSH4 0x6241bfd1\n71 EQ\n72 PUSH2 0x0090\n75 JUMPI", "id": "1539", "isExpanded": false, "label": "65 DUP1\n66 PUSH4 0x6241bfd1\n71 EQ\n72 PUSH2 0x0090\n75 JUMPI", "size": 150, "truncLabel": "65 DUP1\n66 PUSH4 0x6241bfd1\n71 EQ\n72 PUSH2 0x0090\n75 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "103 JUMPDEST\n104 CALLVALUE\n105 ISZERO\n106 PUSH2 0x0072\n109 JUMPI", "id": "1540", "isExpanded": false, "label": "103 JUMPDEST\n104 CALLVALUE\n105 ISZERO\n106 PUSH2 0x0072\n109 JUMPI", "size": 150, "truncLabel": "103 JUMPDEST\n104 CALLVALUE\n105 ISZERO\n106 PUSH2 0x0072\n109 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "110 PUSH1 0x00\n112 DUP1\n113 REVERT", "id": "1541", "isExpanded": false, "label": "110 PUSH1 0x00\n112 DUP1\n113 REVERT", "size": 150, "truncLabel": "110 PUSH1 0x00\n112 DUP1\n113 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "114 JUMPDEST\n115 PUSH2 0x007a\n118 PUSH2 0x015a\n121 JUMP", "id": "1542", "isExpanded": false, "label": "114 JUMPDEST\n115 PUSH2 0x007a\n118 PUSH2 0x015a\n121 JUMP", "size": 150, "truncLabel": "114 JUMPDEST\n115 PUSH2 0x007a\n118 PUSH2 0x015a\n121 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "346 JUMPDEST\n347 PUSH1 0x01\n349 SLOAD\n350 DUP2\n351 JUMP", "id": "1543", "isExpanded": false, "label": "346 JUMPDEST\n347 PUSH1 0x01\n349 SLOAD\n350 DUP2\n351 JUMP", "size": 150, "truncLabel": "346 JUMPDEST\n347 PUSH1 0x01\n349 SLOAD\n350 DUP2\n351 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "122 JUMPDEST\n123 PUSH1 0x40\n125 MLOAD\n126 DUP1\n127 DUP3\n128 DUP2\n129 MSTORE\n130 PUSH1 0x20\n132 ADD\n133 SWAP2\n134 POP\n135 POP\n136 PUSH1 0x40\n138 MLOAD\n139 DUP1\n140 SWAP2\n141 SUB\n142 SWAP1\n143 RETURN", "id": "1544", "isExpanded": false, "label": "122 JUMPDEST\n123 PUSH1 0x40\n125 MLOAD\n126 DUP1\n127 DUP3\n128 DUP2\n(click to expand +)", "size": 150, "truncLabel": "122 JUMPDEST\n123 PUSH1 0x40\n125 MLOAD\n126 DUP1\n127 DUP3\n128 DUP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "76 DUP1\n77 PUSH4 0x70a08231\n82 EQ\n83 PUSH2 0x00b3\n86 JUMPI", "id": "1545", "isExpanded": false, "label": "76 DUP1\n77 PUSH4 0x70a08231\n82 EQ\n83 PUSH2 0x00b3\n86 JUMPI", "size": 150, "truncLabel": "76 DUP1\n77 PUSH4 0x70a08231\n82 EQ\n83 PUSH2 0x00b3\n86 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "144 JUMPDEST\n145 CALLVALUE\n146 ISZERO\n147 PUSH2 0x009b\n150 JUMPI", "id": "1546", "isExpanded": false, "label": "144 JUMPDEST\n145 CALLVALUE\n146 ISZERO\n147 PUSH2 0x009b\n150 JUMPI", "size": 150, "truncLabel": "144 JUMPDEST\n145 CALLVALUE\n146 ISZERO\n147 PUSH2 0x009b\n150 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "151 PUSH1 0x00\n153 DUP1\n154 REVERT", "id": "1547", "isExpanded": false, "label": "151 PUSH1 0x00\n153 DUP1\n154 REVERT", "size": 150, "truncLabel": "151 PUSH1 0x00\n153 DUP1\n154 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "155 JUMPDEST\n156 PUSH2 0x00b1\n159 PUSH1 0x04\n161 DUP1\n162 DUP1\n163 CALLDATALOAD\n164 SWAP1\n165 PUSH1 0x20\n167 ADD\n168 SWAP1\n169 SWAP2\n170 SWAP1\n171 POP\n172 POP\n173 PUSH2 0x0160\n176 JUMP", "id": "1548", "isExpanded": false, "label": "155 JUMPDEST\n156 PUSH2 0x00b1\n159 PUSH1 0x04\n161 DUP1\n162 DUP1\n163 CALLDATALOAD\n(click to expand +)", "size": 150, "truncLabel": "155 JUMPDEST\n156 PUSH2 0x00b1\n159 PUSH1 0x04\n161 DUP1\n162 DUP1\n163 CALLDATALOAD\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "352 JUMPDEST\n353 DUP1\n354 PUSH1 0x01\n356 DUP2\n357 SWAP1\n358 SSTORE\n359 PUSH1 0x00\n361 DUP1\n362 CALLER\n363 PUSH20 0xffffffff(...)\n384 AND\n385 PUSH20 0xffffffff(...)\n406 AND\n407 DUP2\n408 MSTORE\n409 PUSH1 0x20\n411 ADD\n412 SWAP1\n413 DUP2\n414 MSTORE\n415 PUSH1 0x20\n417 ADD\n418 PUSH1 0x00\n420 SHA3\n421 DUP2\n422 SWAP1\n423 SSTORE", "id": "1549", "isExpanded": false, "label": "352 JUMPDEST\n353 DUP1\n354 PUSH1 0x01\n356 DUP2\n357 SWAP1\n358 SSTORE\n(click to expand +)", "size": 150, "truncLabel": "352 JUMPDEST\n353 DUP1\n354 PUSH1 0x01\n356 DUP2\n357 SWAP1\n358 SSTORE\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "424 POP\n425 POP\n426 JUMP", "id": "1550", "isExpanded": false, "label": "424 POP\n425 POP\n426 JUMP", "size": 150, "truncLabel": "424 POP\n425 POP\n426 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "424 POP\n425 POP\n426 JUMP", "id": "1551", "isExpanded": false, "label": "424 POP\n425 POP\n426 JUMP", "size": 150, "truncLabel": "424 POP\n425 POP\n426 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "177 JUMPDEST\n178 STOP", "id": "1552", "isExpanded": false, "label": "177 JUMPDEST\n178 STOP", "size": 150, "truncLabel": "177 JUMPDEST\n178 STOP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "177 JUMPDEST\n178 STOP", "id": "1553", "isExpanded": false, "label": "177 JUMPDEST\n178 STOP", "size": 150, "truncLabel": "177 JUMPDEST\n178 STOP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "87 DUP1\n88 PUSH4 0xa3210e87\n93 EQ\n94 PUSH2 0x0100\n97 JUMPI", "id": "1554", "isExpanded": false, "label": "87 DUP1\n88 PUSH4 0xa3210e87\n93 EQ\n94 PUSH2 0x0100\n97 JUMPI", "size": 150, "truncLabel": "87 DUP1\n88 PUSH4 0xa3210e87\n93 EQ\n94 PUSH2 0x0100\n97 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "179 JUMPDEST\n180 CALLVALUE\n181 ISZERO\n182 PUSH2 0x00be\n185 JUMPI", "id": "1555", "isExpanded": false, "label": "179 JUMPDEST\n180 CALLVALUE\n181 ISZERO\n182 PUSH2 0x00be\n185 JUMPI", "size": 150, "truncLabel": "179 JUMPDEST\n180 CALLVALUE\n181 ISZERO\n182 PUSH2 0x00be\n185 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "186 PUSH1 0x00\n188 DUP1\n189 REVERT", "id": "1556", "isExpanded": false, "label": "186 PUSH1 0x00\n188 DUP1\n189 REVERT", "size": 150, "truncLabel": "186 PUSH1 0x00\n188 DUP1\n189 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "190 JUMPDEST\n191 PUSH2 0x00ea\n194 PUSH1 0x04\n196 DUP1\n197 DUP1\n198 CALLDATALOAD\n199 PUSH20 0xffffffff(...)\n220 AND\n221 SWAP1\n222 PUSH1 0x20\n224 ADD\n225 SWAP1\n226 SWAP2\n227 SWAP1\n228 POP\n229 POP\n230 PUSH2 0x01ab\n233 JUMP", "id": "1557", "isExpanded": false, "label": "190 JUMPDEST\n191 PUSH2 0x00ea\n194 PUSH1 0x04\n196 DUP1\n197 DUP1\n198 CALLDATALOAD\n(click to expand +)", "size": 150, "truncLabel": "190 JUMPDEST\n191 PUSH2 0x00ea\n194 PUSH1 0x04\n196 DUP1\n197 DUP1\n198 CALLDATALOAD\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "427 JUMPDEST\n428 PUSH1 0x00\n430 DUP1\n431 PUSH1 0x00\n433 DUP4\n434 PUSH20 0xffffffff(...)\n455 AND\n456 PUSH20 0xffffffff(...)\n477 AND\n478 DUP2\n479 MSTORE\n480 PUSH1 0x20\n482 ADD\n483 SWAP1\n484 DUP2\n485 MSTORE\n486 PUSH1 0x20\n488 ADD\n489 PUSH1 0x00\n491 SHA3\n492 SLOAD\n493 SWAP1\n494 POP\n495 SWAP2\n496 SWAP1\n497 POP\n498 JUMP", "id": "1558", "isExpanded": false, "label": "427 JUMPDEST\n428 PUSH1 0x00\n430 DUP1\n431 PUSH1 0x00\n433 DUP4\n434 PUSH20 0xffffffff(...)\n(click to expand +)", "size": 150, "truncLabel": "427 JUMPDEST\n428 PUSH1 0x00\n430 DUP1\n431 PUSH1 0x00\n433 DUP4\n434 PUSH20 0xffffffff(...)\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "234 JUMPDEST\n235 PUSH1 0x40\n237 MLOAD\n238 DUP1\n239 DUP3\n240 DUP2\n241 MSTORE\n242 PUSH1 0x20\n244 ADD\n245 SWAP2\n246 POP\n247 POP\n248 PUSH1 0x40\n250 MLOAD\n251 DUP1\n252 SWAP2\n253 SUB\n254 SWAP1\n255 RETURN", "id": "1559", "isExpanded": false, "label": "234 JUMPDEST\n235 PUSH1 0x40\n237 MLOAD\n238 DUP1\n239 DUP3\n240 DUP2\n(click to expand +)", "size": 150, "truncLabel": "234 JUMPDEST\n235 PUSH1 0x40\n237 MLOAD\n238 DUP1\n239 DUP3\n240 DUP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "98 JUMPDEST\n99 PUSH1 0x00\n101 DUP1\n102 REVERT", "id": "1560", "isExpanded": false, "label": "98 JUMPDEST\n99 PUSH1 0x00\n101 DUP1\n102 REVERT", "size": 150, "truncLabel": "98 JUMPDEST\n99 PUSH1 0x00\n101 DUP1\n102 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "256 JUMPDEST\n257 CALLVALUE\n258 ISZERO\n259 PUSH2 0x010b\n262 JUMPI", "id": "1561", "isExpanded": false, "label": "256 JUMPDEST\n257 CALLVALUE\n258 ISZERO\n259 PUSH2 0x010b\n262 JUMPI", "size": 150, "truncLabel": "256 JUMPDEST\n257 CALLVALUE\n258 ISZERO\n259 PUSH2 0x010b\n262 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "263 PUSH1 0x00\n265 DUP1\n266 REVERT", "id": "1562", "isExpanded": false, "label": "263 PUSH1 0x00\n265 DUP1\n266 REVERT", "size": 150, "truncLabel": "263 PUSH1 0x00\n265 DUP1\n266 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "267 JUMPDEST\n268 PUSH2 0x0140\n271 PUSH1 0x04\n273 DUP1\n274 DUP1\n275 CALLDATALOAD\n276 PUSH20 0xffffffff(...)\n297 AND\n298 SWAP1\n299 PUSH1 0x20\n301 ADD\n302 SWAP1\n303 SWAP2\n304 SWAP1\n305 DUP1\n306 CALLDATALOAD\n307 SWAP1\n308 PUSH1 0x20\n310 ADD\n311 SWAP1\n312 SWAP2\n313 SWAP1\n314 POP\n315 POP\n316 PUSH2 0x01f3\n319 JUMP", "id": "1563", "isExpanded": false, "label": "267 JUMPDEST\n268 PUSH2 0x0140\n271 PUSH1 0x04\n273 DUP1\n274 DUP1\n275 CALLDATALOAD\n(click to expand +)", "size": 150, "truncLabel": "267 JUMPDEST\n268 PUSH2 0x0140\n271 PUSH1 0x04\n273 DUP1\n274 DUP1\n275 CALLDATALOAD\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "499 JUMPDEST\n500 PUSH1 0x00\n502 DUP1\n503 DUP3\n504 PUSH1 0x00\n506 DUP1\n507 CALLER\n508 PUSH20 0xffffffff(...)\n529 AND\n530 PUSH20 0xffffffff(...)\n551 AND\n552 DUP2\n553 MSTORE\n554 PUSH1 0x20\n556 ADD\n557 SWAP1\n558 DUP2\n559 MSTORE\n560 PUSH1 0x20\n562 ADD\n563 PUSH1 0x00\n565 SHA3\n566 SLOAD\n567 SUB\n568 LT\n569 ISZERO\n570 ISZERO\n571 ISZERO\n572 PUSH2 0x0244\n575 JUMPI", "id": "1564", "isExpanded": false, "label": "499 JUMPDEST\n500 PUSH1 0x00\n502 DUP1\n503 DUP3\n504 PUSH1 0x00\n506 DUP1\n(click to expand +)", "size": 150, "truncLabel": "499 JUMPDEST\n500 PUSH1 0x00\n502 DUP1\n503 DUP3\n504 PUSH1 0x00\n506 DUP1\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "580 JUMPDEST\n581 DUP2\n582 PUSH1 0x00\n584 DUP1\n585 CALLER\n586 PUSH20 0xffffffff(...)\n607 AND\n608 PUSH20 0xffffffff(...)\n629 AND\n630 DUP2\n631 MSTORE\n632 PUSH1 0x20\n634 ADD\n635 SWAP1\n636 DUP2\n637 MSTORE\n638 PUSH1 0x20\n640 ADD\n641 PUSH1 0x00\n643 SHA3\n644 PUSH1 0x00\n646 DUP3\n647 DUP3\n648 SLOAD\n649 SUB\n650 SWAP3\n651 POP\n652 POP\n653 DUP2\n654 SWAP1\n655 SSTORE", "id": "1565", "isExpanded": false, "label": "580 JUMPDEST\n581 DUP2\n582 PUSH1 0x00\n584 DUP1\n585 CALLER\n586 PUSH20 0xffffffff(...)\n(click to expand +)", "size": 150, "truncLabel": "580 JUMPDEST\n581 DUP2\n582 PUSH1 0x00\n584 DUP1\n585 CALLER\n586 PUSH20 0xffffffff(...)\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n683 AND\n684 PUSH20 0xffffffff(...)\n705 AND\n706 DUP2\n707 MSTORE\n708 PUSH1 0x20\n710 ADD\n711 SWAP1\n712 DUP2\n713 MSTORE\n714 PUSH1 0x20\n716 ADD\n717 PUSH1 0x00\n719 SHA3\n720 PUSH1 0x00\n722 DUP3\n723 DUP3\n724 SLOAD\n725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n731 SSTORE", "id": "1566", "isExpanded": false, "label": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n(click to expand +)", "size": 150, "truncLabel": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n683 AND\n684 PUSH20 0xffffffff(...)\n705 AND\n706 DUP2\n707 MSTORE\n708 PUSH1 0x20\n710 ADD\n711 SWAP1\n712 DUP2\n713 MSTORE\n714 PUSH1 0x20\n716 ADD\n717 PUSH1 0x00\n719 SHA3\n720 PUSH1 0x00\n722 DUP3\n723 DUP3\n724 SLOAD", "id": "1567", "isExpanded": false, "label": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n(click to expand +)", "size": 150, "truncLabel": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n731 SSTORE", "id": "1568", "isExpanded": false, "label": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)", "size": 150, "truncLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n731 SSTORE", "id": "1569", "isExpanded": false, "label": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)", "size": 150, "truncLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1570", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1571", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1572", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1573", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1574", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1575", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1576", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1577", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1578", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1579", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1580", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1581", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1582", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1583", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1584", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1585", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x01000000(...)\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n53 AND\n54 DUP1\n55 PUSH4 0x18160ddd\n60 EQ\n61 PUSH2 0x0067\n64 JUMPI", "id": "1586", "isExpanded": false, "label": "13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x01000000(...)\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n(click to expand +)", "size": 150, "truncLabel": "13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x01000000(...)\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "98 JUMPDEST\n99 PUSH1 0x00\n101 DUP1\n102 REVERT", "id": "1587", "isExpanded": false, "label": "98 JUMPDEST\n99 PUSH1 0x00\n101 DUP1\n102 REVERT", "size": 150, "truncLabel": "98 JUMPDEST\n99 PUSH1 0x00\n101 DUP1\n102 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "65 DUP1\n66 PUSH4 0x6241bfd1\n71 EQ\n72 PUSH2 0x0090\n75 JUMPI", "id": "1588", "isExpanded": false, "label": "65 DUP1\n66 PUSH4 0x6241bfd1\n71 EQ\n72 PUSH2 0x0090\n75 JUMPI", "size": 150, "truncLabel": "65 DUP1\n66 PUSH4 0x6241bfd1\n71 EQ\n72 PUSH2 0x0090\n75 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "103 JUMPDEST\n104 CALLVALUE\n105 ISZERO\n106 PUSH2 0x0072\n109 JUMPI", "id": "1589", "isExpanded": false, "label": "103 JUMPDEST\n104 CALLVALUE\n105 ISZERO\n106 PUSH2 0x0072\n109 JUMPI", "size": 150, "truncLabel": "103 JUMPDEST\n104 CALLVALUE\n105 ISZERO\n106 PUSH2 0x0072\n109 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "110 PUSH1 0x00\n112 DUP1\n113 REVERT", "id": "1590", "isExpanded": false, "label": "110 PUSH1 0x00\n112 DUP1\n113 REVERT", "size": 150, "truncLabel": "110 PUSH1 0x00\n112 DUP1\n113 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "114 JUMPDEST\n115 PUSH2 0x007a\n118 PUSH2 0x015a\n121 JUMP", "id": "1591", "isExpanded": false, "label": "114 JUMPDEST\n115 PUSH2 0x007a\n118 PUSH2 0x015a\n121 JUMP", "size": 150, "truncLabel": "114 JUMPDEST\n115 PUSH2 0x007a\n118 PUSH2 0x015a\n121 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "346 JUMPDEST\n347 PUSH1 0x01\n349 SLOAD\n350 DUP2\n351 JUMP", "id": "1592", "isExpanded": false, "label": "346 JUMPDEST\n347 PUSH1 0x01\n349 SLOAD\n350 DUP2\n351 JUMP", "size": 150, "truncLabel": "346 JUMPDEST\n347 PUSH1 0x01\n349 SLOAD\n350 DUP2\n351 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "122 JUMPDEST\n123 PUSH1 0x40\n125 MLOAD\n126 DUP1\n127 DUP3\n128 DUP2\n129 MSTORE\n130 PUSH1 0x20\n132 ADD\n133 SWAP2\n134 POP\n135 POP\n136 PUSH1 0x40\n138 MLOAD\n139 DUP1\n140 SWAP2\n141 SUB\n142 SWAP1\n143 RETURN", "id": "1593", "isExpanded": false, "label": "122 JUMPDEST\n123 PUSH1 0x40\n125 MLOAD\n126 DUP1\n127 DUP3\n128 DUP2\n(click to expand +)", "size": 150, "truncLabel": "122 JUMPDEST\n123 PUSH1 0x40\n125 MLOAD\n126 DUP1\n127 DUP3\n128 DUP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "76 DUP1\n77 PUSH4 0x70a08231\n82 EQ\n83 PUSH2 0x00b3\n86 JUMPI", "id": "1594", "isExpanded": false, "label": "76 DUP1\n77 PUSH4 0x70a08231\n82 EQ\n83 PUSH2 0x00b3\n86 JUMPI", "size": 150, "truncLabel": "76 DUP1\n77 PUSH4 0x70a08231\n82 EQ\n83 PUSH2 0x00b3\n86 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "144 JUMPDEST\n145 CALLVALUE\n146 ISZERO\n147 PUSH2 0x009b\n150 JUMPI", "id": "1595", "isExpanded": false, "label": "144 JUMPDEST\n145 CALLVALUE\n146 ISZERO\n147 PUSH2 0x009b\n150 JUMPI", "size": 150, "truncLabel": "144 JUMPDEST\n145 CALLVALUE\n146 ISZERO\n147 PUSH2 0x009b\n150 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "151 PUSH1 0x00\n153 DUP1\n154 REVERT", "id": "1596", "isExpanded": false, "label": "151 PUSH1 0x00\n153 DUP1\n154 REVERT", "size": 150, "truncLabel": "151 PUSH1 0x00\n153 DUP1\n154 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "155 JUMPDEST\n156 PUSH2 0x00b1\n159 PUSH1 0x04\n161 DUP1\n162 DUP1\n163 CALLDATALOAD\n164 SWAP1\n165 PUSH1 0x20\n167 ADD\n168 SWAP1\n169 SWAP2\n170 SWAP1\n171 POP\n172 POP\n173 PUSH2 0x0160\n176 JUMP", "id": "1597", "isExpanded": false, "label": "155 JUMPDEST\n156 PUSH2 0x00b1\n159 PUSH1 0x04\n161 DUP1\n162 DUP1\n163 CALLDATALOAD\n(click to expand +)", "size": 150, "truncLabel": "155 JUMPDEST\n156 PUSH2 0x00b1\n159 PUSH1 0x04\n161 DUP1\n162 DUP1\n163 CALLDATALOAD\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "352 JUMPDEST\n353 DUP1\n354 PUSH1 0x01\n356 DUP2\n357 SWAP1\n358 SSTORE\n359 PUSH1 0x00\n361 DUP1\n362 CALLER\n363 PUSH20 0xffffffff(...)\n384 AND\n385 PUSH20 0xffffffff(...)\n406 AND\n407 DUP2\n408 MSTORE\n409 PUSH1 0x20\n411 ADD\n412 SWAP1\n413 DUP2\n414 MSTORE\n415 PUSH1 0x20\n417 ADD\n418 PUSH1 0x00\n420 SHA3\n421 DUP2\n422 SWAP1\n423 SSTORE", "id": "1598", "isExpanded": false, "label": "352 JUMPDEST\n353 DUP1\n354 PUSH1 0x01\n356 DUP2\n357 SWAP1\n358 SSTORE\n(click to expand +)", "size": 150, "truncLabel": "352 JUMPDEST\n353 DUP1\n354 PUSH1 0x01\n356 DUP2\n357 SWAP1\n358 SSTORE\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "424 POP\n425 POP\n426 JUMP", "id": "1599", "isExpanded": false, "label": "424 POP\n425 POP\n426 JUMP", "size": 150, "truncLabel": "424 POP\n425 POP\n426 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "424 POP\n425 POP\n426 JUMP", "id": "1600", "isExpanded": false, "label": "424 POP\n425 POP\n426 JUMP", "size": 150, "truncLabel": "424 POP\n425 POP\n426 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "177 JUMPDEST\n178 STOP", "id": "1601", "isExpanded": false, "label": "177 JUMPDEST\n178 STOP", "size": 150, "truncLabel": "177 JUMPDEST\n178 STOP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "177 JUMPDEST\n178 STOP", "id": "1602", "isExpanded": false, "label": "177 JUMPDEST\n178 STOP", "size": 150, "truncLabel": "177 JUMPDEST\n178 STOP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "87 DUP1\n88 PUSH4 0xa3210e87\n93 EQ\n94 PUSH2 0x0100\n97 JUMPI", "id": "1603", "isExpanded": false, "label": "87 DUP1\n88 PUSH4 0xa3210e87\n93 EQ\n94 PUSH2 0x0100\n97 JUMPI", "size": 150, "truncLabel": "87 DUP1\n88 PUSH4 0xa3210e87\n93 EQ\n94 PUSH2 0x0100\n97 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "179 JUMPDEST\n180 CALLVALUE\n181 ISZERO\n182 PUSH2 0x00be\n185 JUMPI", "id": "1604", "isExpanded": false, "label": "179 JUMPDEST\n180 CALLVALUE\n181 ISZERO\n182 PUSH2 0x00be\n185 JUMPI", "size": 150, "truncLabel": "179 JUMPDEST\n180 CALLVALUE\n181 ISZERO\n182 PUSH2 0x00be\n185 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "186 PUSH1 0x00\n188 DUP1\n189 REVERT", "id": "1605", "isExpanded": false, "label": "186 PUSH1 0x00\n188 DUP1\n189 REVERT", "size": 150, "truncLabel": "186 PUSH1 0x00\n188 DUP1\n189 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "190 JUMPDEST\n191 PUSH2 0x00ea\n194 PUSH1 0x04\n196 DUP1\n197 DUP1\n198 CALLDATALOAD\n199 PUSH20 0xffffffff(...)\n220 AND\n221 SWAP1\n222 PUSH1 0x20\n224 ADD\n225 SWAP1\n226 SWAP2\n227 SWAP1\n228 POP\n229 POP\n230 PUSH2 0x01ab\n233 JUMP", "id": "1606", "isExpanded": false, "label": "190 JUMPDEST\n191 PUSH2 0x00ea\n194 PUSH1 0x04\n196 DUP1\n197 DUP1\n198 CALLDATALOAD\n(click to expand +)", "size": 150, "truncLabel": "190 JUMPDEST\n191 PUSH2 0x00ea\n194 PUSH1 0x04\n196 DUP1\n197 DUP1\n198 CALLDATALOAD\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "427 JUMPDEST\n428 PUSH1 0x00\n430 DUP1\n431 PUSH1 0x00\n433 DUP4\n434 PUSH20 0xffffffff(...)\n455 AND\n456 PUSH20 0xffffffff(...)\n477 AND\n478 DUP2\n479 MSTORE\n480 PUSH1 0x20\n482 ADD\n483 SWAP1\n484 DUP2\n485 MSTORE\n486 PUSH1 0x20\n488 ADD\n489 PUSH1 0x00\n491 SHA3\n492 SLOAD\n493 SWAP1\n494 POP\n495 SWAP2\n496 SWAP1\n497 POP\n498 JUMP", "id": "1607", "isExpanded": false, "label": "427 JUMPDEST\n428 PUSH1 0x00\n430 DUP1\n431 PUSH1 0x00\n433 DUP4\n434 PUSH20 0xffffffff(...)\n(click to expand +)", "size": 150, "truncLabel": "427 JUMPDEST\n428 PUSH1 0x00\n430 DUP1\n431 PUSH1 0x00\n433 DUP4\n434 PUSH20 0xffffffff(...)\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "234 JUMPDEST\n235 PUSH1 0x40\n237 MLOAD\n238 DUP1\n239 DUP3\n240 DUP2\n241 MSTORE\n242 PUSH1 0x20\n244 ADD\n245 SWAP2\n246 POP\n247 POP\n248 PUSH1 0x40\n250 MLOAD\n251 DUP1\n252 SWAP2\n253 SUB\n254 SWAP1\n255 RETURN", "id": "1608", "isExpanded": false, "label": "234 JUMPDEST\n235 PUSH1 0x40\n237 MLOAD\n238 DUP1\n239 DUP3\n240 DUP2\n(click to expand +)", "size": 150, "truncLabel": "234 JUMPDEST\n235 PUSH1 0x40\n237 MLOAD\n238 DUP1\n239 DUP3\n240 DUP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "98 JUMPDEST\n99 PUSH1 0x00\n101 DUP1\n102 REVERT", "id": "1609", "isExpanded": false, "label": "98 JUMPDEST\n99 PUSH1 0x00\n101 DUP1\n102 REVERT", "size": 150, "truncLabel": "98 JUMPDEST\n99 PUSH1 0x00\n101 DUP1\n102 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "256 JUMPDEST\n257 CALLVALUE\n258 ISZERO\n259 PUSH2 0x010b\n262 JUMPI", "id": "1610", "isExpanded": false, "label": "256 JUMPDEST\n257 CALLVALUE\n258 ISZERO\n259 PUSH2 0x010b\n262 JUMPI", "size": 150, "truncLabel": "256 JUMPDEST\n257 CALLVALUE\n258 ISZERO\n259 PUSH2 0x010b\n262 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "263 PUSH1 0x00\n265 DUP1\n266 REVERT", "id": "1611", "isExpanded": false, "label": "263 PUSH1 0x00\n265 DUP1\n266 REVERT", "size": 150, "truncLabel": "263 PUSH1 0x00\n265 DUP1\n266 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "267 JUMPDEST\n268 PUSH2 0x0140\n271 PUSH1 0x04\n273 DUP1\n274 DUP1\n275 CALLDATALOAD\n276 PUSH20 0xffffffff(...)\n297 AND\n298 SWAP1\n299 PUSH1 0x20\n301 ADD\n302 SWAP1\n303 SWAP2\n304 SWAP1\n305 DUP1\n306 CALLDATALOAD\n307 SWAP1\n308 PUSH1 0x20\n310 ADD\n311 SWAP1\n312 SWAP2\n313 SWAP1\n314 POP\n315 POP\n316 PUSH2 0x01f3\n319 JUMP", "id": "1612", "isExpanded": false, "label": "267 JUMPDEST\n268 PUSH2 0x0140\n271 PUSH1 0x04\n273 DUP1\n274 DUP1\n275 CALLDATALOAD\n(click to expand +)", "size": 150, "truncLabel": "267 JUMPDEST\n268 PUSH2 0x0140\n271 PUSH1 0x04\n273 DUP1\n274 DUP1\n275 CALLDATALOAD\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "499 JUMPDEST\n500 PUSH1 0x00\n502 DUP1\n503 DUP3\n504 PUSH1 0x00\n506 DUP1\n507 CALLER\n508 PUSH20 0xffffffff(...)\n529 AND\n530 PUSH20 0xffffffff(...)\n551 AND\n552 DUP2\n553 MSTORE\n554 PUSH1 0x20\n556 ADD\n557 SWAP1\n558 DUP2\n559 MSTORE\n560 PUSH1 0x20\n562 ADD\n563 PUSH1 0x00\n565 SHA3\n566 SLOAD\n567 SUB\n568 LT\n569 ISZERO\n570 ISZERO\n571 ISZERO\n572 PUSH2 0x0244\n575 JUMPI", "id": "1613", "isExpanded": false, "label": "499 JUMPDEST\n500 PUSH1 0x00\n502 DUP1\n503 DUP3\n504 PUSH1 0x00\n506 DUP1\n(click to expand +)", "size": 150, "truncLabel": "499 JUMPDEST\n500 PUSH1 0x00\n502 DUP1\n503 DUP3\n504 PUSH1 0x00\n506 DUP1\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "580 JUMPDEST\n581 DUP2\n582 PUSH1 0x00\n584 DUP1\n585 CALLER\n586 PUSH20 0xffffffff(...)\n607 AND\n608 PUSH20 0xffffffff(...)\n629 AND\n630 DUP2\n631 MSTORE\n632 PUSH1 0x20\n634 ADD\n635 SWAP1\n636 DUP2\n637 MSTORE\n638 PUSH1 0x20\n640 ADD\n641 PUSH1 0x00\n643 SHA3\n644 PUSH1 0x00\n646 DUP3\n647 DUP3\n648 SLOAD\n649 SUB\n650 SWAP3\n651 POP\n652 POP\n653 DUP2\n654 SWAP1\n655 SSTORE", "id": "1614", "isExpanded": false, "label": "580 JUMPDEST\n581 DUP2\n582 PUSH1 0x00\n584 DUP1\n585 CALLER\n586 PUSH20 0xffffffff(...)\n(click to expand +)", "size": 150, "truncLabel": "580 JUMPDEST\n581 DUP2\n582 PUSH1 0x00\n584 DUP1\n585 CALLER\n586 PUSH20 0xffffffff(...)\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n683 AND\n684 PUSH20 0xffffffff(...)\n705 AND\n706 DUP2\n707 MSTORE\n708 PUSH1 0x20\n710 ADD\n711 SWAP1\n712 DUP2\n713 MSTORE\n714 PUSH1 0x20\n716 ADD\n717 PUSH1 0x00\n719 SHA3\n720 PUSH1 0x00\n722 DUP3\n723 DUP3\n724 SLOAD\n725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n731 SSTORE", "id": "1615", "isExpanded": false, "label": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n(click to expand +)", "size": 150, "truncLabel": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n683 AND\n684 PUSH20 0xffffffff(...)\n705 AND\n706 DUP2\n707 MSTORE\n708 PUSH1 0x20\n710 ADD\n711 SWAP1\n712 DUP2\n713 MSTORE\n714 PUSH1 0x20\n716 ADD\n717 PUSH1 0x00\n719 SHA3\n720 PUSH1 0x00\n722 DUP3\n723 DUP3\n724 SLOAD", "id": "1616", "isExpanded": false, "label": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n(click to expand +)", "size": 150, "truncLabel": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n731 SSTORE", "id": "1617", "isExpanded": false, "label": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)", "size": 150, "truncLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n731 SSTORE", "id": "1618", "isExpanded": false, "label": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)", "size": 150, "truncLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1619", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1620", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1621", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1622", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1623", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1624", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1625", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1626", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1627", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1628", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1629", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1630", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1631", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1632", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1633", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1634", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x01000000(...)\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n53 AND\n54 DUP1\n55 PUSH4 0x18160ddd\n60 EQ\n61 PUSH2 0x0067\n64 JUMPI", "id": "1635", "isExpanded": false, "label": "13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x01000000(...)\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n(click to expand +)", "size": 150, "truncLabel": "13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x01000000(...)\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "98 JUMPDEST\n99 PUSH1 0x00\n101 DUP1\n102 REVERT", "id": "1636", "isExpanded": false, "label": "98 JUMPDEST\n99 PUSH1 0x00\n101 DUP1\n102 REVERT", "size": 150, "truncLabel": "98 JUMPDEST\n99 PUSH1 0x00\n101 DUP1\n102 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "65 DUP1\n66 PUSH4 0x6241bfd1\n71 EQ\n72 PUSH2 0x0090\n75 JUMPI", "id": "1637", "isExpanded": false, "label": "65 DUP1\n66 PUSH4 0x6241bfd1\n71 EQ\n72 PUSH2 0x0090\n75 JUMPI", "size": 150, "truncLabel": "65 DUP1\n66 PUSH4 0x6241bfd1\n71 EQ\n72 PUSH2 0x0090\n75 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "103 JUMPDEST\n104 CALLVALUE\n105 ISZERO\n106 PUSH2 0x0072\n109 JUMPI", "id": "1638", "isExpanded": false, "label": "103 JUMPDEST\n104 CALLVALUE\n105 ISZERO\n106 PUSH2 0x0072\n109 JUMPI", "size": 150, "truncLabel": "103 JUMPDEST\n104 CALLVALUE\n105 ISZERO\n106 PUSH2 0x0072\n109 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "110 PUSH1 0x00\n112 DUP1\n113 REVERT", "id": "1639", "isExpanded": false, "label": "110 PUSH1 0x00\n112 DUP1\n113 REVERT", "size": 150, "truncLabel": "110 PUSH1 0x00\n112 DUP1\n113 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "114 JUMPDEST\n115 PUSH2 0x007a\n118 PUSH2 0x015a\n121 JUMP", "id": "1640", "isExpanded": false, "label": "114 JUMPDEST\n115 PUSH2 0x007a\n118 PUSH2 0x015a\n121 JUMP", "size": 150, "truncLabel": "114 JUMPDEST\n115 PUSH2 0x007a\n118 PUSH2 0x015a\n121 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "346 JUMPDEST\n347 PUSH1 0x01\n349 SLOAD\n350 DUP2\n351 JUMP", "id": "1641", "isExpanded": false, "label": "346 JUMPDEST\n347 PUSH1 0x01\n349 SLOAD\n350 DUP2\n351 JUMP", "size": 150, "truncLabel": "346 JUMPDEST\n347 PUSH1 0x01\n349 SLOAD\n350 DUP2\n351 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "122 JUMPDEST\n123 PUSH1 0x40\n125 MLOAD\n126 DUP1\n127 DUP3\n128 DUP2\n129 MSTORE\n130 PUSH1 0x20\n132 ADD\n133 SWAP2\n134 POP\n135 POP\n136 PUSH1 0x40\n138 MLOAD\n139 DUP1\n140 SWAP2\n141 SUB\n142 SWAP1\n143 RETURN", "id": "1642", "isExpanded": false, "label": "122 JUMPDEST\n123 PUSH1 0x40\n125 MLOAD\n126 DUP1\n127 DUP3\n128 DUP2\n(click to expand +)", "size": 150, "truncLabel": "122 JUMPDEST\n123 PUSH1 0x40\n125 MLOAD\n126 DUP1\n127 DUP3\n128 DUP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "76 DUP1\n77 PUSH4 0x70a08231\n82 EQ\n83 PUSH2 0x00b3\n86 JUMPI", "id": "1643", "isExpanded": false, "label": "76 DUP1\n77 PUSH4 0x70a08231\n82 EQ\n83 PUSH2 0x00b3\n86 JUMPI", "size": 150, "truncLabel": "76 DUP1\n77 PUSH4 0x70a08231\n82 EQ\n83 PUSH2 0x00b3\n86 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "144 JUMPDEST\n145 CALLVALUE\n146 ISZERO\n147 PUSH2 0x009b\n150 JUMPI", "id": "1644", "isExpanded": false, "label": "144 JUMPDEST\n145 CALLVALUE\n146 ISZERO\n147 PUSH2 0x009b\n150 JUMPI", "size": 150, "truncLabel": "144 JUMPDEST\n145 CALLVALUE\n146 ISZERO\n147 PUSH2 0x009b\n150 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "151 PUSH1 0x00\n153 DUP1\n154 REVERT", "id": "1645", "isExpanded": false, "label": "151 PUSH1 0x00\n153 DUP1\n154 REVERT", "size": 150, "truncLabel": "151 PUSH1 0x00\n153 DUP1\n154 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "155 JUMPDEST\n156 PUSH2 0x00b1\n159 PUSH1 0x04\n161 DUP1\n162 DUP1\n163 CALLDATALOAD\n164 SWAP1\n165 PUSH1 0x20\n167 ADD\n168 SWAP1\n169 SWAP2\n170 SWAP1\n171 POP\n172 POP\n173 PUSH2 0x0160\n176 JUMP", "id": "1646", "isExpanded": false, "label": "155 JUMPDEST\n156 PUSH2 0x00b1\n159 PUSH1 0x04\n161 DUP1\n162 DUP1\n163 CALLDATALOAD\n(click to expand +)", "size": 150, "truncLabel": "155 JUMPDEST\n156 PUSH2 0x00b1\n159 PUSH1 0x04\n161 DUP1\n162 DUP1\n163 CALLDATALOAD\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "352 JUMPDEST\n353 DUP1\n354 PUSH1 0x01\n356 DUP2\n357 SWAP1\n358 SSTORE\n359 PUSH1 0x00\n361 DUP1\n362 CALLER\n363 PUSH20 0xffffffff(...)\n384 AND\n385 PUSH20 0xffffffff(...)\n406 AND\n407 DUP2\n408 MSTORE\n409 PUSH1 0x20\n411 ADD\n412 SWAP1\n413 DUP2\n414 MSTORE\n415 PUSH1 0x20\n417 ADD\n418 PUSH1 0x00\n420 SHA3\n421 DUP2\n422 SWAP1\n423 SSTORE", "id": "1647", "isExpanded": false, "label": "352 JUMPDEST\n353 DUP1\n354 PUSH1 0x01\n356 DUP2\n357 SWAP1\n358 SSTORE\n(click to expand +)", "size": 150, "truncLabel": "352 JUMPDEST\n353 DUP1\n354 PUSH1 0x01\n356 DUP2\n357 SWAP1\n358 SSTORE\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "424 POP\n425 POP\n426 JUMP", "id": "1648", "isExpanded": false, "label": "424 POP\n425 POP\n426 JUMP", "size": 150, "truncLabel": "424 POP\n425 POP\n426 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "424 POP\n425 POP\n426 JUMP", "id": "1649", "isExpanded": false, "label": "424 POP\n425 POP\n426 JUMP", "size": 150, "truncLabel": "424 POP\n425 POP\n426 JUMP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "177 JUMPDEST\n178 STOP", "id": "1650", "isExpanded": false, "label": "177 JUMPDEST\n178 STOP", "size": 150, "truncLabel": "177 JUMPDEST\n178 STOP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "177 JUMPDEST\n178 STOP", "id": "1651", "isExpanded": false, "label": "177 JUMPDEST\n178 STOP", "size": 150, "truncLabel": "177 JUMPDEST\n178 STOP"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "87 DUP1\n88 PUSH4 0xa3210e87\n93 EQ\n94 PUSH2 0x0100\n97 JUMPI", "id": "1652", "isExpanded": false, "label": "87 DUP1\n88 PUSH4 0xa3210e87\n93 EQ\n94 PUSH2 0x0100\n97 JUMPI", "size": 150, "truncLabel": "87 DUP1\n88 PUSH4 0xa3210e87\n93 EQ\n94 PUSH2 0x0100\n97 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "179 JUMPDEST\n180 CALLVALUE\n181 ISZERO\n182 PUSH2 0x00be\n185 JUMPI", "id": "1653", "isExpanded": false, "label": "179 JUMPDEST\n180 CALLVALUE\n181 ISZERO\n182 PUSH2 0x00be\n185 JUMPI", "size": 150, "truncLabel": "179 JUMPDEST\n180 CALLVALUE\n181 ISZERO\n182 PUSH2 0x00be\n185 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "186 PUSH1 0x00\n188 DUP1\n189 REVERT", "id": "1654", "isExpanded": false, "label": "186 PUSH1 0x00\n188 DUP1\n189 REVERT", "size": 150, "truncLabel": "186 PUSH1 0x00\n188 DUP1\n189 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "190 JUMPDEST\n191 PUSH2 0x00ea\n194 PUSH1 0x04\n196 DUP1\n197 DUP1\n198 CALLDATALOAD\n199 PUSH20 0xffffffff(...)\n220 AND\n221 SWAP1\n222 PUSH1 0x20\n224 ADD\n225 SWAP1\n226 SWAP2\n227 SWAP1\n228 POP\n229 POP\n230 PUSH2 0x01ab\n233 JUMP", "id": "1655", "isExpanded": false, "label": "190 JUMPDEST\n191 PUSH2 0x00ea\n194 PUSH1 0x04\n196 DUP1\n197 DUP1\n198 CALLDATALOAD\n(click to expand +)", "size": 150, "truncLabel": "190 JUMPDEST\n191 PUSH2 0x00ea\n194 PUSH1 0x04\n196 DUP1\n197 DUP1\n198 CALLDATALOAD\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "427 JUMPDEST\n428 PUSH1 0x00\n430 DUP1\n431 PUSH1 0x00\n433 DUP4\n434 PUSH20 0xffffffff(...)\n455 AND\n456 PUSH20 0xffffffff(...)\n477 AND\n478 DUP2\n479 MSTORE\n480 PUSH1 0x20\n482 ADD\n483 SWAP1\n484 DUP2\n485 MSTORE\n486 PUSH1 0x20\n488 ADD\n489 PUSH1 0x00\n491 SHA3\n492 SLOAD\n493 SWAP1\n494 POP\n495 SWAP2\n496 SWAP1\n497 POP\n498 JUMP", "id": "1656", "isExpanded": false, "label": "427 JUMPDEST\n428 PUSH1 0x00\n430 DUP1\n431 PUSH1 0x00\n433 DUP4\n434 PUSH20 0xffffffff(...)\n(click to expand +)", "size": 150, "truncLabel": "427 JUMPDEST\n428 PUSH1 0x00\n430 DUP1\n431 PUSH1 0x00\n433 DUP4\n434 PUSH20 0xffffffff(...)\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "234 JUMPDEST\n235 PUSH1 0x40\n237 MLOAD\n238 DUP1\n239 DUP3\n240 DUP2\n241 MSTORE\n242 PUSH1 0x20\n244 ADD\n245 SWAP2\n246 POP\n247 POP\n248 PUSH1 0x40\n250 MLOAD\n251 DUP1\n252 SWAP2\n253 SUB\n254 SWAP1\n255 RETURN", "id": "1657", "isExpanded": false, "label": "234 JUMPDEST\n235 PUSH1 0x40\n237 MLOAD\n238 DUP1\n239 DUP3\n240 DUP2\n(click to expand +)", "size": 150, "truncLabel": "234 JUMPDEST\n235 PUSH1 0x40\n237 MLOAD\n238 DUP1\n239 DUP3\n240 DUP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "98 JUMPDEST\n99 PUSH1 0x00\n101 DUP1\n102 REVERT", "id": "1658", "isExpanded": false, "label": "98 JUMPDEST\n99 PUSH1 0x00\n101 DUP1\n102 REVERT", "size": 150, "truncLabel": "98 JUMPDEST\n99 PUSH1 0x00\n101 DUP1\n102 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "256 JUMPDEST\n257 CALLVALUE\n258 ISZERO\n259 PUSH2 0x010b\n262 JUMPI", "id": "1659", "isExpanded": false, "label": "256 JUMPDEST\n257 CALLVALUE\n258 ISZERO\n259 PUSH2 0x010b\n262 JUMPI", "size": 150, "truncLabel": "256 JUMPDEST\n257 CALLVALUE\n258 ISZERO\n259 PUSH2 0x010b\n262 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "263 PUSH1 0x00\n265 DUP1\n266 REVERT", "id": "1660", "isExpanded": false, "label": "263 PUSH1 0x00\n265 DUP1\n266 REVERT", "size": 150, "truncLabel": "263 PUSH1 0x00\n265 DUP1\n266 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "267 JUMPDEST\n268 PUSH2 0x0140\n271 PUSH1 0x04\n273 DUP1\n274 DUP1\n275 CALLDATALOAD\n276 PUSH20 0xffffffff(...)\n297 AND\n298 SWAP1\n299 PUSH1 0x20\n301 ADD\n302 SWAP1\n303 SWAP2\n304 SWAP1\n305 DUP1\n306 CALLDATALOAD\n307 SWAP1\n308 PUSH1 0x20\n310 ADD\n311 SWAP1\n312 SWAP2\n313 SWAP1\n314 POP\n315 POP\n316 PUSH2 0x01f3\n319 JUMP", "id": "1661", "isExpanded": false, "label": "267 JUMPDEST\n268 PUSH2 0x0140\n271 PUSH1 0x04\n273 DUP1\n274 DUP1\n275 CALLDATALOAD\n(click to expand +)", "size": 150, "truncLabel": "267 JUMPDEST\n268 PUSH2 0x0140\n271 PUSH1 0x04\n273 DUP1\n274 DUP1\n275 CALLDATALOAD\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "499 JUMPDEST\n500 PUSH1 0x00\n502 DUP1\n503 DUP3\n504 PUSH1 0x00\n506 DUP1\n507 CALLER\n508 PUSH20 0xffffffff(...)\n529 AND\n530 PUSH20 0xffffffff(...)\n551 AND\n552 DUP2\n553 MSTORE\n554 PUSH1 0x20\n556 ADD\n557 SWAP1\n558 DUP2\n559 MSTORE\n560 PUSH1 0x20\n562 ADD\n563 PUSH1 0x00\n565 SHA3\n566 SLOAD\n567 SUB\n568 LT\n569 ISZERO\n570 ISZERO\n571 ISZERO\n572 PUSH2 0x0244\n575 JUMPI", "id": "1662", "isExpanded": false, "label": "499 JUMPDEST\n500 PUSH1 0x00\n502 DUP1\n503 DUP3\n504 PUSH1 0x00\n506 DUP1\n(click to expand +)", "size": 150, "truncLabel": "499 JUMPDEST\n500 PUSH1 0x00\n502 DUP1\n503 DUP3\n504 PUSH1 0x00\n506 DUP1\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "580 JUMPDEST\n581 DUP2\n582 PUSH1 0x00\n584 DUP1\n585 CALLER\n586 PUSH20 0xffffffff(...)\n607 AND\n608 PUSH20 0xffffffff(...)\n629 AND\n630 DUP2\n631 MSTORE\n632 PUSH1 0x20\n634 ADD\n635 SWAP1\n636 DUP2\n637 MSTORE\n638 PUSH1 0x20\n640 ADD\n641 PUSH1 0x00\n643 SHA3\n644 PUSH1 0x00\n646 DUP3\n647 DUP3\n648 SLOAD\n649 SUB\n650 SWAP3\n651 POP\n652 POP\n653 DUP2\n654 SWAP1\n655 SSTORE", "id": "1663", "isExpanded": false, "label": "580 JUMPDEST\n581 DUP2\n582 PUSH1 0x00\n584 DUP1\n585 CALLER\n586 PUSH20 0xffffffff(...)\n(click to expand +)", "size": 150, "truncLabel": "580 JUMPDEST\n581 DUP2\n582 PUSH1 0x00\n584 DUP1\n585 CALLER\n586 PUSH20 0xffffffff(...)\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n683 AND\n684 PUSH20 0xffffffff(...)\n705 AND\n706 DUP2\n707 MSTORE\n708 PUSH1 0x20\n710 ADD\n711 SWAP1\n712 DUP2\n713 MSTORE\n714 PUSH1 0x20\n716 ADD\n717 PUSH1 0x00\n719 SHA3\n720 PUSH1 0x00\n722 DUP3\n723 DUP3\n724 SLOAD\n725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n731 SSTORE", "id": "1664", "isExpanded": false, "label": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n(click to expand +)", "size": 150, "truncLabel": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n683 AND\n684 PUSH20 0xffffffff(...)\n705 AND\n706 DUP2\n707 MSTORE\n708 PUSH1 0x20\n710 ADD\n711 SWAP1\n712 DUP2\n713 MSTORE\n714 PUSH1 0x20\n716 ADD\n717 PUSH1 0x00\n719 SHA3\n720 PUSH1 0x00\n722 DUP3\n723 DUP3\n724 SLOAD", "id": "1665", "isExpanded": false, "label": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n(click to expand +)", "size": 150, "truncLabel": "656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffff(...)\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n731 SSTORE", "id": "1666", "isExpanded": false, "label": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)", "size": 150, "truncLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n731 SSTORE", "id": "1667", "isExpanded": false, "label": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)", "size": 150, "truncLabel": "725 ADD\n726 SWAP3\n727 POP\n728 POP\n729 DUP2\n730 SWAP1\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1668", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1669", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1670", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1671", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1672", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1673", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1674", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1675", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1676", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1677", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1678", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1679", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1680", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n739 POP\n740 POP\n741 JUMP", "id": "1681", "isExpanded": false, "label": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)", "size": 150, "truncLabel": "732 POP\n733 PUSH1 0x01\n735 SWAP1\n736 POP\n737 SWAP3\n738 SWAP2\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1682", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n327 ISZERO\n328 ISZERO\n329 ISZERO\n330 DUP2\n331 MSTORE\n332 PUSH1 0x20\n334 ADD\n335 SWAP2\n336 POP\n337 POP\n338 PUSH1 0x40\n340 MLOAD\n341 DUP1\n342 SWAP2\n343 SUB\n344 SWAP1\n345 RETURN", "id": "1683", "isExpanded": false, "label": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)", "size": 150, "truncLabel": "320 JUMPDEST\n321 PUSH1 0x40\n323 MLOAD\n324 DUP1\n325 DUP3\n326 ISZERO\n(click to expand +)"}];
+        var edges = [{"arrows": "to", "from": "1142", "label": "ULE(4, 20_calldatasize)", "smooth": {"type": "cubicBezier"}, "to": "1143"}, {"arrows": "to", "from": "1142", "label": "Not(ULE(4, 20_calldatasize))", "smooth": {"type": "cubicBezier"}, "to": "1144"}, {"arrows": "to", "from": "1143", "label": "Not(And(20_calldata[3] == 0xdd,        20_calldata[2] == 13,        20_calldata[1] == 22,        20_calldata[0] == 24))", "smooth": {"type": "cubicBezier"}, "to": "1145"}, {"arrows": "to", "from": "1143", "label": "And(20_calldata[3] == 0xdd,    20_calldata[2] == 13,    20_calldata[1] == 22,    20_calldata[0] == 24)", "smooth": {"type": "cubicBezier"}, "to": "1146"}, {"arrows": "to", "from": "1146", "label": "Not(call_value20 == 0)", "smooth": {"type": "cubicBezier"}, "to": "1147"}, {"arrows": "to", "from": "1146", "label": "call_value20 == 0", "smooth": {"type": "cubicBezier"}, "to": "1148"}, {"arrows": "to", "from": "1148", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1149"}, {"arrows": "to", "from": "1149", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1150"}, {"arrows": "to", "from": "1145", "label": "Not(And(20_calldata[3] == 0xd1,        20_calldata[2] == 0xbf,        20_calldata[1] == 65,        20_calldata[0] == 98))", "smooth": {"type": "cubicBezier"}, "to": "1151"}, {"arrows": "to", "from": "1145", "label": "And(20_calldata[3] == 0xd1,    20_calldata[2] == 0xbf,    20_calldata[1] == 65,    20_calldata[0] == 98)", "smooth": {"type": "cubicBezier"}, "to": "1152"}, {"arrows": "to", "from": "1152", "label": "Not(call_value20 == 0)", "smooth": {"type": "cubicBezier"}, "to": "1153"}, {"arrows": "to", "from": "1152", "label": "call_value20 == 0", "smooth": {"type": "cubicBezier"}, "to": "1154"}, {"arrows": "to", "from": "1154", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1155"}, {"arrows": "to", "from": "1155", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1156"}, {"arrows": "to", "from": "1151", "label": "Not(And(20_calldata[3] == 49,        20_calldata[2] == 0x82,        20_calldata[1] == 0xa0,        20_calldata[0] == 0x70))", "smooth": {"type": "cubicBezier"}, "to": "1157"}, {"arrows": "to", "from": "1151", "label": "And(20_calldata[3] == 49,    20_calldata[2] == 0x82,    20_calldata[1] == 0xa0,    20_calldata[0] == 0x70)", "smooth": {"type": "cubicBezier"}, "to": "1158"}, {"arrows": "to", "from": "1158", "label": "Not(call_value20 == 0)", "smooth": {"type": "cubicBezier"}, "to": "1159"}, {"arrows": "to", "from": "1158", "label": "call_value20 == 0", "smooth": {"type": "cubicBezier"}, "to": "1160"}, {"arrows": "to", "from": "1160", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1161"}, {"arrows": "to", "from": "1161", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1162"}, {"arrows": "to", "from": "1157", "label": "Not(And(20_calldata[3] == 0x87,        20_calldata[2] == 14,        20_calldata[1] == 33,        20_calldata[0] == 0xa3))", "smooth": {"type": "cubicBezier"}, "to": "1163"}, {"arrows": "to", "from": "1157", "label": "And(20_calldata[3] == 0x87,    20_calldata[2] == 14,    20_calldata[1] == 33,    20_calldata[0] == 0xa3)", "smooth": {"type": "cubicBezier"}, "to": "1164"}, {"arrows": "to", "from": "1164", "label": "Not(call_value20 == 0)", "smooth": {"type": "cubicBezier"}, "to": "1165"}, {"arrows": "to", "from": "1164", "label": "call_value20 == 0", "smooth": {"type": "cubicBezier"}, "to": "1166"}, {"arrows": "to", "from": "1166", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1167"}, {"arrows": "to", "from": "1167", "label": "True", "smooth": {"type": "cubicBezier"}, "to": "1168"}, {"arrows": "to", "from": "1168", "label": "And(20_calldata[35] == Extract(7, 0, caller20),    20_calldata[34] == Extract(15, 8, caller20),    20_calldata[33] == Extract(23, 16, caller20),    20_calldata[32] == Extract(31, 24, caller20),    20_calldata[31] == Extract(39, 32, caller20),    20_calldata[30] == Extract(47, 40, caller20),    20_calldata[29] == Extract(55, 48, caller20),    20_calldata[28] == Extract(63, 56, caller20),    20_calldata[27] == Extract(71, 64, caller20),    20_calldata[26] == Extract(79, 72, caller20),    20_calldata[25] == Extract(87, 80, caller20),    20_calldata[24] == Extract(95, 88, caller20),    20_calldata[23] == Extract(0x67, 96, caller20),    20_calldata[22] == Extract(0x6f, 0x68, caller20),    20_calldata[21] == Extract(0x77, 0x70, caller20),    20_calldata[20] == Extract(0x7f, 0x78, caller20),    20_calldata[19] == Extract(0x87, 0x80, caller20),    20_calldata[18] == Extract(0x8f, 0x88, caller20),    20_calldata[17] == Extract(0x97, 0x90, caller20),    20_calldata[16] == Extract(0x9f, 0x98, caller20))", "smooth": {"type": "cubicBezier"}, "to": "1169"}, {"arrows": "to", "from": "1168", "label": "Not(And(20_calldata[35] == Extract(7, 0, caller20),        20_calldata[34] == Extract(15, 8, caller20),        20_calldata[33] == Extract(23, 16, caller20),        20_calldata[32] == Extract(31, 24, caller20),        20_calldata[31] == Extract(39, 32, caller20),        20_calldata[30] == Extract(47, 40, caller20),        20_calldata[29] == Extract(55, 48, caller20),        20_calldata[28] == Extract(63, 56, caller20),        20_calldata[27] == Extract(71, 64, caller20),        20_calldata[26] == Extract(79, 72, caller20),        20_calldata[25] == Extract(87, 80, caller20),        20_calldata[24] == Extract(95, 88, caller20),        20_calldata[23] == Extract(0x67, 96, caller20),        20_calldata[22] == Extract(0x6f, 0x68, caller20),        20_calldata[21] == Extract(0x77, 0x70, caller20),        20_calldata[20] == Extract(0x7f, 0x78, caller20),        20_calldata[19] == Extract(0x87, 0x80, caller20),        20_calldata[18] == Extract(0x8f, 0x88, caller20),        20_calldata[17] == Extract(0x97, 0x90, caller20),        20_calldata[16] == Extract(0x9f, 0x98, caller20)))", "smooth": {"type": "cubicBezier"}, "to": "1170"}, {"arrows": "to", "from": "1170", "label": "True", "smooth": {"type": "cubicBezier"}, "to": "1171"}, {"arrows": "to", "from": "1170", "label": "And(Extract(7, 0, caller20) == 20_calldata[35],    Extract(15, 8, caller20) == 20_calldata[34],    Extract(23, 16, caller20) == 20_calldata[33],    Extract(31, 24, caller20) == 20_calldata[32],    Extract(39, 32, caller20) == 20_calldata[31],    Extract(47, 40, caller20) == 20_calldata[30],    Extract(55, 48, caller20) == 20_calldata[29],    Extract(63, 56, caller20) == 20_calldata[28],    Extract(71, 64, caller20) == 20_calldata[27],    Extract(79, 72, caller20) == 20_calldata[26],    Extract(87, 80, caller20) == 20_calldata[25],    Extract(95, 88, caller20) == 20_calldata[24],    Extract(0x67, 96, caller20) == 20_calldata[23],    Extract(0x6f, 0x68, caller20) == 20_calldata[22],    Extract(0x77, 0x70, caller20) == 20_calldata[21],    Extract(0x7f, 0x78, caller20) == 20_calldata[20],    Extract(0x87, 0x80, caller20) == 20_calldata[19],    Extract(0x8f, 0x88, caller20) == 20_calldata[18],    Extract(0x97, 0x90, caller20) == 20_calldata[17],    Extract(0x9f, 0x98, caller20) == 20_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1172"}, {"arrows": "to", "from": "1172", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1173"}, {"arrows": "to", "from": "1171", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1174"}, {"arrows": "to", "from": "1169", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1175"}, {"arrows": "to", "from": "1150", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1176"}, {"arrows": "to", "from": "1156", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1177"}, {"arrows": "to", "from": "1162", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1178"}, {"arrows": "to", "from": "1173", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1179"}, {"arrows": "to", "from": "1174", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1180"}, {"arrows": "to", "from": "1175", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1181"}, {"arrows": "to", "from": "1181", "label": "ULE(4, 26_calldatasize)", "smooth": {"type": "cubicBezier"}, "to": "1182"}, {"arrows": "to", "from": "1181", "label": "Not(ULE(4, 26_calldatasize))", "smooth": {"type": "cubicBezier"}, "to": "1183"}, {"arrows": "to", "from": "1182", "label": "Not(And(26_calldata[3] == 0xdd,        26_calldata[2] == 13,        26_calldata[1] == 22,        26_calldata[0] == 24))", "smooth": {"type": "cubicBezier"}, "to": "1184"}, {"arrows": "to", "from": "1182", "label": "And(26_calldata[3] == 0xdd,    26_calldata[2] == 13,    26_calldata[1] == 22,    26_calldata[0] == 24)", "smooth": {"type": "cubicBezier"}, "to": "1185"}, {"arrows": "to", "from": "1185", "label": "Not(call_value26 == 0)", "smooth": {"type": "cubicBezier"}, "to": "1186"}, {"arrows": "to", "from": "1185", "label": "call_value26 == 0", "smooth": {"type": "cubicBezier"}, "to": "1187"}, {"arrows": "to", "from": "1187", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1188"}, {"arrows": "to", "from": "1188", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1189"}, {"arrows": "to", "from": "1184", "label": "Not(And(26_calldata[3] == 0xd1,        26_calldata[2] == 0xbf,        26_calldata[1] == 65,        26_calldata[0] == 98))", "smooth": {"type": "cubicBezier"}, "to": "1190"}, {"arrows": "to", "from": "1184", "label": "And(26_calldata[3] == 0xd1,    26_calldata[2] == 0xbf,    26_calldata[1] == 65,    26_calldata[0] == 98)", "smooth": {"type": "cubicBezier"}, "to": "1191"}, {"arrows": "to", "from": "1191", "label": "Not(call_value26 == 0)", "smooth": {"type": "cubicBezier"}, "to": "1192"}, {"arrows": "to", "from": "1191", "label": "call_value26 == 0", "smooth": {"type": "cubicBezier"}, "to": "1193"}, {"arrows": "to", "from": "1193", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1194"}, {"arrows": "to", "from": "1194", "label": "And(20_calldata[35] == Extract(7, 0, caller26),    20_calldata[34] == Extract(15, 8, caller26),    20_calldata[33] == Extract(23, 16, caller26),    20_calldata[32] == Extract(31, 24, caller26),    20_calldata[31] == Extract(39, 32, caller26),    20_calldata[30] == Extract(47, 40, caller26),    20_calldata[29] == Extract(55, 48, caller26),    20_calldata[28] == Extract(63, 56, caller26),    20_calldata[27] == Extract(71, 64, caller26),    20_calldata[26] == Extract(79, 72, caller26),    20_calldata[25] == Extract(87, 80, caller26),    20_calldata[24] == Extract(95, 88, caller26),    20_calldata[23] == Extract(0x67, 96, caller26),    20_calldata[22] == Extract(0x6f, 0x68, caller26),    20_calldata[21] == Extract(0x77, 0x70, caller26),    20_calldata[20] == Extract(0x7f, 0x78, caller26),    20_calldata[19] == Extract(0x87, 0x80, caller26),    20_calldata[18] == Extract(0x8f, 0x88, caller26),    20_calldata[17] == Extract(0x97, 0x90, caller26),    20_calldata[16] == Extract(0x9f, 0x98, caller26))", "smooth": {"type": "cubicBezier"}, "to": "1195"}, {"arrows": "to", "from": "1194", "label": "Not(And(20_calldata[35] == Extract(7, 0, caller26),        20_calldata[34] == Extract(15, 8, caller26),        20_calldata[33] == Extract(23, 16, caller26),        20_calldata[32] == Extract(31, 24, caller26),        20_calldata[31] == Extract(39, 32, caller26),        20_calldata[30] == Extract(47, 40, caller26),        20_calldata[29] == Extract(55, 48, caller26),        20_calldata[28] == Extract(63, 56, caller26),        20_calldata[27] == Extract(71, 64, caller26),        20_calldata[26] == Extract(79, 72, caller26),        20_calldata[25] == Extract(87, 80, caller26),        20_calldata[24] == Extract(95, 88, caller26),        20_calldata[23] == Extract(0x67, 96, caller26),        20_calldata[22] == Extract(0x6f, 0x68, caller26),        20_calldata[21] == Extract(0x77, 0x70, caller26),        20_calldata[20] == Extract(0x7f, 0x78, caller26),        20_calldata[19] == Extract(0x87, 0x80, caller26),        20_calldata[18] == Extract(0x8f, 0x88, caller26),        20_calldata[17] == Extract(0x97, 0x90, caller26),        20_calldata[16] == Extract(0x9f, 0x98, caller26)))", "smooth": {"type": "cubicBezier"}, "to": "1196"}, {"arrows": "to", "from": "1196", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1197"}, {"arrows": "to", "from": "1195", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1198"}, {"arrows": "to", "from": "1190", "label": "Not(And(26_calldata[3] == 49,        26_calldata[2] == 0x82,        26_calldata[1] == 0xa0,        26_calldata[0] == 0x70))", "smooth": {"type": "cubicBezier"}, "to": "1199"}, {"arrows": "to", "from": "1190", "label": "And(26_calldata[3] == 49,    26_calldata[2] == 0x82,    26_calldata[1] == 0xa0,    26_calldata[0] == 0x70)", "smooth": {"type": "cubicBezier"}, "to": "1200"}, {"arrows": "to", "from": "1200", "label": "Not(call_value26 == 0)", "smooth": {"type": "cubicBezier"}, "to": "1201"}, {"arrows": "to", "from": "1200", "label": "call_value26 == 0", "smooth": {"type": "cubicBezier"}, "to": "1202"}, {"arrows": "to", "from": "1202", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1203"}, {"arrows": "to", "from": "1203", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1204"}, {"arrows": "to", "from": "1199", "label": "Not(And(26_calldata[3] == 0x87,        26_calldata[2] == 14,        26_calldata[1] == 33,        26_calldata[0] == 0xa3))", "smooth": {"type": "cubicBezier"}, "to": "1205"}, {"arrows": "to", "from": "1199", "label": "And(26_calldata[3] == 0x87,    26_calldata[2] == 14,    26_calldata[1] == 33,    26_calldata[0] == 0xa3)", "smooth": {"type": "cubicBezier"}, "to": "1206"}, {"arrows": "to", "from": "1206", "label": "Not(call_value26 == 0)", "smooth": {"type": "cubicBezier"}, "to": "1207"}, {"arrows": "to", "from": "1206", "label": "call_value26 == 0", "smooth": {"type": "cubicBezier"}, "to": "1208"}, {"arrows": "to", "from": "1208", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1209"}, {"arrows": "to", "from": "1209", "label": "True", "smooth": {"type": "cubicBezier"}, "to": "1210"}, {"arrows": "to", "from": "1210", "label": "And(20_calldata[35] == Extract(7, 0, caller26),    20_calldata[34] == Extract(15, 8, caller26),    20_calldata[33] == Extract(23, 16, caller26),    20_calldata[32] == Extract(31, 24, caller26),    20_calldata[31] == Extract(39, 32, caller26),    20_calldata[30] == Extract(47, 40, caller26),    20_calldata[29] == Extract(55, 48, caller26),    20_calldata[28] == Extract(63, 56, caller26),    20_calldata[27] == Extract(71, 64, caller26),    20_calldata[26] == Extract(79, 72, caller26),    20_calldata[25] == Extract(87, 80, caller26),    20_calldata[24] == Extract(95, 88, caller26),    20_calldata[23] == Extract(0x67, 96, caller26),    20_calldata[22] == Extract(0x6f, 0x68, caller26),    20_calldata[21] == Extract(0x77, 0x70, caller26),    20_calldata[20] == Extract(0x7f, 0x78, caller26),    20_calldata[19] == Extract(0x87, 0x80, caller26),    20_calldata[18] == Extract(0x8f, 0x88, caller26),    20_calldata[17] == Extract(0x97, 0x90, caller26),    20_calldata[16] == Extract(0x9f, 0x98, caller26))", "smooth": {"type": "cubicBezier"}, "to": "1211"}, {"arrows": "to", "from": "1210", "label": "Not(And(20_calldata[35] == Extract(7, 0, caller26),        20_calldata[34] == Extract(15, 8, caller26),        20_calldata[33] == Extract(23, 16, caller26),        20_calldata[32] == Extract(31, 24, caller26),        20_calldata[31] == Extract(39, 32, caller26),        20_calldata[30] == Extract(47, 40, caller26),        20_calldata[29] == Extract(55, 48, caller26),        20_calldata[28] == Extract(63, 56, caller26),        20_calldata[27] == Extract(71, 64, caller26),        20_calldata[26] == Extract(79, 72, caller26),        20_calldata[25] == Extract(87, 80, caller26),        20_calldata[24] == Extract(95, 88, caller26),        20_calldata[23] == Extract(0x67, 96, caller26),        20_calldata[22] == Extract(0x6f, 0x68, caller26),        20_calldata[21] == Extract(0x77, 0x70, caller26),        20_calldata[20] == Extract(0x7f, 0x78, caller26),        20_calldata[19] == Extract(0x87, 0x80, caller26),        20_calldata[18] == Extract(0x8f, 0x88, caller26),        20_calldata[17] == Extract(0x97, 0x90, caller26),        20_calldata[16] == Extract(0x9f, 0x98, caller26)))", "smooth": {"type": "cubicBezier"}, "to": "1212"}, {"arrows": "to", "from": "1212", "label": "And(20_calldata[35] == 26_calldata[35],    20_calldata[34] == 26_calldata[34],    20_calldata[33] == 26_calldata[33],    20_calldata[32] == 26_calldata[32],    20_calldata[31] == 26_calldata[31],    20_calldata[30] == 26_calldata[30],    20_calldata[29] == 26_calldata[29],    20_calldata[28] == 26_calldata[28],    20_calldata[27] == 26_calldata[27],    20_calldata[26] == 26_calldata[26],    20_calldata[25] == 26_calldata[25],    20_calldata[24] == 26_calldata[24],    20_calldata[23] == 26_calldata[23],    20_calldata[22] == 26_calldata[22],    20_calldata[21] == 26_calldata[21],    20_calldata[20] == 26_calldata[20],    20_calldata[19] == 26_calldata[19],    20_calldata[18] == 26_calldata[18],    20_calldata[17] == 26_calldata[17],    20_calldata[16] == 26_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1213"}, {"arrows": "to", "from": "1212", "label": "And(Extract(7, 0, caller26) == 26_calldata[35],    Extract(15, 8, caller26) == 26_calldata[34],    Extract(23, 16, caller26) == 26_calldata[33],    Extract(31, 24, caller26) == 26_calldata[32],    Extract(39, 32, caller26) == 26_calldata[31],    Extract(47, 40, caller26) == 26_calldata[30],    Extract(55, 48, caller26) == 26_calldata[29],    Extract(63, 56, caller26) == 26_calldata[28],    Extract(71, 64, caller26) == 26_calldata[27],    Extract(79, 72, caller26) == 26_calldata[26],    Extract(87, 80, caller26) == 26_calldata[25],    Extract(95, 88, caller26) == 26_calldata[24],    Extract(0x67, 96, caller26) == 26_calldata[23],    Extract(0x6f, 0x68, caller26) == 26_calldata[22],    Extract(0x77, 0x70, caller26) == 26_calldata[21],    Extract(0x7f, 0x78, caller26) == 26_calldata[20],    Extract(0x87, 0x80, caller26) == 26_calldata[19],    Extract(0x8f, 0x88, caller26) == 26_calldata[18],    Extract(0x97, 0x90, caller26) == 26_calldata[17],    Extract(0x9f, 0x98, caller26) == 26_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1214"}, {"arrows": "to", "from": "1214", "label": "And(20_calldata[35] == 26_calldata[35],    20_calldata[34] == 26_calldata[34],    20_calldata[33] == 26_calldata[33],    20_calldata[32] == 26_calldata[32],    20_calldata[31] == 26_calldata[31],    20_calldata[30] == 26_calldata[30],    20_calldata[29] == 26_calldata[29],    20_calldata[28] == 26_calldata[28],    20_calldata[27] == 26_calldata[27],    20_calldata[26] == 26_calldata[26],    20_calldata[25] == 26_calldata[25],    20_calldata[24] == 26_calldata[24],    20_calldata[23] == 26_calldata[23],    20_calldata[22] == 26_calldata[22],    20_calldata[21] == 26_calldata[21],    20_calldata[20] == 26_calldata[20],    20_calldata[19] == 26_calldata[19],    20_calldata[18] == 26_calldata[18],    20_calldata[17] == 26_calldata[17],    20_calldata[16] == 26_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1215"}, {"arrows": "to", "from": "1214", "label": "And(Extract(7, 0, caller26) == 26_calldata[35],    Extract(15, 8, caller26) == 26_calldata[34],    Extract(23, 16, caller26) == 26_calldata[33],    Extract(31, 24, caller26) == 26_calldata[32],    Extract(39, 32, caller26) == 26_calldata[31],    Extract(47, 40, caller26) == 26_calldata[30],    Extract(55, 48, caller26) == 26_calldata[29],    Extract(63, 56, caller26) == 26_calldata[28],    Extract(71, 64, caller26) == 26_calldata[27],    Extract(79, 72, caller26) == 26_calldata[26],    Extract(87, 80, caller26) == 26_calldata[25],    Extract(95, 88, caller26) == 26_calldata[24],    Extract(0x67, 96, caller26) == 26_calldata[23],    Extract(0x6f, 0x68, caller26) == 26_calldata[22],    Extract(0x77, 0x70, caller26) == 26_calldata[21],    Extract(0x7f, 0x78, caller26) == 26_calldata[20],    Extract(0x87, 0x80, caller26) == 26_calldata[19],    Extract(0x8f, 0x88, caller26) == 26_calldata[18],    Extract(0x97, 0x90, caller26) == 26_calldata[17],    Extract(0x9f, 0x98, caller26) == 26_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1216"}, {"arrows": "to", "from": "1214", "label": "Or(Not(And(20_calldata[35] == 26_calldata[35],           20_calldata[34] == 26_calldata[34],           20_calldata[33] == 26_calldata[33],           20_calldata[32] == 26_calldata[32],           20_calldata[31] == 26_calldata[31],           20_calldata[30] == 26_calldata[30],           20_calldata[29] == 26_calldata[29],           20_calldata[28] == 26_calldata[28],           20_calldata[27] == 26_calldata[27],           20_calldata[26] == 26_calldata[26],           20_calldata[25] == 26_calldata[25],           20_calldata[24] == 26_calldata[24],           20_calldata[23] == 26_calldata[23],           20_calldata[22] == 26_calldata[22],           20_calldata[21] == 26_calldata[21],           20_calldata[20] == 26_calldata[20],           20_calldata[19] == 26_calldata[19],           20_calldata[18] == 26_calldata[18],           20_calldata[17] == 26_calldata[17],           20_calldata[16] == 26_calldata[16])),   Not(And(Extract(7, 0, caller26) == 26_calldata[35],           Extract(15, 8, caller26) == 26_calldata[34],           Extract(23, 16, caller26) == 26_calldata[33],           Extract(31, 24, caller26) == 26_calldata[32],           Extract(39, 32, caller26) == 26_calldata[31],           Extract(47, 40, caller26) == 26_calldata[30],           Extract(55, 48, caller26) == 26_calldata[29],           Extract(63, 56, caller26) == 26_calldata[28],           Extract(71, 64, caller26) == 26_calldata[27],           Extract(79, 72, caller26) == 26_calldata[26],           Extract(87, 80, caller26) == 26_calldata[25],           Extract(95, 88, caller26) == 26_calldata[24],           Extract(0x67, 96, caller26) == 26_calldata[23],           Extract(0x6f, 0x68, caller26) == 26_calldata[22],           Extract(0x77, 0x70, caller26) == 26_calldata[21],           Extract(0x7f, 0x78, caller26) == 26_calldata[20],           Extract(0x87, 0x80, caller26) == 26_calldata[19],           Extract(0x8f, 0x88, caller26) == 26_calldata[18],           Extract(0x97, 0x90, caller26) == 26_calldata[17],           Extract(0x9f, 0x98, caller26) == 26_calldata[16])))", "smooth": {"type": "cubicBezier"}, "to": "1217"}, {"arrows": "to", "from": "1217", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1218"}, {"arrows": "to", "from": "1216", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1219"}, {"arrows": "to", "from": "1215", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1220"}, {"arrows": "to", "from": "1213", "label": "And(20_calldata[35] == 26_calldata[35],    20_calldata[34] == 26_calldata[34],    20_calldata[33] == 26_calldata[33],    20_calldata[32] == 26_calldata[32],    20_calldata[31] == 26_calldata[31],    20_calldata[30] == 26_calldata[30],    20_calldata[29] == 26_calldata[29],    20_calldata[28] == 26_calldata[28],    20_calldata[27] == 26_calldata[27],    20_calldata[26] == 26_calldata[26],    20_calldata[25] == 26_calldata[25],    20_calldata[24] == 26_calldata[24],    20_calldata[23] == 26_calldata[23],    20_calldata[22] == 26_calldata[22],    20_calldata[21] == 26_calldata[21],    20_calldata[20] == 26_calldata[20],    20_calldata[19] == 26_calldata[19],    20_calldata[18] == 26_calldata[18],    20_calldata[17] == 26_calldata[17],    20_calldata[16] == 26_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1221"}, {"arrows": "to", "from": "1213", "label": "And(Extract(7, 0, caller26) == 26_calldata[35],    Extract(15, 8, caller26) == 26_calldata[34],    Extract(23, 16, caller26) == 26_calldata[33],    Extract(31, 24, caller26) == 26_calldata[32],    Extract(39, 32, caller26) == 26_calldata[31],    Extract(47, 40, caller26) == 26_calldata[30],    Extract(55, 48, caller26) == 26_calldata[29],    Extract(63, 56, caller26) == 26_calldata[28],    Extract(71, 64, caller26) == 26_calldata[27],    Extract(79, 72, caller26) == 26_calldata[26],    Extract(87, 80, caller26) == 26_calldata[25],    Extract(95, 88, caller26) == 26_calldata[24],    Extract(0x67, 96, caller26) == 26_calldata[23],    Extract(0x6f, 0x68, caller26) == 26_calldata[22],    Extract(0x77, 0x70, caller26) == 26_calldata[21],    Extract(0x7f, 0x78, caller26) == 26_calldata[20],    Extract(0x87, 0x80, caller26) == 26_calldata[19],    Extract(0x8f, 0x88, caller26) == 26_calldata[18],    Extract(0x97, 0x90, caller26) == 26_calldata[17],    Extract(0x9f, 0x98, caller26) == 26_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1222"}, {"arrows": "to", "from": "1213", "label": "Or(Not(And(20_calldata[35] == 26_calldata[35],           20_calldata[34] == 26_calldata[34],           20_calldata[33] == 26_calldata[33],           20_calldata[32] == 26_calldata[32],           20_calldata[31] == 26_calldata[31],           20_calldata[30] == 26_calldata[30],           20_calldata[29] == 26_calldata[29],           20_calldata[28] == 26_calldata[28],           20_calldata[27] == 26_calldata[27],           20_calldata[26] == 26_calldata[26],           20_calldata[25] == 26_calldata[25],           20_calldata[24] == 26_calldata[24],           20_calldata[23] == 26_calldata[23],           20_calldata[22] == 26_calldata[22],           20_calldata[21] == 26_calldata[21],           20_calldata[20] == 26_calldata[20],           20_calldata[19] == 26_calldata[19],           20_calldata[18] == 26_calldata[18],           20_calldata[17] == 26_calldata[17],           20_calldata[16] == 26_calldata[16])),   Not(And(Extract(7, 0, caller26) == 26_calldata[35],           Extract(15, 8, caller26) == 26_calldata[34],           Extract(23, 16, caller26) == 26_calldata[33],           Extract(31, 24, caller26) == 26_calldata[32],           Extract(39, 32, caller26) == 26_calldata[31],           Extract(47, 40, caller26) == 26_calldata[30],           Extract(55, 48, caller26) == 26_calldata[29],           Extract(63, 56, caller26) == 26_calldata[28],           Extract(71, 64, caller26) == 26_calldata[27],           Extract(79, 72, caller26) == 26_calldata[26],           Extract(87, 80, caller26) == 26_calldata[25],           Extract(95, 88, caller26) == 26_calldata[24],           Extract(0x67, 96, caller26) == 26_calldata[23],           Extract(0x6f, 0x68, caller26) == 26_calldata[22],           Extract(0x77, 0x70, caller26) == 26_calldata[21],           Extract(0x7f, 0x78, caller26) == 26_calldata[20],           Extract(0x87, 0x80, caller26) == 26_calldata[19],           Extract(0x8f, 0x88, caller26) == 26_calldata[18],           Extract(0x97, 0x90, caller26) == 26_calldata[17],           Extract(0x9f, 0x98, caller26) == 26_calldata[16])))", "smooth": {"type": "cubicBezier"}, "to": "1223"}, {"arrows": "to", "from": "1223", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1224"}, {"arrows": "to", "from": "1222", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1225"}, {"arrows": "to", "from": "1221", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1226"}, {"arrows": "to", "from": "1211", "label": "And(20_calldata[35] == 26_calldata[35],    20_calldata[34] == 26_calldata[34],    20_calldata[33] == 26_calldata[33],    20_calldata[32] == 26_calldata[32],    20_calldata[31] == 26_calldata[31],    20_calldata[30] == 26_calldata[30],    20_calldata[29] == 26_calldata[29],    20_calldata[28] == 26_calldata[28],    20_calldata[27] == 26_calldata[27],    20_calldata[26] == 26_calldata[26],    20_calldata[25] == 26_calldata[25],    20_calldata[24] == 26_calldata[24],    20_calldata[23] == 26_calldata[23],    20_calldata[22] == 26_calldata[22],    20_calldata[21] == 26_calldata[21],    20_calldata[20] == 26_calldata[20],    20_calldata[19] == 26_calldata[19],    20_calldata[18] == 26_calldata[18],    20_calldata[17] == 26_calldata[17],    20_calldata[16] == 26_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1227"}, {"arrows": "to", "from": "1211", "label": "Not(And(20_calldata[35] == 26_calldata[35],        20_calldata[34] == 26_calldata[34],        20_calldata[33] == 26_calldata[33],        20_calldata[32] == 26_calldata[32],        20_calldata[31] == 26_calldata[31],        20_calldata[30] == 26_calldata[30],        20_calldata[29] == 26_calldata[29],        20_calldata[28] == 26_calldata[28],        20_calldata[27] == 26_calldata[27],        20_calldata[26] == 26_calldata[26],        20_calldata[25] == 26_calldata[25],        20_calldata[24] == 26_calldata[24],        20_calldata[23] == 26_calldata[23],        20_calldata[22] == 26_calldata[22],        20_calldata[21] == 26_calldata[21],        20_calldata[20] == 26_calldata[20],        20_calldata[19] == 26_calldata[19],        20_calldata[18] == 26_calldata[18],        20_calldata[17] == 26_calldata[17],        20_calldata[16] == 26_calldata[16]))", "smooth": {"type": "cubicBezier"}, "to": "1228"}, {"arrows": "to", "from": "1228", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1229"}, {"arrows": "to", "from": "1227", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1230"}, {"arrows": "to", "from": "1180", "label": "ULE(4, 25_calldatasize)", "smooth": {"type": "cubicBezier"}, "to": "1231"}, {"arrows": "to", "from": "1180", "label": "Not(ULE(4, 25_calldatasize))", "smooth": {"type": "cubicBezier"}, "to": "1232"}, {"arrows": "to", "from": "1231", "label": "Not(And(25_calldata[3] == 0xdd,        25_calldata[2] == 13,        25_calldata[1] == 22,        25_calldata[0] == 24))", "smooth": {"type": "cubicBezier"}, "to": "1233"}, {"arrows": "to", "from": "1231", "label": "And(25_calldata[3] == 0xdd,    25_calldata[2] == 13,    25_calldata[1] == 22,    25_calldata[0] == 24)", "smooth": {"type": "cubicBezier"}, "to": "1234"}, {"arrows": "to", "from": "1234", "label": "Not(call_value25 == 0)", "smooth": {"type": "cubicBezier"}, "to": "1235"}, {"arrows": "to", "from": "1234", "label": "call_value25 == 0", "smooth": {"type": "cubicBezier"}, "to": "1236"}, {"arrows": "to", "from": "1236", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1237"}, {"arrows": "to", "from": "1237", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1238"}, {"arrows": "to", "from": "1233", "label": "Not(And(25_calldata[3] == 0xd1,        25_calldata[2] == 0xbf,        25_calldata[1] == 65,        25_calldata[0] == 98))", "smooth": {"type": "cubicBezier"}, "to": "1239"}, {"arrows": "to", "from": "1233", "label": "And(25_calldata[3] == 0xd1,    25_calldata[2] == 0xbf,    25_calldata[1] == 65,    25_calldata[0] == 98)", "smooth": {"type": "cubicBezier"}, "to": "1240"}, {"arrows": "to", "from": "1240", "label": "Not(call_value25 == 0)", "smooth": {"type": "cubicBezier"}, "to": "1241"}, {"arrows": "to", "from": "1240", "label": "call_value25 == 0", "smooth": {"type": "cubicBezier"}, "to": "1242"}, {"arrows": "to", "from": "1242", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1243"}, {"arrows": "to", "from": "1243", "label": "And(20_calldata[35] == Extract(7, 0, caller25),    20_calldata[34] == Extract(15, 8, caller25),    20_calldata[33] == Extract(23, 16, caller25),    20_calldata[32] == Extract(31, 24, caller25),    20_calldata[31] == Extract(39, 32, caller25),    20_calldata[30] == Extract(47, 40, caller25),    20_calldata[29] == Extract(55, 48, caller25),    20_calldata[28] == Extract(63, 56, caller25),    20_calldata[27] == Extract(71, 64, caller25),    20_calldata[26] == Extract(79, 72, caller25),    20_calldata[25] == Extract(87, 80, caller25),    20_calldata[24] == Extract(95, 88, caller25),    20_calldata[23] == Extract(0x67, 96, caller25),    20_calldata[22] == Extract(0x6f, 0x68, caller25),    20_calldata[21] == Extract(0x77, 0x70, caller25),    20_calldata[20] == Extract(0x7f, 0x78, caller25),    20_calldata[19] == Extract(0x87, 0x80, caller25),    20_calldata[18] == Extract(0x8f, 0x88, caller25),    20_calldata[17] == Extract(0x97, 0x90, caller25),    20_calldata[16] == Extract(0x9f, 0x98, caller25))", "smooth": {"type": "cubicBezier"}, "to": "1244"}, {"arrows": "to", "from": "1243", "label": "Extract(0x9f, 0, caller20) == Extract(0x9f, 0, caller25)", "smooth": {"type": "cubicBezier"}, "to": "1245"}, {"arrows": "to", "from": "1243", "label": "Or(Not(And(20_calldata[35] == Extract(7, 0, caller25),           20_calldata[34] == Extract(15, 8, caller25),           20_calldata[33] == Extract(23, 16, caller25),           20_calldata[32] == Extract(31, 24, caller25),           20_calldata[31] == Extract(39, 32, caller25),           20_calldata[30] == Extract(47, 40, caller25),           20_calldata[29] == Extract(55, 48, caller25),           20_calldata[28] == Extract(63, 56, caller25),           20_calldata[27] == Extract(71, 64, caller25),           20_calldata[26] == Extract(79, 72, caller25),           20_calldata[25] == Extract(87, 80, caller25),           20_calldata[24] == Extract(95, 88, caller25),           20_calldata[23] == Extract(0x67, 96, caller25),           20_calldata[22] == Extract(0x6f, 0x68, caller25),           20_calldata[21] == Extract(0x77, 0x70, caller25),           20_calldata[20] == Extract(0x7f, 0x78, caller25),           20_calldata[19] == Extract(0x87, 0x80, caller25),           20_calldata[18] == Extract(0x8f, 0x88, caller25),           20_calldata[17] == Extract(0x97, 0x90, caller25),           20_calldata[16] == Extract(0x9f, 0x98, caller25))),   Not(Extract(0x9f, 0, caller20) ==       Extract(0x9f, 0, caller25)))", "smooth": {"type": "cubicBezier"}, "to": "1246"}, {"arrows": "to", "from": "1246", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1247"}, {"arrows": "to", "from": "1245", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1248"}, {"arrows": "to", "from": "1244", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1249"}, {"arrows": "to", "from": "1239", "label": "Not(And(25_calldata[3] == 49,        25_calldata[2] == 0x82,        25_calldata[1] == 0xa0,        25_calldata[0] == 0x70))", "smooth": {"type": "cubicBezier"}, "to": "1250"}, {"arrows": "to", "from": "1239", "label": "And(25_calldata[3] == 49,    25_calldata[2] == 0x82,    25_calldata[1] == 0xa0,    25_calldata[0] == 0x70)", "smooth": {"type": "cubicBezier"}, "to": "1251"}, {"arrows": "to", "from": "1251", "label": "Not(call_value25 == 0)", "smooth": {"type": "cubicBezier"}, "to": "1252"}, {"arrows": "to", "from": "1251", "label": "call_value25 == 0", "smooth": {"type": "cubicBezier"}, "to": "1253"}, {"arrows": "to", "from": "1253", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1254"}, {"arrows": "to", "from": "1254", "label": "And(20_calldata[35] == 25_calldata[35],    20_calldata[34] == 25_calldata[34],    20_calldata[33] == 25_calldata[33],    20_calldata[32] == 25_calldata[32],    20_calldata[31] == 25_calldata[31],    20_calldata[30] == 25_calldata[30],    20_calldata[29] == 25_calldata[29],    20_calldata[28] == 25_calldata[28],    20_calldata[27] == 25_calldata[27],    20_calldata[26] == 25_calldata[26],    20_calldata[25] == 25_calldata[25],    20_calldata[24] == 25_calldata[24],    20_calldata[23] == 25_calldata[23],    20_calldata[22] == 25_calldata[22],    20_calldata[21] == 25_calldata[21],    20_calldata[20] == 25_calldata[20],    20_calldata[19] == 25_calldata[19],    20_calldata[18] == 25_calldata[18],    20_calldata[17] == 25_calldata[17],    20_calldata[16] == 25_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1255"}, {"arrows": "to", "from": "1254", "label": "And(Extract(7, 0, caller20) == 25_calldata[35],    Extract(15, 8, caller20) == 25_calldata[34],    Extract(23, 16, caller20) == 25_calldata[33],    Extract(31, 24, caller20) == 25_calldata[32],    Extract(39, 32, caller20) == 25_calldata[31],    Extract(47, 40, caller20) == 25_calldata[30],    Extract(55, 48, caller20) == 25_calldata[29],    Extract(63, 56, caller20) == 25_calldata[28],    Extract(71, 64, caller20) == 25_calldata[27],    Extract(79, 72, caller20) == 25_calldata[26],    Extract(87, 80, caller20) == 25_calldata[25],    Extract(95, 88, caller20) == 25_calldata[24],    Extract(0x67, 96, caller20) == 25_calldata[23],    Extract(0x6f, 0x68, caller20) == 25_calldata[22],    Extract(0x77, 0x70, caller20) == 25_calldata[21],    Extract(0x7f, 0x78, caller20) == 25_calldata[20],    Extract(0x87, 0x80, caller20) == 25_calldata[19],    Extract(0x8f, 0x88, caller20) == 25_calldata[18],    Extract(0x97, 0x90, caller20) == 25_calldata[17],    Extract(0x9f, 0x98, caller20) == 25_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1256"}, {"arrows": "to", "from": "1256", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1257"}, {"arrows": "to", "from": "1255", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1258"}, {"arrows": "to", "from": "1250", "label": "Not(And(25_calldata[3] == 0x87,        25_calldata[2] == 14,        25_calldata[1] == 33,        25_calldata[0] == 0xa3))", "smooth": {"type": "cubicBezier"}, "to": "1259"}, {"arrows": "to", "from": "1250", "label": "And(25_calldata[3] == 0x87,    25_calldata[2] == 14,    25_calldata[1] == 33,    25_calldata[0] == 0xa3)", "smooth": {"type": "cubicBezier"}, "to": "1260"}, {"arrows": "to", "from": "1260", "label": "Not(call_value25 == 0)", "smooth": {"type": "cubicBezier"}, "to": "1261"}, {"arrows": "to", "from": "1260", "label": "call_value25 == 0", "smooth": {"type": "cubicBezier"}, "to": "1262"}, {"arrows": "to", "from": "1262", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1263"}, {"arrows": "to", "from": "1263", "label": "And(20_calldata[35] == Extract(7, 0, caller25),    20_calldata[34] == Extract(15, 8, caller25),    20_calldata[33] == Extract(23, 16, caller25),    20_calldata[32] == Extract(31, 24, caller25),    20_calldata[31] == Extract(39, 32, caller25),    20_calldata[30] == Extract(47, 40, caller25),    20_calldata[29] == Extract(55, 48, caller25),    20_calldata[28] == Extract(63, 56, caller25),    20_calldata[27] == Extract(71, 64, caller25),    20_calldata[26] == Extract(79, 72, caller25),    20_calldata[25] == Extract(87, 80, caller25),    20_calldata[24] == Extract(95, 88, caller25),    20_calldata[23] == Extract(0x67, 96, caller25),    20_calldata[22] == Extract(0x6f, 0x68, caller25),    20_calldata[21] == Extract(0x77, 0x70, caller25),    20_calldata[20] == Extract(0x7f, 0x78, caller25),    20_calldata[19] == Extract(0x87, 0x80, caller25),    20_calldata[18] == Extract(0x8f, 0x88, caller25),    20_calldata[17] == Extract(0x97, 0x90, caller25),    20_calldata[16] == Extract(0x9f, 0x98, caller25))", "smooth": {"type": "cubicBezier"}, "to": "1264"}, {"arrows": "to", "from": "1263", "label": "Extract(0x9f, 0, caller20) == Extract(0x9f, 0, caller25)", "smooth": {"type": "cubicBezier"}, "to": "1265"}, {"arrows": "to", "from": "1265", "label": "True", "smooth": {"type": "cubicBezier"}, "to": "1266"}, {"arrows": "to", "from": "1266", "label": "And(20_calldata[35] == Extract(7, 0, caller25),    20_calldata[34] == Extract(15, 8, caller25),    20_calldata[33] == Extract(23, 16, caller25),    20_calldata[32] == Extract(31, 24, caller25),    20_calldata[31] == Extract(39, 32, caller25),    20_calldata[30] == Extract(47, 40, caller25),    20_calldata[29] == Extract(55, 48, caller25),    20_calldata[28] == Extract(63, 56, caller25),    20_calldata[27] == Extract(71, 64, caller25),    20_calldata[26] == Extract(79, 72, caller25),    20_calldata[25] == Extract(87, 80, caller25),    20_calldata[24] == Extract(95, 88, caller25),    20_calldata[23] == Extract(0x67, 96, caller25),    20_calldata[22] == Extract(0x6f, 0x68, caller25),    20_calldata[21] == Extract(0x77, 0x70, caller25),    20_calldata[20] == Extract(0x7f, 0x78, caller25),    20_calldata[19] == Extract(0x87, 0x80, caller25),    20_calldata[18] == Extract(0x8f, 0x88, caller25),    20_calldata[17] == Extract(0x97, 0x90, caller25),    20_calldata[16] == Extract(0x9f, 0x98, caller25))", "smooth": {"type": "cubicBezier"}, "to": "1267"}, {"arrows": "to", "from": "1266", "label": "Extract(0x9f, 0, caller20) == Extract(0x9f, 0, caller25)", "smooth": {"type": "cubicBezier"}, "to": "1268"}, {"arrows": "to", "from": "1266", "label": "Or(Not(And(20_calldata[35] == Extract(7, 0, caller25),           20_calldata[34] == Extract(15, 8, caller25),           20_calldata[33] == Extract(23, 16, caller25),           20_calldata[32] == Extract(31, 24, caller25),           20_calldata[31] == Extract(39, 32, caller25),           20_calldata[30] == Extract(47, 40, caller25),           20_calldata[29] == Extract(55, 48, caller25),           20_calldata[28] == Extract(63, 56, caller25),           20_calldata[27] == Extract(71, 64, caller25),           20_calldata[26] == Extract(79, 72, caller25),           20_calldata[25] == Extract(87, 80, caller25),           20_calldata[24] == Extract(95, 88, caller25),           20_calldata[23] == Extract(0x67, 96, caller25),           20_calldata[22] == Extract(0x6f, 0x68, caller25),           20_calldata[21] == Extract(0x77, 0x70, caller25),           20_calldata[20] == Extract(0x7f, 0x78, caller25),           20_calldata[19] == Extract(0x87, 0x80, caller25),           20_calldata[18] == Extract(0x8f, 0x88, caller25),           20_calldata[17] == Extract(0x97, 0x90, caller25),           20_calldata[16] == Extract(0x9f, 0x98, caller25))),   Not(Extract(0x9f, 0, caller20) ==       Extract(0x9f, 0, caller25)))", "smooth": {"type": "cubicBezier"}, "to": "1269"}, {"arrows": "to", "from": "1269", "label": "And(20_calldata[35] == 25_calldata[35],    20_calldata[34] == 25_calldata[34],    20_calldata[33] == 25_calldata[33],    20_calldata[32] == 25_calldata[32],    20_calldata[31] == 25_calldata[31],    20_calldata[30] == 25_calldata[30],    20_calldata[29] == 25_calldata[29],    20_calldata[28] == 25_calldata[28],    20_calldata[27] == 25_calldata[27],    20_calldata[26] == 25_calldata[26],    20_calldata[25] == 25_calldata[25],    20_calldata[24] == 25_calldata[24],    20_calldata[23] == 25_calldata[23],    20_calldata[22] == 25_calldata[22],    20_calldata[21] == 25_calldata[21],    20_calldata[20] == 25_calldata[20],    20_calldata[19] == 25_calldata[19],    20_calldata[18] == 25_calldata[18],    20_calldata[17] == 25_calldata[17],    20_calldata[16] == 25_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1270"}, {"arrows": "to", "from": "1269", "label": "And(Extract(7, 0, caller20) == 25_calldata[35],    Extract(15, 8, caller20) == 25_calldata[34],    Extract(23, 16, caller20) == 25_calldata[33],    Extract(31, 24, caller20) == 25_calldata[32],    Extract(39, 32, caller20) == 25_calldata[31],    Extract(47, 40, caller20) == 25_calldata[30],    Extract(55, 48, caller20) == 25_calldata[29],    Extract(63, 56, caller20) == 25_calldata[28],    Extract(71, 64, caller20) == 25_calldata[27],    Extract(79, 72, caller20) == 25_calldata[26],    Extract(87, 80, caller20) == 25_calldata[25],    Extract(95, 88, caller20) == 25_calldata[24],    Extract(0x67, 96, caller20) == 25_calldata[23],    Extract(0x6f, 0x68, caller20) == 25_calldata[22],    Extract(0x77, 0x70, caller20) == 25_calldata[21],    Extract(0x7f, 0x78, caller20) == 25_calldata[20],    Extract(0x87, 0x80, caller20) == 25_calldata[19],    Extract(0x8f, 0x88, caller20) == 25_calldata[18],    Extract(0x97, 0x90, caller20) == 25_calldata[17],    Extract(0x9f, 0x98, caller20) == 25_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1271"}, {"arrows": "to", "from": "1269", "label": "And(Extract(7, 0, caller25) == 25_calldata[35],    Extract(15, 8, caller25) == 25_calldata[34],    Extract(23, 16, caller25) == 25_calldata[33],    Extract(31, 24, caller25) == 25_calldata[32],    Extract(39, 32, caller25) == 25_calldata[31],    Extract(47, 40, caller25) == 25_calldata[30],    Extract(55, 48, caller25) == 25_calldata[29],    Extract(63, 56, caller25) == 25_calldata[28],    Extract(71, 64, caller25) == 25_calldata[27],    Extract(79, 72, caller25) == 25_calldata[26],    Extract(87, 80, caller25) == 25_calldata[25],    Extract(95, 88, caller25) == 25_calldata[24],    Extract(0x67, 96, caller25) == 25_calldata[23],    Extract(0x6f, 0x68, caller25) == 25_calldata[22],    Extract(0x77, 0x70, caller25) == 25_calldata[21],    Extract(0x7f, 0x78, caller25) == 25_calldata[20],    Extract(0x87, 0x80, caller25) == 25_calldata[19],    Extract(0x8f, 0x88, caller25) == 25_calldata[18],    Extract(0x97, 0x90, caller25) == 25_calldata[17],    Extract(0x9f, 0x98, caller25) == 25_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1272"}, {"arrows": "to", "from": "1272", "label": "And(20_calldata[35] == 25_calldata[35],    20_calldata[34] == 25_calldata[34],    20_calldata[33] == 25_calldata[33],    20_calldata[32] == 25_calldata[32],    20_calldata[31] == 25_calldata[31],    20_calldata[30] == 25_calldata[30],    20_calldata[29] == 25_calldata[29],    20_calldata[28] == 25_calldata[28],    20_calldata[27] == 25_calldata[27],    20_calldata[26] == 25_calldata[26],    20_calldata[25] == 25_calldata[25],    20_calldata[24] == 25_calldata[24],    20_calldata[23] == 25_calldata[23],    20_calldata[22] == 25_calldata[22],    20_calldata[21] == 25_calldata[21],    20_calldata[20] == 25_calldata[20],    20_calldata[19] == 25_calldata[19],    20_calldata[18] == 25_calldata[18],    20_calldata[17] == 25_calldata[17],    20_calldata[16] == 25_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1273"}, {"arrows": "to", "from": "1272", "label": "And(Extract(7, 0, caller20) == 25_calldata[35],    Extract(15, 8, caller20) == 25_calldata[34],    Extract(23, 16, caller20) == 25_calldata[33],    Extract(31, 24, caller20) == 25_calldata[32],    Extract(39, 32, caller20) == 25_calldata[31],    Extract(47, 40, caller20) == 25_calldata[30],    Extract(55, 48, caller20) == 25_calldata[29],    Extract(63, 56, caller20) == 25_calldata[28],    Extract(71, 64, caller20) == 25_calldata[27],    Extract(79, 72, caller20) == 25_calldata[26],    Extract(87, 80, caller20) == 25_calldata[25],    Extract(95, 88, caller20) == 25_calldata[24],    Extract(0x67, 96, caller20) == 25_calldata[23],    Extract(0x6f, 0x68, caller20) == 25_calldata[22],    Extract(0x77, 0x70, caller20) == 25_calldata[21],    Extract(0x7f, 0x78, caller20) == 25_calldata[20],    Extract(0x87, 0x80, caller20) == 25_calldata[19],    Extract(0x8f, 0x88, caller20) == 25_calldata[18],    Extract(0x97, 0x90, caller20) == 25_calldata[17],    Extract(0x9f, 0x98, caller20) == 25_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1274"}, {"arrows": "to", "from": "1272", "label": "And(Extract(7, 0, caller25) == 25_calldata[35],    Extract(15, 8, caller25) == 25_calldata[34],    Extract(23, 16, caller25) == 25_calldata[33],    Extract(31, 24, caller25) == 25_calldata[32],    Extract(39, 32, caller25) == 25_calldata[31],    Extract(47, 40, caller25) == 25_calldata[30],    Extract(55, 48, caller25) == 25_calldata[29],    Extract(63, 56, caller25) == 25_calldata[28],    Extract(71, 64, caller25) == 25_calldata[27],    Extract(79, 72, caller25) == 25_calldata[26],    Extract(87, 80, caller25) == 25_calldata[25],    Extract(95, 88, caller25) == 25_calldata[24],    Extract(0x67, 96, caller25) == 25_calldata[23],    Extract(0x6f, 0x68, caller25) == 25_calldata[22],    Extract(0x77, 0x70, caller25) == 25_calldata[21],    Extract(0x7f, 0x78, caller25) == 25_calldata[20],    Extract(0x87, 0x80, caller25) == 25_calldata[19],    Extract(0x8f, 0x88, caller25) == 25_calldata[18],    Extract(0x97, 0x90, caller25) == 25_calldata[17],    Extract(0x9f, 0x98, caller25) == 25_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1275"}, {"arrows": "to", "from": "1272", "label": "Or(Not(And(20_calldata[35] == 25_calldata[35],           20_calldata[34] == 25_calldata[34],           20_calldata[33] == 25_calldata[33],           20_calldata[32] == 25_calldata[32],           20_calldata[31] == 25_calldata[31],           20_calldata[30] == 25_calldata[30],           20_calldata[29] == 25_calldata[29],           20_calldata[28] == 25_calldata[28],           20_calldata[27] == 25_calldata[27],           20_calldata[26] == 25_calldata[26],           20_calldata[25] == 25_calldata[25],           20_calldata[24] == 25_calldata[24],           20_calldata[23] == 25_calldata[23],           20_calldata[22] == 25_calldata[22],           20_calldata[21] == 25_calldata[21],           20_calldata[20] == 25_calldata[20],           20_calldata[19] == 25_calldata[19],           20_calldata[18] == 25_calldata[18],           20_calldata[17] == 25_calldata[17],           20_calldata[16] == 25_calldata[16])),   Not(And(Extract(7, 0, caller20) == 25_calldata[35],           Extract(15, 8, caller20) == 25_calldata[34],           Extract(23, 16, caller20) == 25_calldata[33],           Extract(31, 24, caller20) == 25_calldata[32],           Extract(39, 32, caller20) == 25_calldata[31],           Extract(47, 40, caller20) == 25_calldata[30],           Extract(55, 48, caller20) == 25_calldata[29],           Extract(63, 56, caller20) == 25_calldata[28],           Extract(71, 64, caller20) == 25_calldata[27],           Extract(79, 72, caller20) == 25_calldata[26],           Extract(87, 80, caller20) == 25_calldata[25],           Extract(95, 88, caller20) == 25_calldata[24],           Extract(0x67, 96, caller20) == 25_calldata[23],           Extract(0x6f, 0x68, caller20) == 25_calldata[22],           Extract(0x77, 0x70, caller20) == 25_calldata[21],           Extract(0x7f, 0x78, caller20) == 25_calldata[20],           Extract(0x87, 0x80, caller20) == 25_calldata[19],           Extract(0x8f, 0x88, caller20) == 25_calldata[18],           Extract(0x97, 0x90, caller20) == 25_calldata[17],           Extract(0x9f, 0x98, caller20) == 25_calldata[16])),   Not(And(Extract(7, 0, caller25) == 25_calldata[35],           Extract(15, 8, caller25) == 25_calldata[34],           Extract(23, 16, caller25) == 25_calldata[33],           Extract(31, 24, caller25) == 25_calldata[32],           Extract(39, 32, caller25) == 25_calldata[31],           Extract(47, 40, caller25) == 25_calldata[30],           Extract(55, 48, caller25) == 25_calldata[29],           Extract(63, 56, caller25) == 25_calldata[28],           Extract(71, 64, caller25) == 25_calldata[27],           Extract(79, 72, caller25) == 25_calldata[26],           Extract(87, 80, caller25) == 25_calldata[25],           Extract(95, 88, caller25) == 25_calldata[24],           Extract(0x67, 96, caller25) == 25_calldata[23],           Extract(0x6f, 0x68, caller25) == 25_calldata[22],           Extract(0x77, 0x70, caller25) == 25_calldata[21],           Extract(0x7f, 0x78, caller25) == 25_calldata[20],           Extract(0x87, 0x80, caller25) == 25_calldata[19],           Extract(0x8f, 0x88, caller25) == 25_calldata[18],           Extract(0x97, 0x90, caller25) == 25_calldata[17],           Extract(0x9f, 0x98, caller25) == 25_calldata[16])))", "smooth": {"type": "cubicBezier"}, "to": "1276"}, {"arrows": "to", "from": "1276", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1277"}, {"arrows": "to", "from": "1275", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1278"}, {"arrows": "to", "from": "1274", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1279"}, {"arrows": "to", "from": "1273", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1280"}, {"arrows": "to", "from": "1271", "label": "And(20_calldata[35] == 25_calldata[35],    20_calldata[34] == 25_calldata[34],    20_calldata[33] == 25_calldata[33],    20_calldata[32] == 25_calldata[32],    20_calldata[31] == 25_calldata[31],    20_calldata[30] == 25_calldata[30],    20_calldata[29] == 25_calldata[29],    20_calldata[28] == 25_calldata[28],    20_calldata[27] == 25_calldata[27],    20_calldata[26] == 25_calldata[26],    20_calldata[25] == 25_calldata[25],    20_calldata[24] == 25_calldata[24],    20_calldata[23] == 25_calldata[23],    20_calldata[22] == 25_calldata[22],    20_calldata[21] == 25_calldata[21],    20_calldata[20] == 25_calldata[20],    20_calldata[19] == 25_calldata[19],    20_calldata[18] == 25_calldata[18],    20_calldata[17] == 25_calldata[17],    20_calldata[16] == 25_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1281"}, {"arrows": "to", "from": "1271", "label": "And(Extract(7, 0, caller20) == 25_calldata[35],    Extract(15, 8, caller20) == 25_calldata[34],    Extract(23, 16, caller20) == 25_calldata[33],    Extract(31, 24, caller20) == 25_calldata[32],    Extract(39, 32, caller20) == 25_calldata[31],    Extract(47, 40, caller20) == 25_calldata[30],    Extract(55, 48, caller20) == 25_calldata[29],    Extract(63, 56, caller20) == 25_calldata[28],    Extract(71, 64, caller20) == 25_calldata[27],    Extract(79, 72, caller20) == 25_calldata[26],    Extract(87, 80, caller20) == 25_calldata[25],    Extract(95, 88, caller20) == 25_calldata[24],    Extract(0x67, 96, caller20) == 25_calldata[23],    Extract(0x6f, 0x68, caller20) == 25_calldata[22],    Extract(0x77, 0x70, caller20) == 25_calldata[21],    Extract(0x7f, 0x78, caller20) == 25_calldata[20],    Extract(0x87, 0x80, caller20) == 25_calldata[19],    Extract(0x8f, 0x88, caller20) == 25_calldata[18],    Extract(0x97, 0x90, caller20) == 25_calldata[17],    Extract(0x9f, 0x98, caller20) == 25_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1282"}, {"arrows": "to", "from": "1271", "label": "And(Extract(7, 0, caller25) == 25_calldata[35],    Extract(15, 8, caller25) == 25_calldata[34],    Extract(23, 16, caller25) == 25_calldata[33],    Extract(31, 24, caller25) == 25_calldata[32],    Extract(39, 32, caller25) == 25_calldata[31],    Extract(47, 40, caller25) == 25_calldata[30],    Extract(55, 48, caller25) == 25_calldata[29],    Extract(63, 56, caller25) == 25_calldata[28],    Extract(71, 64, caller25) == 25_calldata[27],    Extract(79, 72, caller25) == 25_calldata[26],    Extract(87, 80, caller25) == 25_calldata[25],    Extract(95, 88, caller25) == 25_calldata[24],    Extract(0x67, 96, caller25) == 25_calldata[23],    Extract(0x6f, 0x68, caller25) == 25_calldata[22],    Extract(0x77, 0x70, caller25) == 25_calldata[21],    Extract(0x7f, 0x78, caller25) == 25_calldata[20],    Extract(0x87, 0x80, caller25) == 25_calldata[19],    Extract(0x8f, 0x88, caller25) == 25_calldata[18],    Extract(0x97, 0x90, caller25) == 25_calldata[17],    Extract(0x9f, 0x98, caller25) == 25_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1283"}, {"arrows": "to", "from": "1271", "label": "Or(Not(And(20_calldata[35] == 25_calldata[35],           20_calldata[34] == 25_calldata[34],           20_calldata[33] == 25_calldata[33],           20_calldata[32] == 25_calldata[32],           20_calldata[31] == 25_calldata[31],           20_calldata[30] == 25_calldata[30],           20_calldata[29] == 25_calldata[29],           20_calldata[28] == 25_calldata[28],           20_calldata[27] == 25_calldata[27],           20_calldata[26] == 25_calldata[26],           20_calldata[25] == 25_calldata[25],           20_calldata[24] == 25_calldata[24],           20_calldata[23] == 25_calldata[23],           20_calldata[22] == 25_calldata[22],           20_calldata[21] == 25_calldata[21],           20_calldata[20] == 25_calldata[20],           20_calldata[19] == 25_calldata[19],           20_calldata[18] == 25_calldata[18],           20_calldata[17] == 25_calldata[17],           20_calldata[16] == 25_calldata[16])),   Not(And(Extract(7, 0, caller20) == 25_calldata[35],           Extract(15, 8, caller20) == 25_calldata[34],           Extract(23, 16, caller20) == 25_calldata[33],           Extract(31, 24, caller20) == 25_calldata[32],           Extract(39, 32, caller20) == 25_calldata[31],           Extract(47, 40, caller20) == 25_calldata[30],           Extract(55, 48, caller20) == 25_calldata[29],           Extract(63, 56, caller20) == 25_calldata[28],           Extract(71, 64, caller20) == 25_calldata[27],           Extract(79, 72, caller20) == 25_calldata[26],           Extract(87, 80, caller20) == 25_calldata[25],           Extract(95, 88, caller20) == 25_calldata[24],           Extract(0x67, 96, caller20) == 25_calldata[23],           Extract(0x6f, 0x68, caller20) == 25_calldata[22],           Extract(0x77, 0x70, caller20) == 25_calldata[21],           Extract(0x7f, 0x78, caller20) == 25_calldata[20],           Extract(0x87, 0x80, caller20) == 25_calldata[19],           Extract(0x8f, 0x88, caller20) == 25_calldata[18],           Extract(0x97, 0x90, caller20) == 25_calldata[17],           Extract(0x9f, 0x98, caller20) == 25_calldata[16])),   Not(And(Extract(7, 0, caller25) == 25_calldata[35],           Extract(15, 8, caller25) == 25_calldata[34],           Extract(23, 16, caller25) == 25_calldata[33],           Extract(31, 24, caller25) == 25_calldata[32],           Extract(39, 32, caller25) == 25_calldata[31],           Extract(47, 40, caller25) == 25_calldata[30],           Extract(55, 48, caller25) == 25_calldata[29],           Extract(63, 56, caller25) == 25_calldata[28],           Extract(71, 64, caller25) == 25_calldata[27],           Extract(79, 72, caller25) == 25_calldata[26],           Extract(87, 80, caller25) == 25_calldata[25],           Extract(95, 88, caller25) == 25_calldata[24],           Extract(0x67, 96, caller25) == 25_calldata[23],           Extract(0x6f, 0x68, caller25) == 25_calldata[22],           Extract(0x77, 0x70, caller25) == 25_calldata[21],           Extract(0x7f, 0x78, caller25) == 25_calldata[20],           Extract(0x87, 0x80, caller25) == 25_calldata[19],           Extract(0x8f, 0x88, caller25) == 25_calldata[18],           Extract(0x97, 0x90, caller25) == 25_calldata[17],           Extract(0x9f, 0x98, caller25) == 25_calldata[16])))", "smooth": {"type": "cubicBezier"}, "to": "1284"}, {"arrows": "to", "from": "1284", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1285"}, {"arrows": "to", "from": "1283", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1286"}, {"arrows": "to", "from": "1282", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1287"}, {"arrows": "to", "from": "1281", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1288"}, {"arrows": "to", "from": "1270", "label": "And(20_calldata[35] == 25_calldata[35],    20_calldata[34] == 25_calldata[34],    20_calldata[33] == 25_calldata[33],    20_calldata[32] == 25_calldata[32],    20_calldata[31] == 25_calldata[31],    20_calldata[30] == 25_calldata[30],    20_calldata[29] == 25_calldata[29],    20_calldata[28] == 25_calldata[28],    20_calldata[27] == 25_calldata[27],    20_calldata[26] == 25_calldata[26],    20_calldata[25] == 25_calldata[25],    20_calldata[24] == 25_calldata[24],    20_calldata[23] == 25_calldata[23],    20_calldata[22] == 25_calldata[22],    20_calldata[21] == 25_calldata[21],    20_calldata[20] == 25_calldata[20],    20_calldata[19] == 25_calldata[19],    20_calldata[18] == 25_calldata[18],    20_calldata[17] == 25_calldata[17],    20_calldata[16] == 25_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1289"}, {"arrows": "to", "from": "1270", "label": "And(Extract(7, 0, caller20) == 25_calldata[35],    Extract(15, 8, caller20) == 25_calldata[34],    Extract(23, 16, caller20) == 25_calldata[33],    Extract(31, 24, caller20) == 25_calldata[32],    Extract(39, 32, caller20) == 25_calldata[31],    Extract(47, 40, caller20) == 25_calldata[30],    Extract(55, 48, caller20) == 25_calldata[29],    Extract(63, 56, caller20) == 25_calldata[28],    Extract(71, 64, caller20) == 25_calldata[27],    Extract(79, 72, caller20) == 25_calldata[26],    Extract(87, 80, caller20) == 25_calldata[25],    Extract(95, 88, caller20) == 25_calldata[24],    Extract(0x67, 96, caller20) == 25_calldata[23],    Extract(0x6f, 0x68, caller20) == 25_calldata[22],    Extract(0x77, 0x70, caller20) == 25_calldata[21],    Extract(0x7f, 0x78, caller20) == 25_calldata[20],    Extract(0x87, 0x80, caller20) == 25_calldata[19],    Extract(0x8f, 0x88, caller20) == 25_calldata[18],    Extract(0x97, 0x90, caller20) == 25_calldata[17],    Extract(0x9f, 0x98, caller20) == 25_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1290"}, {"arrows": "to", "from": "1270", "label": "And(Extract(7, 0, caller25) == 25_calldata[35],    Extract(15, 8, caller25) == 25_calldata[34],    Extract(23, 16, caller25) == 25_calldata[33],    Extract(31, 24, caller25) == 25_calldata[32],    Extract(39, 32, caller25) == 25_calldata[31],    Extract(47, 40, caller25) == 25_calldata[30],    Extract(55, 48, caller25) == 25_calldata[29],    Extract(63, 56, caller25) == 25_calldata[28],    Extract(71, 64, caller25) == 25_calldata[27],    Extract(79, 72, caller25) == 25_calldata[26],    Extract(87, 80, caller25) == 25_calldata[25],    Extract(95, 88, caller25) == 25_calldata[24],    Extract(0x67, 96, caller25) == 25_calldata[23],    Extract(0x6f, 0x68, caller25) == 25_calldata[22],    Extract(0x77, 0x70, caller25) == 25_calldata[21],    Extract(0x7f, 0x78, caller25) == 25_calldata[20],    Extract(0x87, 0x80, caller25) == 25_calldata[19],    Extract(0x8f, 0x88, caller25) == 25_calldata[18],    Extract(0x97, 0x90, caller25) == 25_calldata[17],    Extract(0x9f, 0x98, caller25) == 25_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1291"}, {"arrows": "to", "from": "1270", "label": "Or(Not(And(20_calldata[35] == 25_calldata[35],           20_calldata[34] == 25_calldata[34],           20_calldata[33] == 25_calldata[33],           20_calldata[32] == 25_calldata[32],           20_calldata[31] == 25_calldata[31],           20_calldata[30] == 25_calldata[30],           20_calldata[29] == 25_calldata[29],           20_calldata[28] == 25_calldata[28],           20_calldata[27] == 25_calldata[27],           20_calldata[26] == 25_calldata[26],           20_calldata[25] == 25_calldata[25],           20_calldata[24] == 25_calldata[24],           20_calldata[23] == 25_calldata[23],           20_calldata[22] == 25_calldata[22],           20_calldata[21] == 25_calldata[21],           20_calldata[20] == 25_calldata[20],           20_calldata[19] == 25_calldata[19],           20_calldata[18] == 25_calldata[18],           20_calldata[17] == 25_calldata[17],           20_calldata[16] == 25_calldata[16])),   Not(And(Extract(7, 0, caller20) == 25_calldata[35],           Extract(15, 8, caller20) == 25_calldata[34],           Extract(23, 16, caller20) == 25_calldata[33],           Extract(31, 24, caller20) == 25_calldata[32],           Extract(39, 32, caller20) == 25_calldata[31],           Extract(47, 40, caller20) == 25_calldata[30],           Extract(55, 48, caller20) == 25_calldata[29],           Extract(63, 56, caller20) == 25_calldata[28],           Extract(71, 64, caller20) == 25_calldata[27],           Extract(79, 72, caller20) == 25_calldata[26],           Extract(87, 80, caller20) == 25_calldata[25],           Extract(95, 88, caller20) == 25_calldata[24],           Extract(0x67, 96, caller20) == 25_calldata[23],           Extract(0x6f, 0x68, caller20) == 25_calldata[22],           Extract(0x77, 0x70, caller20) == 25_calldata[21],           Extract(0x7f, 0x78, caller20) == 25_calldata[20],           Extract(0x87, 0x80, caller20) == 25_calldata[19],           Extract(0x8f, 0x88, caller20) == 25_calldata[18],           Extract(0x97, 0x90, caller20) == 25_calldata[17],           Extract(0x9f, 0x98, caller20) == 25_calldata[16])),   Not(And(Extract(7, 0, caller25) == 25_calldata[35],           Extract(15, 8, caller25) == 25_calldata[34],           Extract(23, 16, caller25) == 25_calldata[33],           Extract(31, 24, caller25) == 25_calldata[32],           Extract(39, 32, caller25) == 25_calldata[31],           Extract(47, 40, caller25) == 25_calldata[30],           Extract(55, 48, caller25) == 25_calldata[29],           Extract(63, 56, caller25) == 25_calldata[28],           Extract(71, 64, caller25) == 25_calldata[27],           Extract(79, 72, caller25) == 25_calldata[26],           Extract(87, 80, caller25) == 25_calldata[25],           Extract(95, 88, caller25) == 25_calldata[24],           Extract(0x67, 96, caller25) == 25_calldata[23],           Extract(0x6f, 0x68, caller25) == 25_calldata[22],           Extract(0x77, 0x70, caller25) == 25_calldata[21],           Extract(0x7f, 0x78, caller25) == 25_calldata[20],           Extract(0x87, 0x80, caller25) == 25_calldata[19],           Extract(0x8f, 0x88, caller25) == 25_calldata[18],           Extract(0x97, 0x90, caller25) == 25_calldata[17],           Extract(0x9f, 0x98, caller25) == 25_calldata[16])))", "smooth": {"type": "cubicBezier"}, "to": "1292"}, {"arrows": "to", "from": "1292", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1293"}, {"arrows": "to", "from": "1291", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1294"}, {"arrows": "to", "from": "1290", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1295"}, {"arrows": "to", "from": "1289", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1296"}, {"arrows": "to", "from": "1268", "label": "And(20_calldata[35] == 25_calldata[35],    20_calldata[34] == 25_calldata[34],    20_calldata[33] == 25_calldata[33],    20_calldata[32] == 25_calldata[32],    20_calldata[31] == 25_calldata[31],    20_calldata[30] == 25_calldata[30],    20_calldata[29] == 25_calldata[29],    20_calldata[28] == 25_calldata[28],    20_calldata[27] == 25_calldata[27],    20_calldata[26] == 25_calldata[26],    20_calldata[25] == 25_calldata[25],    20_calldata[24] == 25_calldata[24],    20_calldata[23] == 25_calldata[23],    20_calldata[22] == 25_calldata[22],    20_calldata[21] == 25_calldata[21],    20_calldata[20] == 25_calldata[20],    20_calldata[19] == 25_calldata[19],    20_calldata[18] == 25_calldata[18],    20_calldata[17] == 25_calldata[17],    20_calldata[16] == 25_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1297"}, {"arrows": "to", "from": "1268", "label": "And(Extract(7, 0, caller20) == 25_calldata[35],    Extract(15, 8, caller20) == 25_calldata[34],    Extract(23, 16, caller20) == 25_calldata[33],    Extract(31, 24, caller20) == 25_calldata[32],    Extract(39, 32, caller20) == 25_calldata[31],    Extract(47, 40, caller20) == 25_calldata[30],    Extract(55, 48, caller20) == 25_calldata[29],    Extract(63, 56, caller20) == 25_calldata[28],    Extract(71, 64, caller20) == 25_calldata[27],    Extract(79, 72, caller20) == 25_calldata[26],    Extract(87, 80, caller20) == 25_calldata[25],    Extract(95, 88, caller20) == 25_calldata[24],    Extract(0x67, 96, caller20) == 25_calldata[23],    Extract(0x6f, 0x68, caller20) == 25_calldata[22],    Extract(0x77, 0x70, caller20) == 25_calldata[21],    Extract(0x7f, 0x78, caller20) == 25_calldata[20],    Extract(0x87, 0x80, caller20) == 25_calldata[19],    Extract(0x8f, 0x88, caller20) == 25_calldata[18],    Extract(0x97, 0x90, caller20) == 25_calldata[17],    Extract(0x9f, 0x98, caller20) == 25_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1298"}, {"arrows": "to", "from": "1298", "label": "And(20_calldata[35] == 25_calldata[35],    20_calldata[34] == 25_calldata[34],    20_calldata[33] == 25_calldata[33],    20_calldata[32] == 25_calldata[32],    20_calldata[31] == 25_calldata[31],    20_calldata[30] == 25_calldata[30],    20_calldata[29] == 25_calldata[29],    20_calldata[28] == 25_calldata[28],    20_calldata[27] == 25_calldata[27],    20_calldata[26] == 25_calldata[26],    20_calldata[25] == 25_calldata[25],    20_calldata[24] == 25_calldata[24],    20_calldata[23] == 25_calldata[23],    20_calldata[22] == 25_calldata[22],    20_calldata[21] == 25_calldata[21],    20_calldata[20] == 25_calldata[20],    20_calldata[19] == 25_calldata[19],    20_calldata[18] == 25_calldata[18],    20_calldata[17] == 25_calldata[17],    20_calldata[16] == 25_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1299"}, {"arrows": "to", "from": "1298", "label": "And(Extract(7, 0, caller20) == 25_calldata[35],    Extract(15, 8, caller20) == 25_calldata[34],    Extract(23, 16, caller20) == 25_calldata[33],    Extract(31, 24, caller20) == 25_calldata[32],    Extract(39, 32, caller20) == 25_calldata[31],    Extract(47, 40, caller20) == 25_calldata[30],    Extract(55, 48, caller20) == 25_calldata[29],    Extract(63, 56, caller20) == 25_calldata[28],    Extract(71, 64, caller20) == 25_calldata[27],    Extract(79, 72, caller20) == 25_calldata[26],    Extract(87, 80, caller20) == 25_calldata[25],    Extract(95, 88, caller20) == 25_calldata[24],    Extract(0x67, 96, caller20) == 25_calldata[23],    Extract(0x6f, 0x68, caller20) == 25_calldata[22],    Extract(0x77, 0x70, caller20) == 25_calldata[21],    Extract(0x7f, 0x78, caller20) == 25_calldata[20],    Extract(0x87, 0x80, caller20) == 25_calldata[19],    Extract(0x8f, 0x88, caller20) == 25_calldata[18],    Extract(0x97, 0x90, caller20) == 25_calldata[17],    Extract(0x9f, 0x98, caller20) == 25_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1300"}, {"arrows": "to", "from": "1298", "label": "Or(Not(And(20_calldata[35] == 25_calldata[35],           20_calldata[34] == 25_calldata[34],           20_calldata[33] == 25_calldata[33],           20_calldata[32] == 25_calldata[32],           20_calldata[31] == 25_calldata[31],           20_calldata[30] == 25_calldata[30],           20_calldata[29] == 25_calldata[29],           20_calldata[28] == 25_calldata[28],           20_calldata[27] == 25_calldata[27],           20_calldata[26] == 25_calldata[26],           20_calldata[25] == 25_calldata[25],           20_calldata[24] == 25_calldata[24],           20_calldata[23] == 25_calldata[23],           20_calldata[22] == 25_calldata[22],           20_calldata[21] == 25_calldata[21],           20_calldata[20] == 25_calldata[20],           20_calldata[19] == 25_calldata[19],           20_calldata[18] == 25_calldata[18],           20_calldata[17] == 25_calldata[17],           20_calldata[16] == 25_calldata[16])),   Not(And(Extract(7, 0, caller20) == 25_calldata[35],           Extract(15, 8, caller20) == 25_calldata[34],           Extract(23, 16, caller20) == 25_calldata[33],           Extract(31, 24, caller20) == 25_calldata[32],           Extract(39, 32, caller20) == 25_calldata[31],           Extract(47, 40, caller20) == 25_calldata[30],           Extract(55, 48, caller20) == 25_calldata[29],           Extract(63, 56, caller20) == 25_calldata[28],           Extract(71, 64, caller20) == 25_calldata[27],           Extract(79, 72, caller20) == 25_calldata[26],           Extract(87, 80, caller20) == 25_calldata[25],           Extract(95, 88, caller20) == 25_calldata[24],           Extract(0x67, 96, caller20) == 25_calldata[23],           Extract(0x6f, 0x68, caller20) == 25_calldata[22],           Extract(0x77, 0x70, caller20) == 25_calldata[21],           Extract(0x7f, 0x78, caller20) == 25_calldata[20],           Extract(0x87, 0x80, caller20) == 25_calldata[19],           Extract(0x8f, 0x88, caller20) == 25_calldata[18],           Extract(0x97, 0x90, caller20) == 25_calldata[17],           Extract(0x9f, 0x98, caller20) == 25_calldata[16])))", "smooth": {"type": "cubicBezier"}, "to": "1301"}, {"arrows": "to", "from": "1301", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1302"}, {"arrows": "to", "from": "1300", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1303"}, {"arrows": "to", "from": "1299", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1304"}, {"arrows": "to", "from": "1297", "label": "And(20_calldata[35] == 25_calldata[35],    20_calldata[34] == 25_calldata[34],    20_calldata[33] == 25_calldata[33],    20_calldata[32] == 25_calldata[32],    20_calldata[31] == 25_calldata[31],    20_calldata[30] == 25_calldata[30],    20_calldata[29] == 25_calldata[29],    20_calldata[28] == 25_calldata[28],    20_calldata[27] == 25_calldata[27],    20_calldata[26] == 25_calldata[26],    20_calldata[25] == 25_calldata[25],    20_calldata[24] == 25_calldata[24],    20_calldata[23] == 25_calldata[23],    20_calldata[22] == 25_calldata[22],    20_calldata[21] == 25_calldata[21],    20_calldata[20] == 25_calldata[20],    20_calldata[19] == 25_calldata[19],    20_calldata[18] == 25_calldata[18],    20_calldata[17] == 25_calldata[17],    20_calldata[16] == 25_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1305"}, {"arrows": "to", "from": "1297", "label": "And(Extract(7, 0, caller20) == 25_calldata[35],    Extract(15, 8, caller20) == 25_calldata[34],    Extract(23, 16, caller20) == 25_calldata[33],    Extract(31, 24, caller20) == 25_calldata[32],    Extract(39, 32, caller20) == 25_calldata[31],    Extract(47, 40, caller20) == 25_calldata[30],    Extract(55, 48, caller20) == 25_calldata[29],    Extract(63, 56, caller20) == 25_calldata[28],    Extract(71, 64, caller20) == 25_calldata[27],    Extract(79, 72, caller20) == 25_calldata[26],    Extract(87, 80, caller20) == 25_calldata[25],    Extract(95, 88, caller20) == 25_calldata[24],    Extract(0x67, 96, caller20) == 25_calldata[23],    Extract(0x6f, 0x68, caller20) == 25_calldata[22],    Extract(0x77, 0x70, caller20) == 25_calldata[21],    Extract(0x7f, 0x78, caller20) == 25_calldata[20],    Extract(0x87, 0x80, caller20) == 25_calldata[19],    Extract(0x8f, 0x88, caller20) == 25_calldata[18],    Extract(0x97, 0x90, caller20) == 25_calldata[17],    Extract(0x9f, 0x98, caller20) == 25_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1306"}, {"arrows": "to", "from": "1297", "label": "Or(Not(And(20_calldata[35] == 25_calldata[35],           20_calldata[34] == 25_calldata[34],           20_calldata[33] == 25_calldata[33],           20_calldata[32] == 25_calldata[32],           20_calldata[31] == 25_calldata[31],           20_calldata[30] == 25_calldata[30],           20_calldata[29] == 25_calldata[29],           20_calldata[28] == 25_calldata[28],           20_calldata[27] == 25_calldata[27],           20_calldata[26] == 25_calldata[26],           20_calldata[25] == 25_calldata[25],           20_calldata[24] == 25_calldata[24],           20_calldata[23] == 25_calldata[23],           20_calldata[22] == 25_calldata[22],           20_calldata[21] == 25_calldata[21],           20_calldata[20] == 25_calldata[20],           20_calldata[19] == 25_calldata[19],           20_calldata[18] == 25_calldata[18],           20_calldata[17] == 25_calldata[17],           20_calldata[16] == 25_calldata[16])),   Not(And(Extract(7, 0, caller20) == 25_calldata[35],           Extract(15, 8, caller20) == 25_calldata[34],           Extract(23, 16, caller20) == 25_calldata[33],           Extract(31, 24, caller20) == 25_calldata[32],           Extract(39, 32, caller20) == 25_calldata[31],           Extract(47, 40, caller20) == 25_calldata[30],           Extract(55, 48, caller20) == 25_calldata[29],           Extract(63, 56, caller20) == 25_calldata[28],           Extract(71, 64, caller20) == 25_calldata[27],           Extract(79, 72, caller20) == 25_calldata[26],           Extract(87, 80, caller20) == 25_calldata[25],           Extract(95, 88, caller20) == 25_calldata[24],           Extract(0x67, 96, caller20) == 25_calldata[23],           Extract(0x6f, 0x68, caller20) == 25_calldata[22],           Extract(0x77, 0x70, caller20) == 25_calldata[21],           Extract(0x7f, 0x78, caller20) == 25_calldata[20],           Extract(0x87, 0x80, caller20) == 25_calldata[19],           Extract(0x8f, 0x88, caller20) == 25_calldata[18],           Extract(0x97, 0x90, caller20) == 25_calldata[17],           Extract(0x9f, 0x98, caller20) == 25_calldata[16])))", "smooth": {"type": "cubicBezier"}, "to": "1307"}, {"arrows": "to", "from": "1307", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1308"}, {"arrows": "to", "from": "1306", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1309"}, {"arrows": "to", "from": "1305", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1310"}, {"arrows": "to", "from": "1267", "label": "And(20_calldata[35] == 25_calldata[35],    20_calldata[34] == 25_calldata[34],    20_calldata[33] == 25_calldata[33],    20_calldata[32] == 25_calldata[32],    20_calldata[31] == 25_calldata[31],    20_calldata[30] == 25_calldata[30],    20_calldata[29] == 25_calldata[29],    20_calldata[28] == 25_calldata[28],    20_calldata[27] == 25_calldata[27],    20_calldata[26] == 25_calldata[26],    20_calldata[25] == 25_calldata[25],    20_calldata[24] == 25_calldata[24],    20_calldata[23] == 25_calldata[23],    20_calldata[22] == 25_calldata[22],    20_calldata[21] == 25_calldata[21],    20_calldata[20] == 25_calldata[20],    20_calldata[19] == 25_calldata[19],    20_calldata[18] == 25_calldata[18],    20_calldata[17] == 25_calldata[17],    20_calldata[16] == 25_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1311"}, {"arrows": "to", "from": "1267", "label": "And(Extract(7, 0, caller20) == 25_calldata[35],    Extract(15, 8, caller20) == 25_calldata[34],    Extract(23, 16, caller20) == 25_calldata[33],    Extract(31, 24, caller20) == 25_calldata[32],    Extract(39, 32, caller20) == 25_calldata[31],    Extract(47, 40, caller20) == 25_calldata[30],    Extract(55, 48, caller20) == 25_calldata[29],    Extract(63, 56, caller20) == 25_calldata[28],    Extract(71, 64, caller20) == 25_calldata[27],    Extract(79, 72, caller20) == 25_calldata[26],    Extract(87, 80, caller20) == 25_calldata[25],    Extract(95, 88, caller20) == 25_calldata[24],    Extract(0x67, 96, caller20) == 25_calldata[23],    Extract(0x6f, 0x68, caller20) == 25_calldata[22],    Extract(0x77, 0x70, caller20) == 25_calldata[21],    Extract(0x7f, 0x78, caller20) == 25_calldata[20],    Extract(0x87, 0x80, caller20) == 25_calldata[19],    Extract(0x8f, 0x88, caller20) == 25_calldata[18],    Extract(0x97, 0x90, caller20) == 25_calldata[17],    Extract(0x9f, 0x98, caller20) == 25_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1312"}, {"arrows": "to", "from": "1312", "label": "And(20_calldata[35] == 25_calldata[35],    20_calldata[34] == 25_calldata[34],    20_calldata[33] == 25_calldata[33],    20_calldata[32] == 25_calldata[32],    20_calldata[31] == 25_calldata[31],    20_calldata[30] == 25_calldata[30],    20_calldata[29] == 25_calldata[29],    20_calldata[28] == 25_calldata[28],    20_calldata[27] == 25_calldata[27],    20_calldata[26] == 25_calldata[26],    20_calldata[25] == 25_calldata[25],    20_calldata[24] == 25_calldata[24],    20_calldata[23] == 25_calldata[23],    20_calldata[22] == 25_calldata[22],    20_calldata[21] == 25_calldata[21],    20_calldata[20] == 25_calldata[20],    20_calldata[19] == 25_calldata[19],    20_calldata[18] == 25_calldata[18],    20_calldata[17] == 25_calldata[17],    20_calldata[16] == 25_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1313"}, {"arrows": "to", "from": "1312", "label": "And(Extract(7, 0, caller20) == 25_calldata[35],    Extract(15, 8, caller20) == 25_calldata[34],    Extract(23, 16, caller20) == 25_calldata[33],    Extract(31, 24, caller20) == 25_calldata[32],    Extract(39, 32, caller20) == 25_calldata[31],    Extract(47, 40, caller20) == 25_calldata[30],    Extract(55, 48, caller20) == 25_calldata[29],    Extract(63, 56, caller20) == 25_calldata[28],    Extract(71, 64, caller20) == 25_calldata[27],    Extract(79, 72, caller20) == 25_calldata[26],    Extract(87, 80, caller20) == 25_calldata[25],    Extract(95, 88, caller20) == 25_calldata[24],    Extract(0x67, 96, caller20) == 25_calldata[23],    Extract(0x6f, 0x68, caller20) == 25_calldata[22],    Extract(0x77, 0x70, caller20) == 25_calldata[21],    Extract(0x7f, 0x78, caller20) == 25_calldata[20],    Extract(0x87, 0x80, caller20) == 25_calldata[19],    Extract(0x8f, 0x88, caller20) == 25_calldata[18],    Extract(0x97, 0x90, caller20) == 25_calldata[17],    Extract(0x9f, 0x98, caller20) == 25_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1314"}, {"arrows": "to", "from": "1312", "label": "Or(Not(And(20_calldata[35] == 25_calldata[35],           20_calldata[34] == 25_calldata[34],           20_calldata[33] == 25_calldata[33],           20_calldata[32] == 25_calldata[32],           20_calldata[31] == 25_calldata[31],           20_calldata[30] == 25_calldata[30],           20_calldata[29] == 25_calldata[29],           20_calldata[28] == 25_calldata[28],           20_calldata[27] == 25_calldata[27],           20_calldata[26] == 25_calldata[26],           20_calldata[25] == 25_calldata[25],           20_calldata[24] == 25_calldata[24],           20_calldata[23] == 25_calldata[23],           20_calldata[22] == 25_calldata[22],           20_calldata[21] == 25_calldata[21],           20_calldata[20] == 25_calldata[20],           20_calldata[19] == 25_calldata[19],           20_calldata[18] == 25_calldata[18],           20_calldata[17] == 25_calldata[17],           20_calldata[16] == 25_calldata[16])),   Not(And(Extract(7, 0, caller20) == 25_calldata[35],           Extract(15, 8, caller20) == 25_calldata[34],           Extract(23, 16, caller20) == 25_calldata[33],           Extract(31, 24, caller20) == 25_calldata[32],           Extract(39, 32, caller20) == 25_calldata[31],           Extract(47, 40, caller20) == 25_calldata[30],           Extract(55, 48, caller20) == 25_calldata[29],           Extract(63, 56, caller20) == 25_calldata[28],           Extract(71, 64, caller20) == 25_calldata[27],           Extract(79, 72, caller20) == 25_calldata[26],           Extract(87, 80, caller20) == 25_calldata[25],           Extract(95, 88, caller20) == 25_calldata[24],           Extract(0x67, 96, caller20) == 25_calldata[23],           Extract(0x6f, 0x68, caller20) == 25_calldata[22],           Extract(0x77, 0x70, caller20) == 25_calldata[21],           Extract(0x7f, 0x78, caller20) == 25_calldata[20],           Extract(0x87, 0x80, caller20) == 25_calldata[19],           Extract(0x8f, 0x88, caller20) == 25_calldata[18],           Extract(0x97, 0x90, caller20) == 25_calldata[17],           Extract(0x9f, 0x98, caller20) == 25_calldata[16])))", "smooth": {"type": "cubicBezier"}, "to": "1315"}, {"arrows": "to", "from": "1315", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1316"}, {"arrows": "to", "from": "1314", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1317"}, {"arrows": "to", "from": "1313", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1318"}, {"arrows": "to", "from": "1311", "label": "And(20_calldata[35] == 25_calldata[35],    20_calldata[34] == 25_calldata[34],    20_calldata[33] == 25_calldata[33],    20_calldata[32] == 25_calldata[32],    20_calldata[31] == 25_calldata[31],    20_calldata[30] == 25_calldata[30],    20_calldata[29] == 25_calldata[29],    20_calldata[28] == 25_calldata[28],    20_calldata[27] == 25_calldata[27],    20_calldata[26] == 25_calldata[26],    20_calldata[25] == 25_calldata[25],    20_calldata[24] == 25_calldata[24],    20_calldata[23] == 25_calldata[23],    20_calldata[22] == 25_calldata[22],    20_calldata[21] == 25_calldata[21],    20_calldata[20] == 25_calldata[20],    20_calldata[19] == 25_calldata[19],    20_calldata[18] == 25_calldata[18],    20_calldata[17] == 25_calldata[17],    20_calldata[16] == 25_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1319"}, {"arrows": "to", "from": "1311", "label": "And(Extract(7, 0, caller20) == 25_calldata[35],    Extract(15, 8, caller20) == 25_calldata[34],    Extract(23, 16, caller20) == 25_calldata[33],    Extract(31, 24, caller20) == 25_calldata[32],    Extract(39, 32, caller20) == 25_calldata[31],    Extract(47, 40, caller20) == 25_calldata[30],    Extract(55, 48, caller20) == 25_calldata[29],    Extract(63, 56, caller20) == 25_calldata[28],    Extract(71, 64, caller20) == 25_calldata[27],    Extract(79, 72, caller20) == 25_calldata[26],    Extract(87, 80, caller20) == 25_calldata[25],    Extract(95, 88, caller20) == 25_calldata[24],    Extract(0x67, 96, caller20) == 25_calldata[23],    Extract(0x6f, 0x68, caller20) == 25_calldata[22],    Extract(0x77, 0x70, caller20) == 25_calldata[21],    Extract(0x7f, 0x78, caller20) == 25_calldata[20],    Extract(0x87, 0x80, caller20) == 25_calldata[19],    Extract(0x8f, 0x88, caller20) == 25_calldata[18],    Extract(0x97, 0x90, caller20) == 25_calldata[17],    Extract(0x9f, 0x98, caller20) == 25_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1320"}, {"arrows": "to", "from": "1311", "label": "Or(Not(And(20_calldata[35] == 25_calldata[35],           20_calldata[34] == 25_calldata[34],           20_calldata[33] == 25_calldata[33],           20_calldata[32] == 25_calldata[32],           20_calldata[31] == 25_calldata[31],           20_calldata[30] == 25_calldata[30],           20_calldata[29] == 25_calldata[29],           20_calldata[28] == 25_calldata[28],           20_calldata[27] == 25_calldata[27],           20_calldata[26] == 25_calldata[26],           20_calldata[25] == 25_calldata[25],           20_calldata[24] == 25_calldata[24],           20_calldata[23] == 25_calldata[23],           20_calldata[22] == 25_calldata[22],           20_calldata[21] == 25_calldata[21],           20_calldata[20] == 25_calldata[20],           20_calldata[19] == 25_calldata[19],           20_calldata[18] == 25_calldata[18],           20_calldata[17] == 25_calldata[17],           20_calldata[16] == 25_calldata[16])),   Not(And(Extract(7, 0, caller20) == 25_calldata[35],           Extract(15, 8, caller20) == 25_calldata[34],           Extract(23, 16, caller20) == 25_calldata[33],           Extract(31, 24, caller20) == 25_calldata[32],           Extract(39, 32, caller20) == 25_calldata[31],           Extract(47, 40, caller20) == 25_calldata[30],           Extract(55, 48, caller20) == 25_calldata[29],           Extract(63, 56, caller20) == 25_calldata[28],           Extract(71, 64, caller20) == 25_calldata[27],           Extract(79, 72, caller20) == 25_calldata[26],           Extract(87, 80, caller20) == 25_calldata[25],           Extract(95, 88, caller20) == 25_calldata[24],           Extract(0x67, 96, caller20) == 25_calldata[23],           Extract(0x6f, 0x68, caller20) == 25_calldata[22],           Extract(0x77, 0x70, caller20) == 25_calldata[21],           Extract(0x7f, 0x78, caller20) == 25_calldata[20],           Extract(0x87, 0x80, caller20) == 25_calldata[19],           Extract(0x8f, 0x88, caller20) == 25_calldata[18],           Extract(0x97, 0x90, caller20) == 25_calldata[17],           Extract(0x9f, 0x98, caller20) == 25_calldata[16])))", "smooth": {"type": "cubicBezier"}, "to": "1321"}, {"arrows": "to", "from": "1321", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1322"}, {"arrows": "to", "from": "1320", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1323"}, {"arrows": "to", "from": "1319", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1324"}, {"arrows": "to", "from": "1264", "label": "True", "smooth": {"type": "cubicBezier"}, "to": "1325"}, {"arrows": "to", "from": "1325", "label": "And(20_calldata[35] == Extract(7, 0, caller25),    20_calldata[34] == Extract(15, 8, caller25),    20_calldata[33] == Extract(23, 16, caller25),    20_calldata[32] == Extract(31, 24, caller25),    20_calldata[31] == Extract(39, 32, caller25),    20_calldata[30] == Extract(47, 40, caller25),    20_calldata[29] == Extract(55, 48, caller25),    20_calldata[28] == Extract(63, 56, caller25),    20_calldata[27] == Extract(71, 64, caller25),    20_calldata[26] == Extract(79, 72, caller25),    20_calldata[25] == Extract(87, 80, caller25),    20_calldata[24] == Extract(95, 88, caller25),    20_calldata[23] == Extract(0x67, 96, caller25),    20_calldata[22] == Extract(0x6f, 0x68, caller25),    20_calldata[21] == Extract(0x77, 0x70, caller25),    20_calldata[20] == Extract(0x7f, 0x78, caller25),    20_calldata[19] == Extract(0x87, 0x80, caller25),    20_calldata[18] == Extract(0x8f, 0x88, caller25),    20_calldata[17] == Extract(0x97, 0x90, caller25),    20_calldata[16] == Extract(0x9f, 0x98, caller25))", "smooth": {"type": "cubicBezier"}, "to": "1326"}, {"arrows": "to", "from": "1325", "label": "Extract(0x9f, 0, caller20) == Extract(0x9f, 0, caller25)", "smooth": {"type": "cubicBezier"}, "to": "1327"}, {"arrows": "to", "from": "1325", "label": "Or(Not(And(20_calldata[35] == Extract(7, 0, caller25),           20_calldata[34] == Extract(15, 8, caller25),           20_calldata[33] == Extract(23, 16, caller25),           20_calldata[32] == Extract(31, 24, caller25),           20_calldata[31] == Extract(39, 32, caller25),           20_calldata[30] == Extract(47, 40, caller25),           20_calldata[29] == Extract(55, 48, caller25),           20_calldata[28] == Extract(63, 56, caller25),           20_calldata[27] == Extract(71, 64, caller25),           20_calldata[26] == Extract(79, 72, caller25),           20_calldata[25] == Extract(87, 80, caller25),           20_calldata[24] == Extract(95, 88, caller25),           20_calldata[23] == Extract(0x67, 96, caller25),           20_calldata[22] == Extract(0x6f, 0x68, caller25),           20_calldata[21] == Extract(0x77, 0x70, caller25),           20_calldata[20] == Extract(0x7f, 0x78, caller25),           20_calldata[19] == Extract(0x87, 0x80, caller25),           20_calldata[18] == Extract(0x8f, 0x88, caller25),           20_calldata[17] == Extract(0x97, 0x90, caller25),           20_calldata[16] == Extract(0x9f, 0x98, caller25))),   Not(Extract(0x9f, 0, caller20) ==       Extract(0x9f, 0, caller25)))", "smooth": {"type": "cubicBezier"}, "to": "1328"}, {"arrows": "to", "from": "1328", "label": "And(20_calldata[35] == 25_calldata[35],    20_calldata[34] == 25_calldata[34],    20_calldata[33] == 25_calldata[33],    20_calldata[32] == 25_calldata[32],    20_calldata[31] == 25_calldata[31],    20_calldata[30] == 25_calldata[30],    20_calldata[29] == 25_calldata[29],    20_calldata[28] == 25_calldata[28],    20_calldata[27] == 25_calldata[27],    20_calldata[26] == 25_calldata[26],    20_calldata[25] == 25_calldata[25],    20_calldata[24] == 25_calldata[24],    20_calldata[23] == 25_calldata[23],    20_calldata[22] == 25_calldata[22],    20_calldata[21] == 25_calldata[21],    20_calldata[20] == 25_calldata[20],    20_calldata[19] == 25_calldata[19],    20_calldata[18] == 25_calldata[18],    20_calldata[17] == 25_calldata[17],    20_calldata[16] == 25_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1329"}, {"arrows": "to", "from": "1328", "label": "And(Extract(7, 0, caller20) == 25_calldata[35],    Extract(15, 8, caller20) == 25_calldata[34],    Extract(23, 16, caller20) == 25_calldata[33],    Extract(31, 24, caller20) == 25_calldata[32],    Extract(39, 32, caller20) == 25_calldata[31],    Extract(47, 40, caller20) == 25_calldata[30],    Extract(55, 48, caller20) == 25_calldata[29],    Extract(63, 56, caller20) == 25_calldata[28],    Extract(71, 64, caller20) == 25_calldata[27],    Extract(79, 72, caller20) == 25_calldata[26],    Extract(87, 80, caller20) == 25_calldata[25],    Extract(95, 88, caller20) == 25_calldata[24],    Extract(0x67, 96, caller20) == 25_calldata[23],    Extract(0x6f, 0x68, caller20) == 25_calldata[22],    Extract(0x77, 0x70, caller20) == 25_calldata[21],    Extract(0x7f, 0x78, caller20) == 25_calldata[20],    Extract(0x87, 0x80, caller20) == 25_calldata[19],    Extract(0x8f, 0x88, caller20) == 25_calldata[18],    Extract(0x97, 0x90, caller20) == 25_calldata[17],    Extract(0x9f, 0x98, caller20) == 25_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1330"}, {"arrows": "to", "from": "1328", "label": "And(Extract(7, 0, caller25) == 25_calldata[35],    Extract(15, 8, caller25) == 25_calldata[34],    Extract(23, 16, caller25) == 25_calldata[33],    Extract(31, 24, caller25) == 25_calldata[32],    Extract(39, 32, caller25) == 25_calldata[31],    Extract(47, 40, caller25) == 25_calldata[30],    Extract(55, 48, caller25) == 25_calldata[29],    Extract(63, 56, caller25) == 25_calldata[28],    Extract(71, 64, caller25) == 25_calldata[27],    Extract(79, 72, caller25) == 25_calldata[26],    Extract(87, 80, caller25) == 25_calldata[25],    Extract(95, 88, caller25) == 25_calldata[24],    Extract(0x67, 96, caller25) == 25_calldata[23],    Extract(0x6f, 0x68, caller25) == 25_calldata[22],    Extract(0x77, 0x70, caller25) == 25_calldata[21],    Extract(0x7f, 0x78, caller25) == 25_calldata[20],    Extract(0x87, 0x80, caller25) == 25_calldata[19],    Extract(0x8f, 0x88, caller25) == 25_calldata[18],    Extract(0x97, 0x90, caller25) == 25_calldata[17],    Extract(0x9f, 0x98, caller25) == 25_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1331"}, {"arrows": "to", "from": "1331", "label": "And(20_calldata[35] == 25_calldata[35],    20_calldata[34] == 25_calldata[34],    20_calldata[33] == 25_calldata[33],    20_calldata[32] == 25_calldata[32],    20_calldata[31] == 25_calldata[31],    20_calldata[30] == 25_calldata[30],    20_calldata[29] == 25_calldata[29],    20_calldata[28] == 25_calldata[28],    20_calldata[27] == 25_calldata[27],    20_calldata[26] == 25_calldata[26],    20_calldata[25] == 25_calldata[25],    20_calldata[24] == 25_calldata[24],    20_calldata[23] == 25_calldata[23],    20_calldata[22] == 25_calldata[22],    20_calldata[21] == 25_calldata[21],    20_calldata[20] == 25_calldata[20],    20_calldata[19] == 25_calldata[19],    20_calldata[18] == 25_calldata[18],    20_calldata[17] == 25_calldata[17],    20_calldata[16] == 25_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1332"}, {"arrows": "to", "from": "1331", "label": "And(Extract(7, 0, caller20) == 25_calldata[35],    Extract(15, 8, caller20) == 25_calldata[34],    Extract(23, 16, caller20) == 25_calldata[33],    Extract(31, 24, caller20) == 25_calldata[32],    Extract(39, 32, caller20) == 25_calldata[31],    Extract(47, 40, caller20) == 25_calldata[30],    Extract(55, 48, caller20) == 25_calldata[29],    Extract(63, 56, caller20) == 25_calldata[28],    Extract(71, 64, caller20) == 25_calldata[27],    Extract(79, 72, caller20) == 25_calldata[26],    Extract(87, 80, caller20) == 25_calldata[25],    Extract(95, 88, caller20) == 25_calldata[24],    Extract(0x67, 96, caller20) == 25_calldata[23],    Extract(0x6f, 0x68, caller20) == 25_calldata[22],    Extract(0x77, 0x70, caller20) == 25_calldata[21],    Extract(0x7f, 0x78, caller20) == 25_calldata[20],    Extract(0x87, 0x80, caller20) == 25_calldata[19],    Extract(0x8f, 0x88, caller20) == 25_calldata[18],    Extract(0x97, 0x90, caller20) == 25_calldata[17],    Extract(0x9f, 0x98, caller20) == 25_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1333"}, {"arrows": "to", "from": "1331", "label": "And(Extract(7, 0, caller25) == 25_calldata[35],    Extract(15, 8, caller25) == 25_calldata[34],    Extract(23, 16, caller25) == 25_calldata[33],    Extract(31, 24, caller25) == 25_calldata[32],    Extract(39, 32, caller25) == 25_calldata[31],    Extract(47, 40, caller25) == 25_calldata[30],    Extract(55, 48, caller25) == 25_calldata[29],    Extract(63, 56, caller25) == 25_calldata[28],    Extract(71, 64, caller25) == 25_calldata[27],    Extract(79, 72, caller25) == 25_calldata[26],    Extract(87, 80, caller25) == 25_calldata[25],    Extract(95, 88, caller25) == 25_calldata[24],    Extract(0x67, 96, caller25) == 25_calldata[23],    Extract(0x6f, 0x68, caller25) == 25_calldata[22],    Extract(0x77, 0x70, caller25) == 25_calldata[21],    Extract(0x7f, 0x78, caller25) == 25_calldata[20],    Extract(0x87, 0x80, caller25) == 25_calldata[19],    Extract(0x8f, 0x88, caller25) == 25_calldata[18],    Extract(0x97, 0x90, caller25) == 25_calldata[17],    Extract(0x9f, 0x98, caller25) == 25_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1334"}, {"arrows": "to", "from": "1331", "label": "Or(Not(And(20_calldata[35] == 25_calldata[35],           20_calldata[34] == 25_calldata[34],           20_calldata[33] == 25_calldata[33],           20_calldata[32] == 25_calldata[32],           20_calldata[31] == 25_calldata[31],           20_calldata[30] == 25_calldata[30],           20_calldata[29] == 25_calldata[29],           20_calldata[28] == 25_calldata[28],           20_calldata[27] == 25_calldata[27],           20_calldata[26] == 25_calldata[26],           20_calldata[25] == 25_calldata[25],           20_calldata[24] == 25_calldata[24],           20_calldata[23] == 25_calldata[23],           20_calldata[22] == 25_calldata[22],           20_calldata[21] == 25_calldata[21],           20_calldata[20] == 25_calldata[20],           20_calldata[19] == 25_calldata[19],           20_calldata[18] == 25_calldata[18],           20_calldata[17] == 25_calldata[17],           20_calldata[16] == 25_calldata[16])),   Not(And(Extract(7, 0, caller20) == 25_calldata[35],           Extract(15, 8, caller20) == 25_calldata[34],           Extract(23, 16, caller20) == 25_calldata[33],           Extract(31, 24, caller20) == 25_calldata[32],           Extract(39, 32, caller20) == 25_calldata[31],           Extract(47, 40, caller20) == 25_calldata[30],           Extract(55, 48, caller20) == 25_calldata[29],           Extract(63, 56, caller20) == 25_calldata[28],           Extract(71, 64, caller20) == 25_calldata[27],           Extract(79, 72, caller20) == 25_calldata[26],           Extract(87, 80, caller20) == 25_calldata[25],           Extract(95, 88, caller20) == 25_calldata[24],           Extract(0x67, 96, caller20) == 25_calldata[23],           Extract(0x6f, 0x68, caller20) == 25_calldata[22],           Extract(0x77, 0x70, caller20) == 25_calldata[21],           Extract(0x7f, 0x78, caller20) == 25_calldata[20],           Extract(0x87, 0x80, caller20) == 25_calldata[19],           Extract(0x8f, 0x88, caller20) == 25_calldata[18],           Extract(0x97, 0x90, caller20) == 25_calldata[17],           Extract(0x9f, 0x98, caller20) == 25_calldata[16])),   Not(And(Extract(7, 0, caller25) == 25_calldata[35],           Extract(15, 8, caller25) == 25_calldata[34],           Extract(23, 16, caller25) == 25_calldata[33],           Extract(31, 24, caller25) == 25_calldata[32],           Extract(39, 32, caller25) == 25_calldata[31],           Extract(47, 40, caller25) == 25_calldata[30],           Extract(55, 48, caller25) == 25_calldata[29],           Extract(63, 56, caller25) == 25_calldata[28],           Extract(71, 64, caller25) == 25_calldata[27],           Extract(79, 72, caller25) == 25_calldata[26],           Extract(87, 80, caller25) == 25_calldata[25],           Extract(95, 88, caller25) == 25_calldata[24],           Extract(0x67, 96, caller25) == 25_calldata[23],           Extract(0x6f, 0x68, caller25) == 25_calldata[22],           Extract(0x77, 0x70, caller25) == 25_calldata[21],           Extract(0x7f, 0x78, caller25) == 25_calldata[20],           Extract(0x87, 0x80, caller25) == 25_calldata[19],           Extract(0x8f, 0x88, caller25) == 25_calldata[18],           Extract(0x97, 0x90, caller25) == 25_calldata[17],           Extract(0x9f, 0x98, caller25) == 25_calldata[16])))", "smooth": {"type": "cubicBezier"}, "to": "1335"}, {"arrows": "to", "from": "1335", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1336"}, {"arrows": "to", "from": "1334", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1337"}, {"arrows": "to", "from": "1333", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1338"}, {"arrows": "to", "from": "1332", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1339"}, {"arrows": "to", "from": "1330", "label": "And(20_calldata[35] == 25_calldata[35],    20_calldata[34] == 25_calldata[34],    20_calldata[33] == 25_calldata[33],    20_calldata[32] == 25_calldata[32],    20_calldata[31] == 25_calldata[31],    20_calldata[30] == 25_calldata[30],    20_calldata[29] == 25_calldata[29],    20_calldata[28] == 25_calldata[28],    20_calldata[27] == 25_calldata[27],    20_calldata[26] == 25_calldata[26],    20_calldata[25] == 25_calldata[25],    20_calldata[24] == 25_calldata[24],    20_calldata[23] == 25_calldata[23],    20_calldata[22] == 25_calldata[22],    20_calldata[21] == 25_calldata[21],    20_calldata[20] == 25_calldata[20],    20_calldata[19] == 25_calldata[19],    20_calldata[18] == 25_calldata[18],    20_calldata[17] == 25_calldata[17],    20_calldata[16] == 25_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1340"}, {"arrows": "to", "from": "1330", "label": "And(Extract(7, 0, caller20) == 25_calldata[35],    Extract(15, 8, caller20) == 25_calldata[34],    Extract(23, 16, caller20) == 25_calldata[33],    Extract(31, 24, caller20) == 25_calldata[32],    Extract(39, 32, caller20) == 25_calldata[31],    Extract(47, 40, caller20) == 25_calldata[30],    Extract(55, 48, caller20) == 25_calldata[29],    Extract(63, 56, caller20) == 25_calldata[28],    Extract(71, 64, caller20) == 25_calldata[27],    Extract(79, 72, caller20) == 25_calldata[26],    Extract(87, 80, caller20) == 25_calldata[25],    Extract(95, 88, caller20) == 25_calldata[24],    Extract(0x67, 96, caller20) == 25_calldata[23],    Extract(0x6f, 0x68, caller20) == 25_calldata[22],    Extract(0x77, 0x70, caller20) == 25_calldata[21],    Extract(0x7f, 0x78, caller20) == 25_calldata[20],    Extract(0x87, 0x80, caller20) == 25_calldata[19],    Extract(0x8f, 0x88, caller20) == 25_calldata[18],    Extract(0x97, 0x90, caller20) == 25_calldata[17],    Extract(0x9f, 0x98, caller20) == 25_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1341"}, {"arrows": "to", "from": "1330", "label": "And(Extract(7, 0, caller25) == 25_calldata[35],    Extract(15, 8, caller25) == 25_calldata[34],    Extract(23, 16, caller25) == 25_calldata[33],    Extract(31, 24, caller25) == 25_calldata[32],    Extract(39, 32, caller25) == 25_calldata[31],    Extract(47, 40, caller25) == 25_calldata[30],    Extract(55, 48, caller25) == 25_calldata[29],    Extract(63, 56, caller25) == 25_calldata[28],    Extract(71, 64, caller25) == 25_calldata[27],    Extract(79, 72, caller25) == 25_calldata[26],    Extract(87, 80, caller25) == 25_calldata[25],    Extract(95, 88, caller25) == 25_calldata[24],    Extract(0x67, 96, caller25) == 25_calldata[23],    Extract(0x6f, 0x68, caller25) == 25_calldata[22],    Extract(0x77, 0x70, caller25) == 25_calldata[21],    Extract(0x7f, 0x78, caller25) == 25_calldata[20],    Extract(0x87, 0x80, caller25) == 25_calldata[19],    Extract(0x8f, 0x88, caller25) == 25_calldata[18],    Extract(0x97, 0x90, caller25) == 25_calldata[17],    Extract(0x9f, 0x98, caller25) == 25_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1342"}, {"arrows": "to", "from": "1330", "label": "Or(Not(And(20_calldata[35] == 25_calldata[35],           20_calldata[34] == 25_calldata[34],           20_calldata[33] == 25_calldata[33],           20_calldata[32] == 25_calldata[32],           20_calldata[31] == 25_calldata[31],           20_calldata[30] == 25_calldata[30],           20_calldata[29] == 25_calldata[29],           20_calldata[28] == 25_calldata[28],           20_calldata[27] == 25_calldata[27],           20_calldata[26] == 25_calldata[26],           20_calldata[25] == 25_calldata[25],           20_calldata[24] == 25_calldata[24],           20_calldata[23] == 25_calldata[23],           20_calldata[22] == 25_calldata[22],           20_calldata[21] == 25_calldata[21],           20_calldata[20] == 25_calldata[20],           20_calldata[19] == 25_calldata[19],           20_calldata[18] == 25_calldata[18],           20_calldata[17] == 25_calldata[17],           20_calldata[16] == 25_calldata[16])),   Not(And(Extract(7, 0, caller20) == 25_calldata[35],           Extract(15, 8, caller20) == 25_calldata[34],           Extract(23, 16, caller20) == 25_calldata[33],           Extract(31, 24, caller20) == 25_calldata[32],           Extract(39, 32, caller20) == 25_calldata[31],           Extract(47, 40, caller20) == 25_calldata[30],           Extract(55, 48, caller20) == 25_calldata[29],           Extract(63, 56, caller20) == 25_calldata[28],           Extract(71, 64, caller20) == 25_calldata[27],           Extract(79, 72, caller20) == 25_calldata[26],           Extract(87, 80, caller20) == 25_calldata[25],           Extract(95, 88, caller20) == 25_calldata[24],           Extract(0x67, 96, caller20) == 25_calldata[23],           Extract(0x6f, 0x68, caller20) == 25_calldata[22],           Extract(0x77, 0x70, caller20) == 25_calldata[21],           Extract(0x7f, 0x78, caller20) == 25_calldata[20],           Extract(0x87, 0x80, caller20) == 25_calldata[19],           Extract(0x8f, 0x88, caller20) == 25_calldata[18],           Extract(0x97, 0x90, caller20) == 25_calldata[17],           Extract(0x9f, 0x98, caller20) == 25_calldata[16])),   Not(And(Extract(7, 0, caller25) == 25_calldata[35],           Extract(15, 8, caller25) == 25_calldata[34],           Extract(23, 16, caller25) == 25_calldata[33],           Extract(31, 24, caller25) == 25_calldata[32],           Extract(39, 32, caller25) == 25_calldata[31],           Extract(47, 40, caller25) == 25_calldata[30],           Extract(55, 48, caller25) == 25_calldata[29],           Extract(63, 56, caller25) == 25_calldata[28],           Extract(71, 64, caller25) == 25_calldata[27],           Extract(79, 72, caller25) == 25_calldata[26],           Extract(87, 80, caller25) == 25_calldata[25],           Extract(95, 88, caller25) == 25_calldata[24],           Extract(0x67, 96, caller25) == 25_calldata[23],           Extract(0x6f, 0x68, caller25) == 25_calldata[22],           Extract(0x77, 0x70, caller25) == 25_calldata[21],           Extract(0x7f, 0x78, caller25) == 25_calldata[20],           Extract(0x87, 0x80, caller25) == 25_calldata[19],           Extract(0x8f, 0x88, caller25) == 25_calldata[18],           Extract(0x97, 0x90, caller25) == 25_calldata[17],           Extract(0x9f, 0x98, caller25) == 25_calldata[16])))", "smooth": {"type": "cubicBezier"}, "to": "1343"}, {"arrows": "to", "from": "1343", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1344"}, {"arrows": "to", "from": "1342", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1345"}, {"arrows": "to", "from": "1341", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1346"}, {"arrows": "to", "from": "1340", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1347"}, {"arrows": "to", "from": "1329", "label": "And(20_calldata[35] == 25_calldata[35],    20_calldata[34] == 25_calldata[34],    20_calldata[33] == 25_calldata[33],    20_calldata[32] == 25_calldata[32],    20_calldata[31] == 25_calldata[31],    20_calldata[30] == 25_calldata[30],    20_calldata[29] == 25_calldata[29],    20_calldata[28] == 25_calldata[28],    20_calldata[27] == 25_calldata[27],    20_calldata[26] == 25_calldata[26],    20_calldata[25] == 25_calldata[25],    20_calldata[24] == 25_calldata[24],    20_calldata[23] == 25_calldata[23],    20_calldata[22] == 25_calldata[22],    20_calldata[21] == 25_calldata[21],    20_calldata[20] == 25_calldata[20],    20_calldata[19] == 25_calldata[19],    20_calldata[18] == 25_calldata[18],    20_calldata[17] == 25_calldata[17],    20_calldata[16] == 25_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1348"}, {"arrows": "to", "from": "1329", "label": "And(Extract(7, 0, caller20) == 25_calldata[35],    Extract(15, 8, caller20) == 25_calldata[34],    Extract(23, 16, caller20) == 25_calldata[33],    Extract(31, 24, caller20) == 25_calldata[32],    Extract(39, 32, caller20) == 25_calldata[31],    Extract(47, 40, caller20) == 25_calldata[30],    Extract(55, 48, caller20) == 25_calldata[29],    Extract(63, 56, caller20) == 25_calldata[28],    Extract(71, 64, caller20) == 25_calldata[27],    Extract(79, 72, caller20) == 25_calldata[26],    Extract(87, 80, caller20) == 25_calldata[25],    Extract(95, 88, caller20) == 25_calldata[24],    Extract(0x67, 96, caller20) == 25_calldata[23],    Extract(0x6f, 0x68, caller20) == 25_calldata[22],    Extract(0x77, 0x70, caller20) == 25_calldata[21],    Extract(0x7f, 0x78, caller20) == 25_calldata[20],    Extract(0x87, 0x80, caller20) == 25_calldata[19],    Extract(0x8f, 0x88, caller20) == 25_calldata[18],    Extract(0x97, 0x90, caller20) == 25_calldata[17],    Extract(0x9f, 0x98, caller20) == 25_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1349"}, {"arrows": "to", "from": "1329", "label": "And(Extract(7, 0, caller25) == 25_calldata[35],    Extract(15, 8, caller25) == 25_calldata[34],    Extract(23, 16, caller25) == 25_calldata[33],    Extract(31, 24, caller25) == 25_calldata[32],    Extract(39, 32, caller25) == 25_calldata[31],    Extract(47, 40, caller25) == 25_calldata[30],    Extract(55, 48, caller25) == 25_calldata[29],    Extract(63, 56, caller25) == 25_calldata[28],    Extract(71, 64, caller25) == 25_calldata[27],    Extract(79, 72, caller25) == 25_calldata[26],    Extract(87, 80, caller25) == 25_calldata[25],    Extract(95, 88, caller25) == 25_calldata[24],    Extract(0x67, 96, caller25) == 25_calldata[23],    Extract(0x6f, 0x68, caller25) == 25_calldata[22],    Extract(0x77, 0x70, caller25) == 25_calldata[21],    Extract(0x7f, 0x78, caller25) == 25_calldata[20],    Extract(0x87, 0x80, caller25) == 25_calldata[19],    Extract(0x8f, 0x88, caller25) == 25_calldata[18],    Extract(0x97, 0x90, caller25) == 25_calldata[17],    Extract(0x9f, 0x98, caller25) == 25_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1350"}, {"arrows": "to", "from": "1329", "label": "Or(Not(And(20_calldata[35] == 25_calldata[35],           20_calldata[34] == 25_calldata[34],           20_calldata[33] == 25_calldata[33],           20_calldata[32] == 25_calldata[32],           20_calldata[31] == 25_calldata[31],           20_calldata[30] == 25_calldata[30],           20_calldata[29] == 25_calldata[29],           20_calldata[28] == 25_calldata[28],           20_calldata[27] == 25_calldata[27],           20_calldata[26] == 25_calldata[26],           20_calldata[25] == 25_calldata[25],           20_calldata[24] == 25_calldata[24],           20_calldata[23] == 25_calldata[23],           20_calldata[22] == 25_calldata[22],           20_calldata[21] == 25_calldata[21],           20_calldata[20] == 25_calldata[20],           20_calldata[19] == 25_calldata[19],           20_calldata[18] == 25_calldata[18],           20_calldata[17] == 25_calldata[17],           20_calldata[16] == 25_calldata[16])),   Not(And(Extract(7, 0, caller20) == 25_calldata[35],           Extract(15, 8, caller20) == 25_calldata[34],           Extract(23, 16, caller20) == 25_calldata[33],           Extract(31, 24, caller20) == 25_calldata[32],           Extract(39, 32, caller20) == 25_calldata[31],           Extract(47, 40, caller20) == 25_calldata[30],           Extract(55, 48, caller20) == 25_calldata[29],           Extract(63, 56, caller20) == 25_calldata[28],           Extract(71, 64, caller20) == 25_calldata[27],           Extract(79, 72, caller20) == 25_calldata[26],           Extract(87, 80, caller20) == 25_calldata[25],           Extract(95, 88, caller20) == 25_calldata[24],           Extract(0x67, 96, caller20) == 25_calldata[23],           Extract(0x6f, 0x68, caller20) == 25_calldata[22],           Extract(0x77, 0x70, caller20) == 25_calldata[21],           Extract(0x7f, 0x78, caller20) == 25_calldata[20],           Extract(0x87, 0x80, caller20) == 25_calldata[19],           Extract(0x8f, 0x88, caller20) == 25_calldata[18],           Extract(0x97, 0x90, caller20) == 25_calldata[17],           Extract(0x9f, 0x98, caller20) == 25_calldata[16])),   Not(And(Extract(7, 0, caller25) == 25_calldata[35],           Extract(15, 8, caller25) == 25_calldata[34],           Extract(23, 16, caller25) == 25_calldata[33],           Extract(31, 24, caller25) == 25_calldata[32],           Extract(39, 32, caller25) == 25_calldata[31],           Extract(47, 40, caller25) == 25_calldata[30],           Extract(55, 48, caller25) == 25_calldata[29],           Extract(63, 56, caller25) == 25_calldata[28],           Extract(71, 64, caller25) == 25_calldata[27],           Extract(79, 72, caller25) == 25_calldata[26],           Extract(87, 80, caller25) == 25_calldata[25],           Extract(95, 88, caller25) == 25_calldata[24],           Extract(0x67, 96, caller25) == 25_calldata[23],           Extract(0x6f, 0x68, caller25) == 25_calldata[22],           Extract(0x77, 0x70, caller25) == 25_calldata[21],           Extract(0x7f, 0x78, caller25) == 25_calldata[20],           Extract(0x87, 0x80, caller25) == 25_calldata[19],           Extract(0x8f, 0x88, caller25) == 25_calldata[18],           Extract(0x97, 0x90, caller25) == 25_calldata[17],           Extract(0x9f, 0x98, caller25) == 25_calldata[16])))", "smooth": {"type": "cubicBezier"}, "to": "1351"}, {"arrows": "to", "from": "1351", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1352"}, {"arrows": "to", "from": "1350", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1353"}, {"arrows": "to", "from": "1349", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1354"}, {"arrows": "to", "from": "1348", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1355"}, {"arrows": "to", "from": "1327", "label": "And(20_calldata[35] == 25_calldata[35],    20_calldata[34] == 25_calldata[34],    20_calldata[33] == 25_calldata[33],    20_calldata[32] == 25_calldata[32],    20_calldata[31] == 25_calldata[31],    20_calldata[30] == 25_calldata[30],    20_calldata[29] == 25_calldata[29],    20_calldata[28] == 25_calldata[28],    20_calldata[27] == 25_calldata[27],    20_calldata[26] == 25_calldata[26],    20_calldata[25] == 25_calldata[25],    20_calldata[24] == 25_calldata[24],    20_calldata[23] == 25_calldata[23],    20_calldata[22] == 25_calldata[22],    20_calldata[21] == 25_calldata[21],    20_calldata[20] == 25_calldata[20],    20_calldata[19] == 25_calldata[19],    20_calldata[18] == 25_calldata[18],    20_calldata[17] == 25_calldata[17],    20_calldata[16] == 25_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1356"}, {"arrows": "to", "from": "1327", "label": "And(Extract(7, 0, caller20) == 25_calldata[35],    Extract(15, 8, caller20) == 25_calldata[34],    Extract(23, 16, caller20) == 25_calldata[33],    Extract(31, 24, caller20) == 25_calldata[32],    Extract(39, 32, caller20) == 25_calldata[31],    Extract(47, 40, caller20) == 25_calldata[30],    Extract(55, 48, caller20) == 25_calldata[29],    Extract(63, 56, caller20) == 25_calldata[28],    Extract(71, 64, caller20) == 25_calldata[27],    Extract(79, 72, caller20) == 25_calldata[26],    Extract(87, 80, caller20) == 25_calldata[25],    Extract(95, 88, caller20) == 25_calldata[24],    Extract(0x67, 96, caller20) == 25_calldata[23],    Extract(0x6f, 0x68, caller20) == 25_calldata[22],    Extract(0x77, 0x70, caller20) == 25_calldata[21],    Extract(0x7f, 0x78, caller20) == 25_calldata[20],    Extract(0x87, 0x80, caller20) == 25_calldata[19],    Extract(0x8f, 0x88, caller20) == 25_calldata[18],    Extract(0x97, 0x90, caller20) == 25_calldata[17],    Extract(0x9f, 0x98, caller20) == 25_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1357"}, {"arrows": "to", "from": "1357", "label": "And(20_calldata[35] == 25_calldata[35],    20_calldata[34] == 25_calldata[34],    20_calldata[33] == 25_calldata[33],    20_calldata[32] == 25_calldata[32],    20_calldata[31] == 25_calldata[31],    20_calldata[30] == 25_calldata[30],    20_calldata[29] == 25_calldata[29],    20_calldata[28] == 25_calldata[28],    20_calldata[27] == 25_calldata[27],    20_calldata[26] == 25_calldata[26],    20_calldata[25] == 25_calldata[25],    20_calldata[24] == 25_calldata[24],    20_calldata[23] == 25_calldata[23],    20_calldata[22] == 25_calldata[22],    20_calldata[21] == 25_calldata[21],    20_calldata[20] == 25_calldata[20],    20_calldata[19] == 25_calldata[19],    20_calldata[18] == 25_calldata[18],    20_calldata[17] == 25_calldata[17],    20_calldata[16] == 25_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1358"}, {"arrows": "to", "from": "1357", "label": "And(Extract(7, 0, caller20) == 25_calldata[35],    Extract(15, 8, caller20) == 25_calldata[34],    Extract(23, 16, caller20) == 25_calldata[33],    Extract(31, 24, caller20) == 25_calldata[32],    Extract(39, 32, caller20) == 25_calldata[31],    Extract(47, 40, caller20) == 25_calldata[30],    Extract(55, 48, caller20) == 25_calldata[29],    Extract(63, 56, caller20) == 25_calldata[28],    Extract(71, 64, caller20) == 25_calldata[27],    Extract(79, 72, caller20) == 25_calldata[26],    Extract(87, 80, caller20) == 25_calldata[25],    Extract(95, 88, caller20) == 25_calldata[24],    Extract(0x67, 96, caller20) == 25_calldata[23],    Extract(0x6f, 0x68, caller20) == 25_calldata[22],    Extract(0x77, 0x70, caller20) == 25_calldata[21],    Extract(0x7f, 0x78, caller20) == 25_calldata[20],    Extract(0x87, 0x80, caller20) == 25_calldata[19],    Extract(0x8f, 0x88, caller20) == 25_calldata[18],    Extract(0x97, 0x90, caller20) == 25_calldata[17],    Extract(0x9f, 0x98, caller20) == 25_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1359"}, {"arrows": "to", "from": "1357", "label": "Or(Not(And(20_calldata[35] == 25_calldata[35],           20_calldata[34] == 25_calldata[34],           20_calldata[33] == 25_calldata[33],           20_calldata[32] == 25_calldata[32],           20_calldata[31] == 25_calldata[31],           20_calldata[30] == 25_calldata[30],           20_calldata[29] == 25_calldata[29],           20_calldata[28] == 25_calldata[28],           20_calldata[27] == 25_calldata[27],           20_calldata[26] == 25_calldata[26],           20_calldata[25] == 25_calldata[25],           20_calldata[24] == 25_calldata[24],           20_calldata[23] == 25_calldata[23],           20_calldata[22] == 25_calldata[22],           20_calldata[21] == 25_calldata[21],           20_calldata[20] == 25_calldata[20],           20_calldata[19] == 25_calldata[19],           20_calldata[18] == 25_calldata[18],           20_calldata[17] == 25_calldata[17],           20_calldata[16] == 25_calldata[16])),   Not(And(Extract(7, 0, caller20) == 25_calldata[35],           Extract(15, 8, caller20) == 25_calldata[34],           Extract(23, 16, caller20) == 25_calldata[33],           Extract(31, 24, caller20) == 25_calldata[32],           Extract(39, 32, caller20) == 25_calldata[31],           Extract(47, 40, caller20) == 25_calldata[30],           Extract(55, 48, caller20) == 25_calldata[29],           Extract(63, 56, caller20) == 25_calldata[28],           Extract(71, 64, caller20) == 25_calldata[27],           Extract(79, 72, caller20) == 25_calldata[26],           Extract(87, 80, caller20) == 25_calldata[25],           Extract(95, 88, caller20) == 25_calldata[24],           Extract(0x67, 96, caller20) == 25_calldata[23],           Extract(0x6f, 0x68, caller20) == 25_calldata[22],           Extract(0x77, 0x70, caller20) == 25_calldata[21],           Extract(0x7f, 0x78, caller20) == 25_calldata[20],           Extract(0x87, 0x80, caller20) == 25_calldata[19],           Extract(0x8f, 0x88, caller20) == 25_calldata[18],           Extract(0x97, 0x90, caller20) == 25_calldata[17],           Extract(0x9f, 0x98, caller20) == 25_calldata[16])))", "smooth": {"type": "cubicBezier"}, "to": "1360"}, {"arrows": "to", "from": "1360", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1361"}, {"arrows": "to", "from": "1359", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1362"}, {"arrows": "to", "from": "1358", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1363"}, {"arrows": "to", "from": "1356", "label": "And(20_calldata[35] == 25_calldata[35],    20_calldata[34] == 25_calldata[34],    20_calldata[33] == 25_calldata[33],    20_calldata[32] == 25_calldata[32],    20_calldata[31] == 25_calldata[31],    20_calldata[30] == 25_calldata[30],    20_calldata[29] == 25_calldata[29],    20_calldata[28] == 25_calldata[28],    20_calldata[27] == 25_calldata[27],    20_calldata[26] == 25_calldata[26],    20_calldata[25] == 25_calldata[25],    20_calldata[24] == 25_calldata[24],    20_calldata[23] == 25_calldata[23],    20_calldata[22] == 25_calldata[22],    20_calldata[21] == 25_calldata[21],    20_calldata[20] == 25_calldata[20],    20_calldata[19] == 25_calldata[19],    20_calldata[18] == 25_calldata[18],    20_calldata[17] == 25_calldata[17],    20_calldata[16] == 25_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1364"}, {"arrows": "to", "from": "1356", "label": "And(Extract(7, 0, caller20) == 25_calldata[35],    Extract(15, 8, caller20) == 25_calldata[34],    Extract(23, 16, caller20) == 25_calldata[33],    Extract(31, 24, caller20) == 25_calldata[32],    Extract(39, 32, caller20) == 25_calldata[31],    Extract(47, 40, caller20) == 25_calldata[30],    Extract(55, 48, caller20) == 25_calldata[29],    Extract(63, 56, caller20) == 25_calldata[28],    Extract(71, 64, caller20) == 25_calldata[27],    Extract(79, 72, caller20) == 25_calldata[26],    Extract(87, 80, caller20) == 25_calldata[25],    Extract(95, 88, caller20) == 25_calldata[24],    Extract(0x67, 96, caller20) == 25_calldata[23],    Extract(0x6f, 0x68, caller20) == 25_calldata[22],    Extract(0x77, 0x70, caller20) == 25_calldata[21],    Extract(0x7f, 0x78, caller20) == 25_calldata[20],    Extract(0x87, 0x80, caller20) == 25_calldata[19],    Extract(0x8f, 0x88, caller20) == 25_calldata[18],    Extract(0x97, 0x90, caller20) == 25_calldata[17],    Extract(0x9f, 0x98, caller20) == 25_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1365"}, {"arrows": "to", "from": "1356", "label": "Or(Not(And(20_calldata[35] == 25_calldata[35],           20_calldata[34] == 25_calldata[34],           20_calldata[33] == 25_calldata[33],           20_calldata[32] == 25_calldata[32],           20_calldata[31] == 25_calldata[31],           20_calldata[30] == 25_calldata[30],           20_calldata[29] == 25_calldata[29],           20_calldata[28] == 25_calldata[28],           20_calldata[27] == 25_calldata[27],           20_calldata[26] == 25_calldata[26],           20_calldata[25] == 25_calldata[25],           20_calldata[24] == 25_calldata[24],           20_calldata[23] == 25_calldata[23],           20_calldata[22] == 25_calldata[22],           20_calldata[21] == 25_calldata[21],           20_calldata[20] == 25_calldata[20],           20_calldata[19] == 25_calldata[19],           20_calldata[18] == 25_calldata[18],           20_calldata[17] == 25_calldata[17],           20_calldata[16] == 25_calldata[16])),   Not(And(Extract(7, 0, caller20) == 25_calldata[35],           Extract(15, 8, caller20) == 25_calldata[34],           Extract(23, 16, caller20) == 25_calldata[33],           Extract(31, 24, caller20) == 25_calldata[32],           Extract(39, 32, caller20) == 25_calldata[31],           Extract(47, 40, caller20) == 25_calldata[30],           Extract(55, 48, caller20) == 25_calldata[29],           Extract(63, 56, caller20) == 25_calldata[28],           Extract(71, 64, caller20) == 25_calldata[27],           Extract(79, 72, caller20) == 25_calldata[26],           Extract(87, 80, caller20) == 25_calldata[25],           Extract(95, 88, caller20) == 25_calldata[24],           Extract(0x67, 96, caller20) == 25_calldata[23],           Extract(0x6f, 0x68, caller20) == 25_calldata[22],           Extract(0x77, 0x70, caller20) == 25_calldata[21],           Extract(0x7f, 0x78, caller20) == 25_calldata[20],           Extract(0x87, 0x80, caller20) == 25_calldata[19],           Extract(0x8f, 0x88, caller20) == 25_calldata[18],           Extract(0x97, 0x90, caller20) == 25_calldata[17],           Extract(0x9f, 0x98, caller20) == 25_calldata[16])))", "smooth": {"type": "cubicBezier"}, "to": "1366"}, {"arrows": "to", "from": "1366", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1367"}, {"arrows": "to", "from": "1365", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1368"}, {"arrows": "to", "from": "1364", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1369"}, {"arrows": "to", "from": "1326", "label": "And(20_calldata[35] == 25_calldata[35],    20_calldata[34] == 25_calldata[34],    20_calldata[33] == 25_calldata[33],    20_calldata[32] == 25_calldata[32],    20_calldata[31] == 25_calldata[31],    20_calldata[30] == 25_calldata[30],    20_calldata[29] == 25_calldata[29],    20_calldata[28] == 25_calldata[28],    20_calldata[27] == 25_calldata[27],    20_calldata[26] == 25_calldata[26],    20_calldata[25] == 25_calldata[25],    20_calldata[24] == 25_calldata[24],    20_calldata[23] == 25_calldata[23],    20_calldata[22] == 25_calldata[22],    20_calldata[21] == 25_calldata[21],    20_calldata[20] == 25_calldata[20],    20_calldata[19] == 25_calldata[19],    20_calldata[18] == 25_calldata[18],    20_calldata[17] == 25_calldata[17],    20_calldata[16] == 25_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1370"}, {"arrows": "to", "from": "1326", "label": "And(Extract(7, 0, caller20) == 25_calldata[35],    Extract(15, 8, caller20) == 25_calldata[34],    Extract(23, 16, caller20) == 25_calldata[33],    Extract(31, 24, caller20) == 25_calldata[32],    Extract(39, 32, caller20) == 25_calldata[31],    Extract(47, 40, caller20) == 25_calldata[30],    Extract(55, 48, caller20) == 25_calldata[29],    Extract(63, 56, caller20) == 25_calldata[28],    Extract(71, 64, caller20) == 25_calldata[27],    Extract(79, 72, caller20) == 25_calldata[26],    Extract(87, 80, caller20) == 25_calldata[25],    Extract(95, 88, caller20) == 25_calldata[24],    Extract(0x67, 96, caller20) == 25_calldata[23],    Extract(0x6f, 0x68, caller20) == 25_calldata[22],    Extract(0x77, 0x70, caller20) == 25_calldata[21],    Extract(0x7f, 0x78, caller20) == 25_calldata[20],    Extract(0x87, 0x80, caller20) == 25_calldata[19],    Extract(0x8f, 0x88, caller20) == 25_calldata[18],    Extract(0x97, 0x90, caller20) == 25_calldata[17],    Extract(0x9f, 0x98, caller20) == 25_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1371"}, {"arrows": "to", "from": "1371", "label": "And(20_calldata[35] == 25_calldata[35],    20_calldata[34] == 25_calldata[34],    20_calldata[33] == 25_calldata[33],    20_calldata[32] == 25_calldata[32],    20_calldata[31] == 25_calldata[31],    20_calldata[30] == 25_calldata[30],    20_calldata[29] == 25_calldata[29],    20_calldata[28] == 25_calldata[28],    20_calldata[27] == 25_calldata[27],    20_calldata[26] == 25_calldata[26],    20_calldata[25] == 25_calldata[25],    20_calldata[24] == 25_calldata[24],    20_calldata[23] == 25_calldata[23],    20_calldata[22] == 25_calldata[22],    20_calldata[21] == 25_calldata[21],    20_calldata[20] == 25_calldata[20],    20_calldata[19] == 25_calldata[19],    20_calldata[18] == 25_calldata[18],    20_calldata[17] == 25_calldata[17],    20_calldata[16] == 25_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1372"}, {"arrows": "to", "from": "1371", "label": "And(Extract(7, 0, caller20) == 25_calldata[35],    Extract(15, 8, caller20) == 25_calldata[34],    Extract(23, 16, caller20) == 25_calldata[33],    Extract(31, 24, caller20) == 25_calldata[32],    Extract(39, 32, caller20) == 25_calldata[31],    Extract(47, 40, caller20) == 25_calldata[30],    Extract(55, 48, caller20) == 25_calldata[29],    Extract(63, 56, caller20) == 25_calldata[28],    Extract(71, 64, caller20) == 25_calldata[27],    Extract(79, 72, caller20) == 25_calldata[26],    Extract(87, 80, caller20) == 25_calldata[25],    Extract(95, 88, caller20) == 25_calldata[24],    Extract(0x67, 96, caller20) == 25_calldata[23],    Extract(0x6f, 0x68, caller20) == 25_calldata[22],    Extract(0x77, 0x70, caller20) == 25_calldata[21],    Extract(0x7f, 0x78, caller20) == 25_calldata[20],    Extract(0x87, 0x80, caller20) == 25_calldata[19],    Extract(0x8f, 0x88, caller20) == 25_calldata[18],    Extract(0x97, 0x90, caller20) == 25_calldata[17],    Extract(0x9f, 0x98, caller20) == 25_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1373"}, {"arrows": "to", "from": "1371", "label": "Or(Not(And(20_calldata[35] == 25_calldata[35],           20_calldata[34] == 25_calldata[34],           20_calldata[33] == 25_calldata[33],           20_calldata[32] == 25_calldata[32],           20_calldata[31] == 25_calldata[31],           20_calldata[30] == 25_calldata[30],           20_calldata[29] == 25_calldata[29],           20_calldata[28] == 25_calldata[28],           20_calldata[27] == 25_calldata[27],           20_calldata[26] == 25_calldata[26],           20_calldata[25] == 25_calldata[25],           20_calldata[24] == 25_calldata[24],           20_calldata[23] == 25_calldata[23],           20_calldata[22] == 25_calldata[22],           20_calldata[21] == 25_calldata[21],           20_calldata[20] == 25_calldata[20],           20_calldata[19] == 25_calldata[19],           20_calldata[18] == 25_calldata[18],           20_calldata[17] == 25_calldata[17],           20_calldata[16] == 25_calldata[16])),   Not(And(Extract(7, 0, caller20) == 25_calldata[35],           Extract(15, 8, caller20) == 25_calldata[34],           Extract(23, 16, caller20) == 25_calldata[33],           Extract(31, 24, caller20) == 25_calldata[32],           Extract(39, 32, caller20) == 25_calldata[31],           Extract(47, 40, caller20) == 25_calldata[30],           Extract(55, 48, caller20) == 25_calldata[29],           Extract(63, 56, caller20) == 25_calldata[28],           Extract(71, 64, caller20) == 25_calldata[27],           Extract(79, 72, caller20) == 25_calldata[26],           Extract(87, 80, caller20) == 25_calldata[25],           Extract(95, 88, caller20) == 25_calldata[24],           Extract(0x67, 96, caller20) == 25_calldata[23],           Extract(0x6f, 0x68, caller20) == 25_calldata[22],           Extract(0x77, 0x70, caller20) == 25_calldata[21],           Extract(0x7f, 0x78, caller20) == 25_calldata[20],           Extract(0x87, 0x80, caller20) == 25_calldata[19],           Extract(0x8f, 0x88, caller20) == 25_calldata[18],           Extract(0x97, 0x90, caller20) == 25_calldata[17],           Extract(0x9f, 0x98, caller20) == 25_calldata[16])))", "smooth": {"type": "cubicBezier"}, "to": "1374"}, {"arrows": "to", "from": "1374", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1375"}, {"arrows": "to", "from": "1373", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1376"}, {"arrows": "to", "from": "1372", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1377"}, {"arrows": "to", "from": "1370", "label": "And(20_calldata[35] == 25_calldata[35],    20_calldata[34] == 25_calldata[34],    20_calldata[33] == 25_calldata[33],    20_calldata[32] == 25_calldata[32],    20_calldata[31] == 25_calldata[31],    20_calldata[30] == 25_calldata[30],    20_calldata[29] == 25_calldata[29],    20_calldata[28] == 25_calldata[28],    20_calldata[27] == 25_calldata[27],    20_calldata[26] == 25_calldata[26],    20_calldata[25] == 25_calldata[25],    20_calldata[24] == 25_calldata[24],    20_calldata[23] == 25_calldata[23],    20_calldata[22] == 25_calldata[22],    20_calldata[21] == 25_calldata[21],    20_calldata[20] == 25_calldata[20],    20_calldata[19] == 25_calldata[19],    20_calldata[18] == 25_calldata[18],    20_calldata[17] == 25_calldata[17],    20_calldata[16] == 25_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1378"}, {"arrows": "to", "from": "1370", "label": "And(Extract(7, 0, caller20) == 25_calldata[35],    Extract(15, 8, caller20) == 25_calldata[34],    Extract(23, 16, caller20) == 25_calldata[33],    Extract(31, 24, caller20) == 25_calldata[32],    Extract(39, 32, caller20) == 25_calldata[31],    Extract(47, 40, caller20) == 25_calldata[30],    Extract(55, 48, caller20) == 25_calldata[29],    Extract(63, 56, caller20) == 25_calldata[28],    Extract(71, 64, caller20) == 25_calldata[27],    Extract(79, 72, caller20) == 25_calldata[26],    Extract(87, 80, caller20) == 25_calldata[25],    Extract(95, 88, caller20) == 25_calldata[24],    Extract(0x67, 96, caller20) == 25_calldata[23],    Extract(0x6f, 0x68, caller20) == 25_calldata[22],    Extract(0x77, 0x70, caller20) == 25_calldata[21],    Extract(0x7f, 0x78, caller20) == 25_calldata[20],    Extract(0x87, 0x80, caller20) == 25_calldata[19],    Extract(0x8f, 0x88, caller20) == 25_calldata[18],    Extract(0x97, 0x90, caller20) == 25_calldata[17],    Extract(0x9f, 0x98, caller20) == 25_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1379"}, {"arrows": "to", "from": "1370", "label": "Or(Not(And(20_calldata[35] == 25_calldata[35],           20_calldata[34] == 25_calldata[34],           20_calldata[33] == 25_calldata[33],           20_calldata[32] == 25_calldata[32],           20_calldata[31] == 25_calldata[31],           20_calldata[30] == 25_calldata[30],           20_calldata[29] == 25_calldata[29],           20_calldata[28] == 25_calldata[28],           20_calldata[27] == 25_calldata[27],           20_calldata[26] == 25_calldata[26],           20_calldata[25] == 25_calldata[25],           20_calldata[24] == 25_calldata[24],           20_calldata[23] == 25_calldata[23],           20_calldata[22] == 25_calldata[22],           20_calldata[21] == 25_calldata[21],           20_calldata[20] == 25_calldata[20],           20_calldata[19] == 25_calldata[19],           20_calldata[18] == 25_calldata[18],           20_calldata[17] == 25_calldata[17],           20_calldata[16] == 25_calldata[16])),   Not(And(Extract(7, 0, caller20) == 25_calldata[35],           Extract(15, 8, caller20) == 25_calldata[34],           Extract(23, 16, caller20) == 25_calldata[33],           Extract(31, 24, caller20) == 25_calldata[32],           Extract(39, 32, caller20) == 25_calldata[31],           Extract(47, 40, caller20) == 25_calldata[30],           Extract(55, 48, caller20) == 25_calldata[29],           Extract(63, 56, caller20) == 25_calldata[28],           Extract(71, 64, caller20) == 25_calldata[27],           Extract(79, 72, caller20) == 25_calldata[26],           Extract(87, 80, caller20) == 25_calldata[25],           Extract(95, 88, caller20) == 25_calldata[24],           Extract(0x67, 96, caller20) == 25_calldata[23],           Extract(0x6f, 0x68, caller20) == 25_calldata[22],           Extract(0x77, 0x70, caller20) == 25_calldata[21],           Extract(0x7f, 0x78, caller20) == 25_calldata[20],           Extract(0x87, 0x80, caller20) == 25_calldata[19],           Extract(0x8f, 0x88, caller20) == 25_calldata[18],           Extract(0x97, 0x90, caller20) == 25_calldata[17],           Extract(0x9f, 0x98, caller20) == 25_calldata[16])))", "smooth": {"type": "cubicBezier"}, "to": "1380"}, {"arrows": "to", "from": "1380", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1381"}, {"arrows": "to", "from": "1379", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1382"}, {"arrows": "to", "from": "1378", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1383"}, {"arrows": "to", "from": "1179", "label": "ULE(4, 24_calldatasize)", "smooth": {"type": "cubicBezier"}, "to": "1384"}, {"arrows": "to", "from": "1179", "label": "Not(ULE(4, 24_calldatasize))", "smooth": {"type": "cubicBezier"}, "to": "1385"}, {"arrows": "to", "from": "1384", "label": "Not(And(24_calldata[3] == 0xdd,        24_calldata[2] == 13,        24_calldata[1] == 22,        24_calldata[0] == 24))", "smooth": {"type": "cubicBezier"}, "to": "1386"}, {"arrows": "to", "from": "1384", "label": "And(24_calldata[3] == 0xdd,    24_calldata[2] == 13,    24_calldata[1] == 22,    24_calldata[0] == 24)", "smooth": {"type": "cubicBezier"}, "to": "1387"}, {"arrows": "to", "from": "1387", "label": "Not(call_value24 == 0)", "smooth": {"type": "cubicBezier"}, "to": "1388"}, {"arrows": "to", "from": "1387", "label": "call_value24 == 0", "smooth": {"type": "cubicBezier"}, "to": "1389"}, {"arrows": "to", "from": "1389", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1390"}, {"arrows": "to", "from": "1390", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1391"}, {"arrows": "to", "from": "1386", "label": "Not(And(24_calldata[3] == 0xd1,        24_calldata[2] == 0xbf,        24_calldata[1] == 65,        24_calldata[0] == 98))", "smooth": {"type": "cubicBezier"}, "to": "1392"}, {"arrows": "to", "from": "1386", "label": "And(24_calldata[3] == 0xd1,    24_calldata[2] == 0xbf,    24_calldata[1] == 65,    24_calldata[0] == 98)", "smooth": {"type": "cubicBezier"}, "to": "1393"}, {"arrows": "to", "from": "1393", "label": "Not(call_value24 == 0)", "smooth": {"type": "cubicBezier"}, "to": "1394"}, {"arrows": "to", "from": "1393", "label": "call_value24 == 0", "smooth": {"type": "cubicBezier"}, "to": "1395"}, {"arrows": "to", "from": "1395", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1396"}, {"arrows": "to", "from": "1396", "label": "And(20_calldata[35] == Extract(7, 0, caller24),    20_calldata[34] == Extract(15, 8, caller24),    20_calldata[33] == Extract(23, 16, caller24),    20_calldata[32] == Extract(31, 24, caller24),    20_calldata[31] == Extract(39, 32, caller24),    20_calldata[30] == Extract(47, 40, caller24),    20_calldata[29] == Extract(55, 48, caller24),    20_calldata[28] == Extract(63, 56, caller24),    20_calldata[27] == Extract(71, 64, caller24),    20_calldata[26] == Extract(79, 72, caller24),    20_calldata[25] == Extract(87, 80, caller24),    20_calldata[24] == Extract(95, 88, caller24),    20_calldata[23] == Extract(0x67, 96, caller24),    20_calldata[22] == Extract(0x6f, 0x68, caller24),    20_calldata[21] == Extract(0x77, 0x70, caller24),    20_calldata[20] == Extract(0x7f, 0x78, caller24),    20_calldata[19] == Extract(0x87, 0x80, caller24),    20_calldata[18] == Extract(0x8f, 0x88, caller24),    20_calldata[17] == Extract(0x97, 0x90, caller24),    20_calldata[16] == Extract(0x9f, 0x98, caller24))", "smooth": {"type": "cubicBezier"}, "to": "1397"}, {"arrows": "to", "from": "1396", "label": "Extract(0x9f, 0, caller20) == Extract(0x9f, 0, caller24)", "smooth": {"type": "cubicBezier"}, "to": "1398"}, {"arrows": "to", "from": "1396", "label": "Or(Not(And(20_calldata[35] == Extract(7, 0, caller24),           20_calldata[34] == Extract(15, 8, caller24),           20_calldata[33] == Extract(23, 16, caller24),           20_calldata[32] == Extract(31, 24, caller24),           20_calldata[31] == Extract(39, 32, caller24),           20_calldata[30] == Extract(47, 40, caller24),           20_calldata[29] == Extract(55, 48, caller24),           20_calldata[28] == Extract(63, 56, caller24),           20_calldata[27] == Extract(71, 64, caller24),           20_calldata[26] == Extract(79, 72, caller24),           20_calldata[25] == Extract(87, 80, caller24),           20_calldata[24] == Extract(95, 88, caller24),           20_calldata[23] == Extract(0x67, 96, caller24),           20_calldata[22] == Extract(0x6f, 0x68, caller24),           20_calldata[21] == Extract(0x77, 0x70, caller24),           20_calldata[20] == Extract(0x7f, 0x78, caller24),           20_calldata[19] == Extract(0x87, 0x80, caller24),           20_calldata[18] == Extract(0x8f, 0x88, caller24),           20_calldata[17] == Extract(0x97, 0x90, caller24),           20_calldata[16] == Extract(0x9f, 0x98, caller24))),   Not(Extract(0x9f, 0, caller20) ==       Extract(0x9f, 0, caller24)))", "smooth": {"type": "cubicBezier"}, "to": "1399"}, {"arrows": "to", "from": "1399", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1400"}, {"arrows": "to", "from": "1398", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1401"}, {"arrows": "to", "from": "1397", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1402"}, {"arrows": "to", "from": "1392", "label": "Not(And(24_calldata[3] == 49,        24_calldata[2] == 0x82,        24_calldata[1] == 0xa0,        24_calldata[0] == 0x70))", "smooth": {"type": "cubicBezier"}, "to": "1403"}, {"arrows": "to", "from": "1392", "label": "And(24_calldata[3] == 49,    24_calldata[2] == 0x82,    24_calldata[1] == 0xa0,    24_calldata[0] == 0x70)", "smooth": {"type": "cubicBezier"}, "to": "1404"}, {"arrows": "to", "from": "1404", "label": "Not(call_value24 == 0)", "smooth": {"type": "cubicBezier"}, "to": "1405"}, {"arrows": "to", "from": "1404", "label": "call_value24 == 0", "smooth": {"type": "cubicBezier"}, "to": "1406"}, {"arrows": "to", "from": "1406", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1407"}, {"arrows": "to", "from": "1407", "label": "And(20_calldata[35] == 24_calldata[35],    20_calldata[34] == 24_calldata[34],    20_calldata[33] == 24_calldata[33],    20_calldata[32] == 24_calldata[32],    20_calldata[31] == 24_calldata[31],    20_calldata[30] == 24_calldata[30],    20_calldata[29] == 24_calldata[29],    20_calldata[28] == 24_calldata[28],    20_calldata[27] == 24_calldata[27],    20_calldata[26] == 24_calldata[26],    20_calldata[25] == 24_calldata[25],    20_calldata[24] == 24_calldata[24],    20_calldata[23] == 24_calldata[23],    20_calldata[22] == 24_calldata[22],    20_calldata[21] == 24_calldata[21],    20_calldata[20] == 24_calldata[20],    20_calldata[19] == 24_calldata[19],    20_calldata[18] == 24_calldata[18],    20_calldata[17] == 24_calldata[17],    20_calldata[16] == 24_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1408"}, {"arrows": "to", "from": "1407", "label": "And(Extract(7, 0, caller20) == 24_calldata[35],    Extract(15, 8, caller20) == 24_calldata[34],    Extract(23, 16, caller20) == 24_calldata[33],    Extract(31, 24, caller20) == 24_calldata[32],    Extract(39, 32, caller20) == 24_calldata[31],    Extract(47, 40, caller20) == 24_calldata[30],    Extract(55, 48, caller20) == 24_calldata[29],    Extract(63, 56, caller20) == 24_calldata[28],    Extract(71, 64, caller20) == 24_calldata[27],    Extract(79, 72, caller20) == 24_calldata[26],    Extract(87, 80, caller20) == 24_calldata[25],    Extract(95, 88, caller20) == 24_calldata[24],    Extract(0x67, 96, caller20) == 24_calldata[23],    Extract(0x6f, 0x68, caller20) == 24_calldata[22],    Extract(0x77, 0x70, caller20) == 24_calldata[21],    Extract(0x7f, 0x78, caller20) == 24_calldata[20],    Extract(0x87, 0x80, caller20) == 24_calldata[19],    Extract(0x8f, 0x88, caller20) == 24_calldata[18],    Extract(0x97, 0x90, caller20) == 24_calldata[17],    Extract(0x9f, 0x98, caller20) == 24_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1409"}, {"arrows": "to", "from": "1409", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1410"}, {"arrows": "to", "from": "1408", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1411"}, {"arrows": "to", "from": "1403", "label": "Not(And(24_calldata[3] == 0x87,        24_calldata[2] == 14,        24_calldata[1] == 33,        24_calldata[0] == 0xa3))", "smooth": {"type": "cubicBezier"}, "to": "1412"}, {"arrows": "to", "from": "1403", "label": "And(24_calldata[3] == 0x87,    24_calldata[2] == 14,    24_calldata[1] == 33,    24_calldata[0] == 0xa3)", "smooth": {"type": "cubicBezier"}, "to": "1413"}, {"arrows": "to", "from": "1413", "label": "Not(call_value24 == 0)", "smooth": {"type": "cubicBezier"}, "to": "1414"}, {"arrows": "to", "from": "1413", "label": "call_value24 == 0", "smooth": {"type": "cubicBezier"}, "to": "1415"}, {"arrows": "to", "from": "1415", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1416"}, {"arrows": "to", "from": "1416", "label": "And(20_calldata[35] == Extract(7, 0, caller24),    20_calldata[34] == Extract(15, 8, caller24),    20_calldata[33] == Extract(23, 16, caller24),    20_calldata[32] == Extract(31, 24, caller24),    20_calldata[31] == Extract(39, 32, caller24),    20_calldata[30] == Extract(47, 40, caller24),    20_calldata[29] == Extract(55, 48, caller24),    20_calldata[28] == Extract(63, 56, caller24),    20_calldata[27] == Extract(71, 64, caller24),    20_calldata[26] == Extract(79, 72, caller24),    20_calldata[25] == Extract(87, 80, caller24),    20_calldata[24] == Extract(95, 88, caller24),    20_calldata[23] == Extract(0x67, 96, caller24),    20_calldata[22] == Extract(0x6f, 0x68, caller24),    20_calldata[21] == Extract(0x77, 0x70, caller24),    20_calldata[20] == Extract(0x7f, 0x78, caller24),    20_calldata[19] == Extract(0x87, 0x80, caller24),    20_calldata[18] == Extract(0x8f, 0x88, caller24),    20_calldata[17] == Extract(0x97, 0x90, caller24),    20_calldata[16] == Extract(0x9f, 0x98, caller24))", "smooth": {"type": "cubicBezier"}, "to": "1417"}, {"arrows": "to", "from": "1416", "label": "Extract(0x9f, 0, caller20) == Extract(0x9f, 0, caller24)", "smooth": {"type": "cubicBezier"}, "to": "1418"}, {"arrows": "to", "from": "1418", "label": "True", "smooth": {"type": "cubicBezier"}, "to": "1419"}, {"arrows": "to", "from": "1419", "label": "And(20_calldata[35] == Extract(7, 0, caller24),    20_calldata[34] == Extract(15, 8, caller24),    20_calldata[33] == Extract(23, 16, caller24),    20_calldata[32] == Extract(31, 24, caller24),    20_calldata[31] == Extract(39, 32, caller24),    20_calldata[30] == Extract(47, 40, caller24),    20_calldata[29] == Extract(55, 48, caller24),    20_calldata[28] == Extract(63, 56, caller24),    20_calldata[27] == Extract(71, 64, caller24),    20_calldata[26] == Extract(79, 72, caller24),    20_calldata[25] == Extract(87, 80, caller24),    20_calldata[24] == Extract(95, 88, caller24),    20_calldata[23] == Extract(0x67, 96, caller24),    20_calldata[22] == Extract(0x6f, 0x68, caller24),    20_calldata[21] == Extract(0x77, 0x70, caller24),    20_calldata[20] == Extract(0x7f, 0x78, caller24),    20_calldata[19] == Extract(0x87, 0x80, caller24),    20_calldata[18] == Extract(0x8f, 0x88, caller24),    20_calldata[17] == Extract(0x97, 0x90, caller24),    20_calldata[16] == Extract(0x9f, 0x98, caller24))", "smooth": {"type": "cubicBezier"}, "to": "1420"}, {"arrows": "to", "from": "1419", "label": "Extract(0x9f, 0, caller20) == Extract(0x9f, 0, caller24)", "smooth": {"type": "cubicBezier"}, "to": "1421"}, {"arrows": "to", "from": "1419", "label": "Or(Not(And(20_calldata[35] == Extract(7, 0, caller24),           20_calldata[34] == Extract(15, 8, caller24),           20_calldata[33] == Extract(23, 16, caller24),           20_calldata[32] == Extract(31, 24, caller24),           20_calldata[31] == Extract(39, 32, caller24),           20_calldata[30] == Extract(47, 40, caller24),           20_calldata[29] == Extract(55, 48, caller24),           20_calldata[28] == Extract(63, 56, caller24),           20_calldata[27] == Extract(71, 64, caller24),           20_calldata[26] == Extract(79, 72, caller24),           20_calldata[25] == Extract(87, 80, caller24),           20_calldata[24] == Extract(95, 88, caller24),           20_calldata[23] == Extract(0x67, 96, caller24),           20_calldata[22] == Extract(0x6f, 0x68, caller24),           20_calldata[21] == Extract(0x77, 0x70, caller24),           20_calldata[20] == Extract(0x7f, 0x78, caller24),           20_calldata[19] == Extract(0x87, 0x80, caller24),           20_calldata[18] == Extract(0x8f, 0x88, caller24),           20_calldata[17] == Extract(0x97, 0x90, caller24),           20_calldata[16] == Extract(0x9f, 0x98, caller24))),   Not(Extract(0x9f, 0, caller20) ==       Extract(0x9f, 0, caller24)))", "smooth": {"type": "cubicBezier"}, "to": "1422"}, {"arrows": "to", "from": "1422", "label": "And(20_calldata[35] == 24_calldata[35],    20_calldata[34] == 24_calldata[34],    20_calldata[33] == 24_calldata[33],    20_calldata[32] == 24_calldata[32],    20_calldata[31] == 24_calldata[31],    20_calldata[30] == 24_calldata[30],    20_calldata[29] == 24_calldata[29],    20_calldata[28] == 24_calldata[28],    20_calldata[27] == 24_calldata[27],    20_calldata[26] == 24_calldata[26],    20_calldata[25] == 24_calldata[25],    20_calldata[24] == 24_calldata[24],    20_calldata[23] == 24_calldata[23],    20_calldata[22] == 24_calldata[22],    20_calldata[21] == 24_calldata[21],    20_calldata[20] == 24_calldata[20],    20_calldata[19] == 24_calldata[19],    20_calldata[18] == 24_calldata[18],    20_calldata[17] == 24_calldata[17],    20_calldata[16] == 24_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1423"}, {"arrows": "to", "from": "1422", "label": "And(Extract(7, 0, caller20) == 24_calldata[35],    Extract(15, 8, caller20) == 24_calldata[34],    Extract(23, 16, caller20) == 24_calldata[33],    Extract(31, 24, caller20) == 24_calldata[32],    Extract(39, 32, caller20) == 24_calldata[31],    Extract(47, 40, caller20) == 24_calldata[30],    Extract(55, 48, caller20) == 24_calldata[29],    Extract(63, 56, caller20) == 24_calldata[28],    Extract(71, 64, caller20) == 24_calldata[27],    Extract(79, 72, caller20) == 24_calldata[26],    Extract(87, 80, caller20) == 24_calldata[25],    Extract(95, 88, caller20) == 24_calldata[24],    Extract(0x67, 96, caller20) == 24_calldata[23],    Extract(0x6f, 0x68, caller20) == 24_calldata[22],    Extract(0x77, 0x70, caller20) == 24_calldata[21],    Extract(0x7f, 0x78, caller20) == 24_calldata[20],    Extract(0x87, 0x80, caller20) == 24_calldata[19],    Extract(0x8f, 0x88, caller20) == 24_calldata[18],    Extract(0x97, 0x90, caller20) == 24_calldata[17],    Extract(0x9f, 0x98, caller20) == 24_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1424"}, {"arrows": "to", "from": "1422", "label": "And(Extract(7, 0, caller24) == 24_calldata[35],    Extract(15, 8, caller24) == 24_calldata[34],    Extract(23, 16, caller24) == 24_calldata[33],    Extract(31, 24, caller24) == 24_calldata[32],    Extract(39, 32, caller24) == 24_calldata[31],    Extract(47, 40, caller24) == 24_calldata[30],    Extract(55, 48, caller24) == 24_calldata[29],    Extract(63, 56, caller24) == 24_calldata[28],    Extract(71, 64, caller24) == 24_calldata[27],    Extract(79, 72, caller24) == 24_calldata[26],    Extract(87, 80, caller24) == 24_calldata[25],    Extract(95, 88, caller24) == 24_calldata[24],    Extract(0x67, 96, caller24) == 24_calldata[23],    Extract(0x6f, 0x68, caller24) == 24_calldata[22],    Extract(0x77, 0x70, caller24) == 24_calldata[21],    Extract(0x7f, 0x78, caller24) == 24_calldata[20],    Extract(0x87, 0x80, caller24) == 24_calldata[19],    Extract(0x8f, 0x88, caller24) == 24_calldata[18],    Extract(0x97, 0x90, caller24) == 24_calldata[17],    Extract(0x9f, 0x98, caller24) == 24_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1425"}, {"arrows": "to", "from": "1425", "label": "And(20_calldata[35] == 24_calldata[35],    20_calldata[34] == 24_calldata[34],    20_calldata[33] == 24_calldata[33],    20_calldata[32] == 24_calldata[32],    20_calldata[31] == 24_calldata[31],    20_calldata[30] == 24_calldata[30],    20_calldata[29] == 24_calldata[29],    20_calldata[28] == 24_calldata[28],    20_calldata[27] == 24_calldata[27],    20_calldata[26] == 24_calldata[26],    20_calldata[25] == 24_calldata[25],    20_calldata[24] == 24_calldata[24],    20_calldata[23] == 24_calldata[23],    20_calldata[22] == 24_calldata[22],    20_calldata[21] == 24_calldata[21],    20_calldata[20] == 24_calldata[20],    20_calldata[19] == 24_calldata[19],    20_calldata[18] == 24_calldata[18],    20_calldata[17] == 24_calldata[17],    20_calldata[16] == 24_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1426"}, {"arrows": "to", "from": "1425", "label": "And(Extract(7, 0, caller20) == 24_calldata[35],    Extract(15, 8, caller20) == 24_calldata[34],    Extract(23, 16, caller20) == 24_calldata[33],    Extract(31, 24, caller20) == 24_calldata[32],    Extract(39, 32, caller20) == 24_calldata[31],    Extract(47, 40, caller20) == 24_calldata[30],    Extract(55, 48, caller20) == 24_calldata[29],    Extract(63, 56, caller20) == 24_calldata[28],    Extract(71, 64, caller20) == 24_calldata[27],    Extract(79, 72, caller20) == 24_calldata[26],    Extract(87, 80, caller20) == 24_calldata[25],    Extract(95, 88, caller20) == 24_calldata[24],    Extract(0x67, 96, caller20) == 24_calldata[23],    Extract(0x6f, 0x68, caller20) == 24_calldata[22],    Extract(0x77, 0x70, caller20) == 24_calldata[21],    Extract(0x7f, 0x78, caller20) == 24_calldata[20],    Extract(0x87, 0x80, caller20) == 24_calldata[19],    Extract(0x8f, 0x88, caller20) == 24_calldata[18],    Extract(0x97, 0x90, caller20) == 24_calldata[17],    Extract(0x9f, 0x98, caller20) == 24_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1427"}, {"arrows": "to", "from": "1425", "label": "And(Extract(7, 0, caller24) == 24_calldata[35],    Extract(15, 8, caller24) == 24_calldata[34],    Extract(23, 16, caller24) == 24_calldata[33],    Extract(31, 24, caller24) == 24_calldata[32],    Extract(39, 32, caller24) == 24_calldata[31],    Extract(47, 40, caller24) == 24_calldata[30],    Extract(55, 48, caller24) == 24_calldata[29],    Extract(63, 56, caller24) == 24_calldata[28],    Extract(71, 64, caller24) == 24_calldata[27],    Extract(79, 72, caller24) == 24_calldata[26],    Extract(87, 80, caller24) == 24_calldata[25],    Extract(95, 88, caller24) == 24_calldata[24],    Extract(0x67, 96, caller24) == 24_calldata[23],    Extract(0x6f, 0x68, caller24) == 24_calldata[22],    Extract(0x77, 0x70, caller24) == 24_calldata[21],    Extract(0x7f, 0x78, caller24) == 24_calldata[20],    Extract(0x87, 0x80, caller24) == 24_calldata[19],    Extract(0x8f, 0x88, caller24) == 24_calldata[18],    Extract(0x97, 0x90, caller24) == 24_calldata[17],    Extract(0x9f, 0x98, caller24) == 24_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1428"}, {"arrows": "to", "from": "1425", "label": "Or(Not(And(20_calldata[35] == 24_calldata[35],           20_calldata[34] == 24_calldata[34],           20_calldata[33] == 24_calldata[33],           20_calldata[32] == 24_calldata[32],           20_calldata[31] == 24_calldata[31],           20_calldata[30] == 24_calldata[30],           20_calldata[29] == 24_calldata[29],           20_calldata[28] == 24_calldata[28],           20_calldata[27] == 24_calldata[27],           20_calldata[26] == 24_calldata[26],           20_calldata[25] == 24_calldata[25],           20_calldata[24] == 24_calldata[24],           20_calldata[23] == 24_calldata[23],           20_calldata[22] == 24_calldata[22],           20_calldata[21] == 24_calldata[21],           20_calldata[20] == 24_calldata[20],           20_calldata[19] == 24_calldata[19],           20_calldata[18] == 24_calldata[18],           20_calldata[17] == 24_calldata[17],           20_calldata[16] == 24_calldata[16])),   Not(And(Extract(7, 0, caller20) == 24_calldata[35],           Extract(15, 8, caller20) == 24_calldata[34],           Extract(23, 16, caller20) == 24_calldata[33],           Extract(31, 24, caller20) == 24_calldata[32],           Extract(39, 32, caller20) == 24_calldata[31],           Extract(47, 40, caller20) == 24_calldata[30],           Extract(55, 48, caller20) == 24_calldata[29],           Extract(63, 56, caller20) == 24_calldata[28],           Extract(71, 64, caller20) == 24_calldata[27],           Extract(79, 72, caller20) == 24_calldata[26],           Extract(87, 80, caller20) == 24_calldata[25],           Extract(95, 88, caller20) == 24_calldata[24],           Extract(0x67, 96, caller20) == 24_calldata[23],           Extract(0x6f, 0x68, caller20) == 24_calldata[22],           Extract(0x77, 0x70, caller20) == 24_calldata[21],           Extract(0x7f, 0x78, caller20) == 24_calldata[20],           Extract(0x87, 0x80, caller20) == 24_calldata[19],           Extract(0x8f, 0x88, caller20) == 24_calldata[18],           Extract(0x97, 0x90, caller20) == 24_calldata[17],           Extract(0x9f, 0x98, caller20) == 24_calldata[16])),   Not(And(Extract(7, 0, caller24) == 24_calldata[35],           Extract(15, 8, caller24) == 24_calldata[34],           Extract(23, 16, caller24) == 24_calldata[33],           Extract(31, 24, caller24) == 24_calldata[32],           Extract(39, 32, caller24) == 24_calldata[31],           Extract(47, 40, caller24) == 24_calldata[30],           Extract(55, 48, caller24) == 24_calldata[29],           Extract(63, 56, caller24) == 24_calldata[28],           Extract(71, 64, caller24) == 24_calldata[27],           Extract(79, 72, caller24) == 24_calldata[26],           Extract(87, 80, caller24) == 24_calldata[25],           Extract(95, 88, caller24) == 24_calldata[24],           Extract(0x67, 96, caller24) == 24_calldata[23],           Extract(0x6f, 0x68, caller24) == 24_calldata[22],           Extract(0x77, 0x70, caller24) == 24_calldata[21],           Extract(0x7f, 0x78, caller24) == 24_calldata[20],           Extract(0x87, 0x80, caller24) == 24_calldata[19],           Extract(0x8f, 0x88, caller24) == 24_calldata[18],           Extract(0x97, 0x90, caller24) == 24_calldata[17],           Extract(0x9f, 0x98, caller24) == 24_calldata[16])))", "smooth": {"type": "cubicBezier"}, "to": "1429"}, {"arrows": "to", "from": "1429", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1430"}, {"arrows": "to", "from": "1428", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1431"}, {"arrows": "to", "from": "1427", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1432"}, {"arrows": "to", "from": "1426", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1433"}, {"arrows": "to", "from": "1424", "label": "And(20_calldata[35] == 24_calldata[35],    20_calldata[34] == 24_calldata[34],    20_calldata[33] == 24_calldata[33],    20_calldata[32] == 24_calldata[32],    20_calldata[31] == 24_calldata[31],    20_calldata[30] == 24_calldata[30],    20_calldata[29] == 24_calldata[29],    20_calldata[28] == 24_calldata[28],    20_calldata[27] == 24_calldata[27],    20_calldata[26] == 24_calldata[26],    20_calldata[25] == 24_calldata[25],    20_calldata[24] == 24_calldata[24],    20_calldata[23] == 24_calldata[23],    20_calldata[22] == 24_calldata[22],    20_calldata[21] == 24_calldata[21],    20_calldata[20] == 24_calldata[20],    20_calldata[19] == 24_calldata[19],    20_calldata[18] == 24_calldata[18],    20_calldata[17] == 24_calldata[17],    20_calldata[16] == 24_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1434"}, {"arrows": "to", "from": "1424", "label": "And(Extract(7, 0, caller20) == 24_calldata[35],    Extract(15, 8, caller20) == 24_calldata[34],    Extract(23, 16, caller20) == 24_calldata[33],    Extract(31, 24, caller20) == 24_calldata[32],    Extract(39, 32, caller20) == 24_calldata[31],    Extract(47, 40, caller20) == 24_calldata[30],    Extract(55, 48, caller20) == 24_calldata[29],    Extract(63, 56, caller20) == 24_calldata[28],    Extract(71, 64, caller20) == 24_calldata[27],    Extract(79, 72, caller20) == 24_calldata[26],    Extract(87, 80, caller20) == 24_calldata[25],    Extract(95, 88, caller20) == 24_calldata[24],    Extract(0x67, 96, caller20) == 24_calldata[23],    Extract(0x6f, 0x68, caller20) == 24_calldata[22],    Extract(0x77, 0x70, caller20) == 24_calldata[21],    Extract(0x7f, 0x78, caller20) == 24_calldata[20],    Extract(0x87, 0x80, caller20) == 24_calldata[19],    Extract(0x8f, 0x88, caller20) == 24_calldata[18],    Extract(0x97, 0x90, caller20) == 24_calldata[17],    Extract(0x9f, 0x98, caller20) == 24_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1435"}, {"arrows": "to", "from": "1424", "label": "And(Extract(7, 0, caller24) == 24_calldata[35],    Extract(15, 8, caller24) == 24_calldata[34],    Extract(23, 16, caller24) == 24_calldata[33],    Extract(31, 24, caller24) == 24_calldata[32],    Extract(39, 32, caller24) == 24_calldata[31],    Extract(47, 40, caller24) == 24_calldata[30],    Extract(55, 48, caller24) == 24_calldata[29],    Extract(63, 56, caller24) == 24_calldata[28],    Extract(71, 64, caller24) == 24_calldata[27],    Extract(79, 72, caller24) == 24_calldata[26],    Extract(87, 80, caller24) == 24_calldata[25],    Extract(95, 88, caller24) == 24_calldata[24],    Extract(0x67, 96, caller24) == 24_calldata[23],    Extract(0x6f, 0x68, caller24) == 24_calldata[22],    Extract(0x77, 0x70, caller24) == 24_calldata[21],    Extract(0x7f, 0x78, caller24) == 24_calldata[20],    Extract(0x87, 0x80, caller24) == 24_calldata[19],    Extract(0x8f, 0x88, caller24) == 24_calldata[18],    Extract(0x97, 0x90, caller24) == 24_calldata[17],    Extract(0x9f, 0x98, caller24) == 24_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1436"}, {"arrows": "to", "from": "1424", "label": "Or(Not(And(20_calldata[35] == 24_calldata[35],           20_calldata[34] == 24_calldata[34],           20_calldata[33] == 24_calldata[33],           20_calldata[32] == 24_calldata[32],           20_calldata[31] == 24_calldata[31],           20_calldata[30] == 24_calldata[30],           20_calldata[29] == 24_calldata[29],           20_calldata[28] == 24_calldata[28],           20_calldata[27] == 24_calldata[27],           20_calldata[26] == 24_calldata[26],           20_calldata[25] == 24_calldata[25],           20_calldata[24] == 24_calldata[24],           20_calldata[23] == 24_calldata[23],           20_calldata[22] == 24_calldata[22],           20_calldata[21] == 24_calldata[21],           20_calldata[20] == 24_calldata[20],           20_calldata[19] == 24_calldata[19],           20_calldata[18] == 24_calldata[18],           20_calldata[17] == 24_calldata[17],           20_calldata[16] == 24_calldata[16])),   Not(And(Extract(7, 0, caller20) == 24_calldata[35],           Extract(15, 8, caller20) == 24_calldata[34],           Extract(23, 16, caller20) == 24_calldata[33],           Extract(31, 24, caller20) == 24_calldata[32],           Extract(39, 32, caller20) == 24_calldata[31],           Extract(47, 40, caller20) == 24_calldata[30],           Extract(55, 48, caller20) == 24_calldata[29],           Extract(63, 56, caller20) == 24_calldata[28],           Extract(71, 64, caller20) == 24_calldata[27],           Extract(79, 72, caller20) == 24_calldata[26],           Extract(87, 80, caller20) == 24_calldata[25],           Extract(95, 88, caller20) == 24_calldata[24],           Extract(0x67, 96, caller20) == 24_calldata[23],           Extract(0x6f, 0x68, caller20) == 24_calldata[22],           Extract(0x77, 0x70, caller20) == 24_calldata[21],           Extract(0x7f, 0x78, caller20) == 24_calldata[20],           Extract(0x87, 0x80, caller20) == 24_calldata[19],           Extract(0x8f, 0x88, caller20) == 24_calldata[18],           Extract(0x97, 0x90, caller20) == 24_calldata[17],           Extract(0x9f, 0x98, caller20) == 24_calldata[16])),   Not(And(Extract(7, 0, caller24) == 24_calldata[35],           Extract(15, 8, caller24) == 24_calldata[34],           Extract(23, 16, caller24) == 24_calldata[33],           Extract(31, 24, caller24) == 24_calldata[32],           Extract(39, 32, caller24) == 24_calldata[31],           Extract(47, 40, caller24) == 24_calldata[30],           Extract(55, 48, caller24) == 24_calldata[29],           Extract(63, 56, caller24) == 24_calldata[28],           Extract(71, 64, caller24) == 24_calldata[27],           Extract(79, 72, caller24) == 24_calldata[26],           Extract(87, 80, caller24) == 24_calldata[25],           Extract(95, 88, caller24) == 24_calldata[24],           Extract(0x67, 96, caller24) == 24_calldata[23],           Extract(0x6f, 0x68, caller24) == 24_calldata[22],           Extract(0x77, 0x70, caller24) == 24_calldata[21],           Extract(0x7f, 0x78, caller24) == 24_calldata[20],           Extract(0x87, 0x80, caller24) == 24_calldata[19],           Extract(0x8f, 0x88, caller24) == 24_calldata[18],           Extract(0x97, 0x90, caller24) == 24_calldata[17],           Extract(0x9f, 0x98, caller24) == 24_calldata[16])))", "smooth": {"type": "cubicBezier"}, "to": "1437"}, {"arrows": "to", "from": "1437", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1438"}, {"arrows": "to", "from": "1436", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1439"}, {"arrows": "to", "from": "1435", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1440"}, {"arrows": "to", "from": "1434", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1441"}, {"arrows": "to", "from": "1423", "label": "And(20_calldata[35] == 24_calldata[35],    20_calldata[34] == 24_calldata[34],    20_calldata[33] == 24_calldata[33],    20_calldata[32] == 24_calldata[32],    20_calldata[31] == 24_calldata[31],    20_calldata[30] == 24_calldata[30],    20_calldata[29] == 24_calldata[29],    20_calldata[28] == 24_calldata[28],    20_calldata[27] == 24_calldata[27],    20_calldata[26] == 24_calldata[26],    20_calldata[25] == 24_calldata[25],    20_calldata[24] == 24_calldata[24],    20_calldata[23] == 24_calldata[23],    20_calldata[22] == 24_calldata[22],    20_calldata[21] == 24_calldata[21],    20_calldata[20] == 24_calldata[20],    20_calldata[19] == 24_calldata[19],    20_calldata[18] == 24_calldata[18],    20_calldata[17] == 24_calldata[17],    20_calldata[16] == 24_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1442"}, {"arrows": "to", "from": "1423", "label": "And(Extract(7, 0, caller20) == 24_calldata[35],    Extract(15, 8, caller20) == 24_calldata[34],    Extract(23, 16, caller20) == 24_calldata[33],    Extract(31, 24, caller20) == 24_calldata[32],    Extract(39, 32, caller20) == 24_calldata[31],    Extract(47, 40, caller20) == 24_calldata[30],    Extract(55, 48, caller20) == 24_calldata[29],    Extract(63, 56, caller20) == 24_calldata[28],    Extract(71, 64, caller20) == 24_calldata[27],    Extract(79, 72, caller20) == 24_calldata[26],    Extract(87, 80, caller20) == 24_calldata[25],    Extract(95, 88, caller20) == 24_calldata[24],    Extract(0x67, 96, caller20) == 24_calldata[23],    Extract(0x6f, 0x68, caller20) == 24_calldata[22],    Extract(0x77, 0x70, caller20) == 24_calldata[21],    Extract(0x7f, 0x78, caller20) == 24_calldata[20],    Extract(0x87, 0x80, caller20) == 24_calldata[19],    Extract(0x8f, 0x88, caller20) == 24_calldata[18],    Extract(0x97, 0x90, caller20) == 24_calldata[17],    Extract(0x9f, 0x98, caller20) == 24_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1443"}, {"arrows": "to", "from": "1423", "label": "And(Extract(7, 0, caller24) == 24_calldata[35],    Extract(15, 8, caller24) == 24_calldata[34],    Extract(23, 16, caller24) == 24_calldata[33],    Extract(31, 24, caller24) == 24_calldata[32],    Extract(39, 32, caller24) == 24_calldata[31],    Extract(47, 40, caller24) == 24_calldata[30],    Extract(55, 48, caller24) == 24_calldata[29],    Extract(63, 56, caller24) == 24_calldata[28],    Extract(71, 64, caller24) == 24_calldata[27],    Extract(79, 72, caller24) == 24_calldata[26],    Extract(87, 80, caller24) == 24_calldata[25],    Extract(95, 88, caller24) == 24_calldata[24],    Extract(0x67, 96, caller24) == 24_calldata[23],    Extract(0x6f, 0x68, caller24) == 24_calldata[22],    Extract(0x77, 0x70, caller24) == 24_calldata[21],    Extract(0x7f, 0x78, caller24) == 24_calldata[20],    Extract(0x87, 0x80, caller24) == 24_calldata[19],    Extract(0x8f, 0x88, caller24) == 24_calldata[18],    Extract(0x97, 0x90, caller24) == 24_calldata[17],    Extract(0x9f, 0x98, caller24) == 24_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1444"}, {"arrows": "to", "from": "1423", "label": "Or(Not(And(20_calldata[35] == 24_calldata[35],           20_calldata[34] == 24_calldata[34],           20_calldata[33] == 24_calldata[33],           20_calldata[32] == 24_calldata[32],           20_calldata[31] == 24_calldata[31],           20_calldata[30] == 24_calldata[30],           20_calldata[29] == 24_calldata[29],           20_calldata[28] == 24_calldata[28],           20_calldata[27] == 24_calldata[27],           20_calldata[26] == 24_calldata[26],           20_calldata[25] == 24_calldata[25],           20_calldata[24] == 24_calldata[24],           20_calldata[23] == 24_calldata[23],           20_calldata[22] == 24_calldata[22],           20_calldata[21] == 24_calldata[21],           20_calldata[20] == 24_calldata[20],           20_calldata[19] == 24_calldata[19],           20_calldata[18] == 24_calldata[18],           20_calldata[17] == 24_calldata[17],           20_calldata[16] == 24_calldata[16])),   Not(And(Extract(7, 0, caller20) == 24_calldata[35],           Extract(15, 8, caller20) == 24_calldata[34],           Extract(23, 16, caller20) == 24_calldata[33],           Extract(31, 24, caller20) == 24_calldata[32],           Extract(39, 32, caller20) == 24_calldata[31],           Extract(47, 40, caller20) == 24_calldata[30],           Extract(55, 48, caller20) == 24_calldata[29],           Extract(63, 56, caller20) == 24_calldata[28],           Extract(71, 64, caller20) == 24_calldata[27],           Extract(79, 72, caller20) == 24_calldata[26],           Extract(87, 80, caller20) == 24_calldata[25],           Extract(95, 88, caller20) == 24_calldata[24],           Extract(0x67, 96, caller20) == 24_calldata[23],           Extract(0x6f, 0x68, caller20) == 24_calldata[22],           Extract(0x77, 0x70, caller20) == 24_calldata[21],           Extract(0x7f, 0x78, caller20) == 24_calldata[20],           Extract(0x87, 0x80, caller20) == 24_calldata[19],           Extract(0x8f, 0x88, caller20) == 24_calldata[18],           Extract(0x97, 0x90, caller20) == 24_calldata[17],           Extract(0x9f, 0x98, caller20) == 24_calldata[16])),   Not(And(Extract(7, 0, caller24) == 24_calldata[35],           Extract(15, 8, caller24) == 24_calldata[34],           Extract(23, 16, caller24) == 24_calldata[33],           Extract(31, 24, caller24) == 24_calldata[32],           Extract(39, 32, caller24) == 24_calldata[31],           Extract(47, 40, caller24) == 24_calldata[30],           Extract(55, 48, caller24) == 24_calldata[29],           Extract(63, 56, caller24) == 24_calldata[28],           Extract(71, 64, caller24) == 24_calldata[27],           Extract(79, 72, caller24) == 24_calldata[26],           Extract(87, 80, caller24) == 24_calldata[25],           Extract(95, 88, caller24) == 24_calldata[24],           Extract(0x67, 96, caller24) == 24_calldata[23],           Extract(0x6f, 0x68, caller24) == 24_calldata[22],           Extract(0x77, 0x70, caller24) == 24_calldata[21],           Extract(0x7f, 0x78, caller24) == 24_calldata[20],           Extract(0x87, 0x80, caller24) == 24_calldata[19],           Extract(0x8f, 0x88, caller24) == 24_calldata[18],           Extract(0x97, 0x90, caller24) == 24_calldata[17],           Extract(0x9f, 0x98, caller24) == 24_calldata[16])))", "smooth": {"type": "cubicBezier"}, "to": "1445"}, {"arrows": "to", "from": "1445", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1446"}, {"arrows": "to", "from": "1444", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1447"}, {"arrows": "to", "from": "1443", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1448"}, {"arrows": "to", "from": "1442", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1449"}, {"arrows": "to", "from": "1421", "label": "And(20_calldata[35] == 24_calldata[35],    20_calldata[34] == 24_calldata[34],    20_calldata[33] == 24_calldata[33],    20_calldata[32] == 24_calldata[32],    20_calldata[31] == 24_calldata[31],    20_calldata[30] == 24_calldata[30],    20_calldata[29] == 24_calldata[29],    20_calldata[28] == 24_calldata[28],    20_calldata[27] == 24_calldata[27],    20_calldata[26] == 24_calldata[26],    20_calldata[25] == 24_calldata[25],    20_calldata[24] == 24_calldata[24],    20_calldata[23] == 24_calldata[23],    20_calldata[22] == 24_calldata[22],    20_calldata[21] == 24_calldata[21],    20_calldata[20] == 24_calldata[20],    20_calldata[19] == 24_calldata[19],    20_calldata[18] == 24_calldata[18],    20_calldata[17] == 24_calldata[17],    20_calldata[16] == 24_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1450"}, {"arrows": "to", "from": "1421", "label": "And(Extract(7, 0, caller20) == 24_calldata[35],    Extract(15, 8, caller20) == 24_calldata[34],    Extract(23, 16, caller20) == 24_calldata[33],    Extract(31, 24, caller20) == 24_calldata[32],    Extract(39, 32, caller20) == 24_calldata[31],    Extract(47, 40, caller20) == 24_calldata[30],    Extract(55, 48, caller20) == 24_calldata[29],    Extract(63, 56, caller20) == 24_calldata[28],    Extract(71, 64, caller20) == 24_calldata[27],    Extract(79, 72, caller20) == 24_calldata[26],    Extract(87, 80, caller20) == 24_calldata[25],    Extract(95, 88, caller20) == 24_calldata[24],    Extract(0x67, 96, caller20) == 24_calldata[23],    Extract(0x6f, 0x68, caller20) == 24_calldata[22],    Extract(0x77, 0x70, caller20) == 24_calldata[21],    Extract(0x7f, 0x78, caller20) == 24_calldata[20],    Extract(0x87, 0x80, caller20) == 24_calldata[19],    Extract(0x8f, 0x88, caller20) == 24_calldata[18],    Extract(0x97, 0x90, caller20) == 24_calldata[17],    Extract(0x9f, 0x98, caller20) == 24_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1451"}, {"arrows": "to", "from": "1451", "label": "And(20_calldata[35] == 24_calldata[35],    20_calldata[34] == 24_calldata[34],    20_calldata[33] == 24_calldata[33],    20_calldata[32] == 24_calldata[32],    20_calldata[31] == 24_calldata[31],    20_calldata[30] == 24_calldata[30],    20_calldata[29] == 24_calldata[29],    20_calldata[28] == 24_calldata[28],    20_calldata[27] == 24_calldata[27],    20_calldata[26] == 24_calldata[26],    20_calldata[25] == 24_calldata[25],    20_calldata[24] == 24_calldata[24],    20_calldata[23] == 24_calldata[23],    20_calldata[22] == 24_calldata[22],    20_calldata[21] == 24_calldata[21],    20_calldata[20] == 24_calldata[20],    20_calldata[19] == 24_calldata[19],    20_calldata[18] == 24_calldata[18],    20_calldata[17] == 24_calldata[17],    20_calldata[16] == 24_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1452"}, {"arrows": "to", "from": "1451", "label": "And(Extract(7, 0, caller20) == 24_calldata[35],    Extract(15, 8, caller20) == 24_calldata[34],    Extract(23, 16, caller20) == 24_calldata[33],    Extract(31, 24, caller20) == 24_calldata[32],    Extract(39, 32, caller20) == 24_calldata[31],    Extract(47, 40, caller20) == 24_calldata[30],    Extract(55, 48, caller20) == 24_calldata[29],    Extract(63, 56, caller20) == 24_calldata[28],    Extract(71, 64, caller20) == 24_calldata[27],    Extract(79, 72, caller20) == 24_calldata[26],    Extract(87, 80, caller20) == 24_calldata[25],    Extract(95, 88, caller20) == 24_calldata[24],    Extract(0x67, 96, caller20) == 24_calldata[23],    Extract(0x6f, 0x68, caller20) == 24_calldata[22],    Extract(0x77, 0x70, caller20) == 24_calldata[21],    Extract(0x7f, 0x78, caller20) == 24_calldata[20],    Extract(0x87, 0x80, caller20) == 24_calldata[19],    Extract(0x8f, 0x88, caller20) == 24_calldata[18],    Extract(0x97, 0x90, caller20) == 24_calldata[17],    Extract(0x9f, 0x98, caller20) == 24_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1453"}, {"arrows": "to", "from": "1451", "label": "Or(Not(And(20_calldata[35] == 24_calldata[35],           20_calldata[34] == 24_calldata[34],           20_calldata[33] == 24_calldata[33],           20_calldata[32] == 24_calldata[32],           20_calldata[31] == 24_calldata[31],           20_calldata[30] == 24_calldata[30],           20_calldata[29] == 24_calldata[29],           20_calldata[28] == 24_calldata[28],           20_calldata[27] == 24_calldata[27],           20_calldata[26] == 24_calldata[26],           20_calldata[25] == 24_calldata[25],           20_calldata[24] == 24_calldata[24],           20_calldata[23] == 24_calldata[23],           20_calldata[22] == 24_calldata[22],           20_calldata[21] == 24_calldata[21],           20_calldata[20] == 24_calldata[20],           20_calldata[19] == 24_calldata[19],           20_calldata[18] == 24_calldata[18],           20_calldata[17] == 24_calldata[17],           20_calldata[16] == 24_calldata[16])),   Not(And(Extract(7, 0, caller20) == 24_calldata[35],           Extract(15, 8, caller20) == 24_calldata[34],           Extract(23, 16, caller20) == 24_calldata[33],           Extract(31, 24, caller20) == 24_calldata[32],           Extract(39, 32, caller20) == 24_calldata[31],           Extract(47, 40, caller20) == 24_calldata[30],           Extract(55, 48, caller20) == 24_calldata[29],           Extract(63, 56, caller20) == 24_calldata[28],           Extract(71, 64, caller20) == 24_calldata[27],           Extract(79, 72, caller20) == 24_calldata[26],           Extract(87, 80, caller20) == 24_calldata[25],           Extract(95, 88, caller20) == 24_calldata[24],           Extract(0x67, 96, caller20) == 24_calldata[23],           Extract(0x6f, 0x68, caller20) == 24_calldata[22],           Extract(0x77, 0x70, caller20) == 24_calldata[21],           Extract(0x7f, 0x78, caller20) == 24_calldata[20],           Extract(0x87, 0x80, caller20) == 24_calldata[19],           Extract(0x8f, 0x88, caller20) == 24_calldata[18],           Extract(0x97, 0x90, caller20) == 24_calldata[17],           Extract(0x9f, 0x98, caller20) == 24_calldata[16])))", "smooth": {"type": "cubicBezier"}, "to": "1454"}, {"arrows": "to", "from": "1454", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1455"}, {"arrows": "to", "from": "1453", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1456"}, {"arrows": "to", "from": "1452", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1457"}, {"arrows": "to", "from": "1450", "label": "And(20_calldata[35] == 24_calldata[35],    20_calldata[34] == 24_calldata[34],    20_calldata[33] == 24_calldata[33],    20_calldata[32] == 24_calldata[32],    20_calldata[31] == 24_calldata[31],    20_calldata[30] == 24_calldata[30],    20_calldata[29] == 24_calldata[29],    20_calldata[28] == 24_calldata[28],    20_calldata[27] == 24_calldata[27],    20_calldata[26] == 24_calldata[26],    20_calldata[25] == 24_calldata[25],    20_calldata[24] == 24_calldata[24],    20_calldata[23] == 24_calldata[23],    20_calldata[22] == 24_calldata[22],    20_calldata[21] == 24_calldata[21],    20_calldata[20] == 24_calldata[20],    20_calldata[19] == 24_calldata[19],    20_calldata[18] == 24_calldata[18],    20_calldata[17] == 24_calldata[17],    20_calldata[16] == 24_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1458"}, {"arrows": "to", "from": "1450", "label": "And(Extract(7, 0, caller20) == 24_calldata[35],    Extract(15, 8, caller20) == 24_calldata[34],    Extract(23, 16, caller20) == 24_calldata[33],    Extract(31, 24, caller20) == 24_calldata[32],    Extract(39, 32, caller20) == 24_calldata[31],    Extract(47, 40, caller20) == 24_calldata[30],    Extract(55, 48, caller20) == 24_calldata[29],    Extract(63, 56, caller20) == 24_calldata[28],    Extract(71, 64, caller20) == 24_calldata[27],    Extract(79, 72, caller20) == 24_calldata[26],    Extract(87, 80, caller20) == 24_calldata[25],    Extract(95, 88, caller20) == 24_calldata[24],    Extract(0x67, 96, caller20) == 24_calldata[23],    Extract(0x6f, 0x68, caller20) == 24_calldata[22],    Extract(0x77, 0x70, caller20) == 24_calldata[21],    Extract(0x7f, 0x78, caller20) == 24_calldata[20],    Extract(0x87, 0x80, caller20) == 24_calldata[19],    Extract(0x8f, 0x88, caller20) == 24_calldata[18],    Extract(0x97, 0x90, caller20) == 24_calldata[17],    Extract(0x9f, 0x98, caller20) == 24_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1459"}, {"arrows": "to", "from": "1450", "label": "Or(Not(And(20_calldata[35] == 24_calldata[35],           20_calldata[34] == 24_calldata[34],           20_calldata[33] == 24_calldata[33],           20_calldata[32] == 24_calldata[32],           20_calldata[31] == 24_calldata[31],           20_calldata[30] == 24_calldata[30],           20_calldata[29] == 24_calldata[29],           20_calldata[28] == 24_calldata[28],           20_calldata[27] == 24_calldata[27],           20_calldata[26] == 24_calldata[26],           20_calldata[25] == 24_calldata[25],           20_calldata[24] == 24_calldata[24],           20_calldata[23] == 24_calldata[23],           20_calldata[22] == 24_calldata[22],           20_calldata[21] == 24_calldata[21],           20_calldata[20] == 24_calldata[20],           20_calldata[19] == 24_calldata[19],           20_calldata[18] == 24_calldata[18],           20_calldata[17] == 24_calldata[17],           20_calldata[16] == 24_calldata[16])),   Not(And(Extract(7, 0, caller20) == 24_calldata[35],           Extract(15, 8, caller20) == 24_calldata[34],           Extract(23, 16, caller20) == 24_calldata[33],           Extract(31, 24, caller20) == 24_calldata[32],           Extract(39, 32, caller20) == 24_calldata[31],           Extract(47, 40, caller20) == 24_calldata[30],           Extract(55, 48, caller20) == 24_calldata[29],           Extract(63, 56, caller20) == 24_calldata[28],           Extract(71, 64, caller20) == 24_calldata[27],           Extract(79, 72, caller20) == 24_calldata[26],           Extract(87, 80, caller20) == 24_calldata[25],           Extract(95, 88, caller20) == 24_calldata[24],           Extract(0x67, 96, caller20) == 24_calldata[23],           Extract(0x6f, 0x68, caller20) == 24_calldata[22],           Extract(0x77, 0x70, caller20) == 24_calldata[21],           Extract(0x7f, 0x78, caller20) == 24_calldata[20],           Extract(0x87, 0x80, caller20) == 24_calldata[19],           Extract(0x8f, 0x88, caller20) == 24_calldata[18],           Extract(0x97, 0x90, caller20) == 24_calldata[17],           Extract(0x9f, 0x98, caller20) == 24_calldata[16])))", "smooth": {"type": "cubicBezier"}, "to": "1460"}, {"arrows": "to", "from": "1460", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1461"}, {"arrows": "to", "from": "1459", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1462"}, {"arrows": "to", "from": "1458", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1463"}, {"arrows": "to", "from": "1420", "label": "And(20_calldata[35] == 24_calldata[35],    20_calldata[34] == 24_calldata[34],    20_calldata[33] == 24_calldata[33],    20_calldata[32] == 24_calldata[32],    20_calldata[31] == 24_calldata[31],    20_calldata[30] == 24_calldata[30],    20_calldata[29] == 24_calldata[29],    20_calldata[28] == 24_calldata[28],    20_calldata[27] == 24_calldata[27],    20_calldata[26] == 24_calldata[26],    20_calldata[25] == 24_calldata[25],    20_calldata[24] == 24_calldata[24],    20_calldata[23] == 24_calldata[23],    20_calldata[22] == 24_calldata[22],    20_calldata[21] == 24_calldata[21],    20_calldata[20] == 24_calldata[20],    20_calldata[19] == 24_calldata[19],    20_calldata[18] == 24_calldata[18],    20_calldata[17] == 24_calldata[17],    20_calldata[16] == 24_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1464"}, {"arrows": "to", "from": "1420", "label": "And(Extract(7, 0, caller20) == 24_calldata[35],    Extract(15, 8, caller20) == 24_calldata[34],    Extract(23, 16, caller20) == 24_calldata[33],    Extract(31, 24, caller20) == 24_calldata[32],    Extract(39, 32, caller20) == 24_calldata[31],    Extract(47, 40, caller20) == 24_calldata[30],    Extract(55, 48, caller20) == 24_calldata[29],    Extract(63, 56, caller20) == 24_calldata[28],    Extract(71, 64, caller20) == 24_calldata[27],    Extract(79, 72, caller20) == 24_calldata[26],    Extract(87, 80, caller20) == 24_calldata[25],    Extract(95, 88, caller20) == 24_calldata[24],    Extract(0x67, 96, caller20) == 24_calldata[23],    Extract(0x6f, 0x68, caller20) == 24_calldata[22],    Extract(0x77, 0x70, caller20) == 24_calldata[21],    Extract(0x7f, 0x78, caller20) == 24_calldata[20],    Extract(0x87, 0x80, caller20) == 24_calldata[19],    Extract(0x8f, 0x88, caller20) == 24_calldata[18],    Extract(0x97, 0x90, caller20) == 24_calldata[17],    Extract(0x9f, 0x98, caller20) == 24_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1465"}, {"arrows": "to", "from": "1465", "label": "And(20_calldata[35] == 24_calldata[35],    20_calldata[34] == 24_calldata[34],    20_calldata[33] == 24_calldata[33],    20_calldata[32] == 24_calldata[32],    20_calldata[31] == 24_calldata[31],    20_calldata[30] == 24_calldata[30],    20_calldata[29] == 24_calldata[29],    20_calldata[28] == 24_calldata[28],    20_calldata[27] == 24_calldata[27],    20_calldata[26] == 24_calldata[26],    20_calldata[25] == 24_calldata[25],    20_calldata[24] == 24_calldata[24],    20_calldata[23] == 24_calldata[23],    20_calldata[22] == 24_calldata[22],    20_calldata[21] == 24_calldata[21],    20_calldata[20] == 24_calldata[20],    20_calldata[19] == 24_calldata[19],    20_calldata[18] == 24_calldata[18],    20_calldata[17] == 24_calldata[17],    20_calldata[16] == 24_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1466"}, {"arrows": "to", "from": "1465", "label": "And(Extract(7, 0, caller20) == 24_calldata[35],    Extract(15, 8, caller20) == 24_calldata[34],    Extract(23, 16, caller20) == 24_calldata[33],    Extract(31, 24, caller20) == 24_calldata[32],    Extract(39, 32, caller20) == 24_calldata[31],    Extract(47, 40, caller20) == 24_calldata[30],    Extract(55, 48, caller20) == 24_calldata[29],    Extract(63, 56, caller20) == 24_calldata[28],    Extract(71, 64, caller20) == 24_calldata[27],    Extract(79, 72, caller20) == 24_calldata[26],    Extract(87, 80, caller20) == 24_calldata[25],    Extract(95, 88, caller20) == 24_calldata[24],    Extract(0x67, 96, caller20) == 24_calldata[23],    Extract(0x6f, 0x68, caller20) == 24_calldata[22],    Extract(0x77, 0x70, caller20) == 24_calldata[21],    Extract(0x7f, 0x78, caller20) == 24_calldata[20],    Extract(0x87, 0x80, caller20) == 24_calldata[19],    Extract(0x8f, 0x88, caller20) == 24_calldata[18],    Extract(0x97, 0x90, caller20) == 24_calldata[17],    Extract(0x9f, 0x98, caller20) == 24_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1467"}, {"arrows": "to", "from": "1465", "label": "Or(Not(And(20_calldata[35] == 24_calldata[35],           20_calldata[34] == 24_calldata[34],           20_calldata[33] == 24_calldata[33],           20_calldata[32] == 24_calldata[32],           20_calldata[31] == 24_calldata[31],           20_calldata[30] == 24_calldata[30],           20_calldata[29] == 24_calldata[29],           20_calldata[28] == 24_calldata[28],           20_calldata[27] == 24_calldata[27],           20_calldata[26] == 24_calldata[26],           20_calldata[25] == 24_calldata[25],           20_calldata[24] == 24_calldata[24],           20_calldata[23] == 24_calldata[23],           20_calldata[22] == 24_calldata[22],           20_calldata[21] == 24_calldata[21],           20_calldata[20] == 24_calldata[20],           20_calldata[19] == 24_calldata[19],           20_calldata[18] == 24_calldata[18],           20_calldata[17] == 24_calldata[17],           20_calldata[16] == 24_calldata[16])),   Not(And(Extract(7, 0, caller20) == 24_calldata[35],           Extract(15, 8, caller20) == 24_calldata[34],           Extract(23, 16, caller20) == 24_calldata[33],           Extract(31, 24, caller20) == 24_calldata[32],           Extract(39, 32, caller20) == 24_calldata[31],           Extract(47, 40, caller20) == 24_calldata[30],           Extract(55, 48, caller20) == 24_calldata[29],           Extract(63, 56, caller20) == 24_calldata[28],           Extract(71, 64, caller20) == 24_calldata[27],           Extract(79, 72, caller20) == 24_calldata[26],           Extract(87, 80, caller20) == 24_calldata[25],           Extract(95, 88, caller20) == 24_calldata[24],           Extract(0x67, 96, caller20) == 24_calldata[23],           Extract(0x6f, 0x68, caller20) == 24_calldata[22],           Extract(0x77, 0x70, caller20) == 24_calldata[21],           Extract(0x7f, 0x78, caller20) == 24_calldata[20],           Extract(0x87, 0x80, caller20) == 24_calldata[19],           Extract(0x8f, 0x88, caller20) == 24_calldata[18],           Extract(0x97, 0x90, caller20) == 24_calldata[17],           Extract(0x9f, 0x98, caller20) == 24_calldata[16])))", "smooth": {"type": "cubicBezier"}, "to": "1468"}, {"arrows": "to", "from": "1468", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1469"}, {"arrows": "to", "from": "1467", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1470"}, {"arrows": "to", "from": "1466", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1471"}, {"arrows": "to", "from": "1464", "label": "And(20_calldata[35] == 24_calldata[35],    20_calldata[34] == 24_calldata[34],    20_calldata[33] == 24_calldata[33],    20_calldata[32] == 24_calldata[32],    20_calldata[31] == 24_calldata[31],    20_calldata[30] == 24_calldata[30],    20_calldata[29] == 24_calldata[29],    20_calldata[28] == 24_calldata[28],    20_calldata[27] == 24_calldata[27],    20_calldata[26] == 24_calldata[26],    20_calldata[25] == 24_calldata[25],    20_calldata[24] == 24_calldata[24],    20_calldata[23] == 24_calldata[23],    20_calldata[22] == 24_calldata[22],    20_calldata[21] == 24_calldata[21],    20_calldata[20] == 24_calldata[20],    20_calldata[19] == 24_calldata[19],    20_calldata[18] == 24_calldata[18],    20_calldata[17] == 24_calldata[17],    20_calldata[16] == 24_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1472"}, {"arrows": "to", "from": "1464", "label": "And(Extract(7, 0, caller20) == 24_calldata[35],    Extract(15, 8, caller20) == 24_calldata[34],    Extract(23, 16, caller20) == 24_calldata[33],    Extract(31, 24, caller20) == 24_calldata[32],    Extract(39, 32, caller20) == 24_calldata[31],    Extract(47, 40, caller20) == 24_calldata[30],    Extract(55, 48, caller20) == 24_calldata[29],    Extract(63, 56, caller20) == 24_calldata[28],    Extract(71, 64, caller20) == 24_calldata[27],    Extract(79, 72, caller20) == 24_calldata[26],    Extract(87, 80, caller20) == 24_calldata[25],    Extract(95, 88, caller20) == 24_calldata[24],    Extract(0x67, 96, caller20) == 24_calldata[23],    Extract(0x6f, 0x68, caller20) == 24_calldata[22],    Extract(0x77, 0x70, caller20) == 24_calldata[21],    Extract(0x7f, 0x78, caller20) == 24_calldata[20],    Extract(0x87, 0x80, caller20) == 24_calldata[19],    Extract(0x8f, 0x88, caller20) == 24_calldata[18],    Extract(0x97, 0x90, caller20) == 24_calldata[17],    Extract(0x9f, 0x98, caller20) == 24_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1473"}, {"arrows": "to", "from": "1464", "label": "Or(Not(And(20_calldata[35] == 24_calldata[35],           20_calldata[34] == 24_calldata[34],           20_calldata[33] == 24_calldata[33],           20_calldata[32] == 24_calldata[32],           20_calldata[31] == 24_calldata[31],           20_calldata[30] == 24_calldata[30],           20_calldata[29] == 24_calldata[29],           20_calldata[28] == 24_calldata[28],           20_calldata[27] == 24_calldata[27],           20_calldata[26] == 24_calldata[26],           20_calldata[25] == 24_calldata[25],           20_calldata[24] == 24_calldata[24],           20_calldata[23] == 24_calldata[23],           20_calldata[22] == 24_calldata[22],           20_calldata[21] == 24_calldata[21],           20_calldata[20] == 24_calldata[20],           20_calldata[19] == 24_calldata[19],           20_calldata[18] == 24_calldata[18],           20_calldata[17] == 24_calldata[17],           20_calldata[16] == 24_calldata[16])),   Not(And(Extract(7, 0, caller20) == 24_calldata[35],           Extract(15, 8, caller20) == 24_calldata[34],           Extract(23, 16, caller20) == 24_calldata[33],           Extract(31, 24, caller20) == 24_calldata[32],           Extract(39, 32, caller20) == 24_calldata[31],           Extract(47, 40, caller20) == 24_calldata[30],           Extract(55, 48, caller20) == 24_calldata[29],           Extract(63, 56, caller20) == 24_calldata[28],           Extract(71, 64, caller20) == 24_calldata[27],           Extract(79, 72, caller20) == 24_calldata[26],           Extract(87, 80, caller20) == 24_calldata[25],           Extract(95, 88, caller20) == 24_calldata[24],           Extract(0x67, 96, caller20) == 24_calldata[23],           Extract(0x6f, 0x68, caller20) == 24_calldata[22],           Extract(0x77, 0x70, caller20) == 24_calldata[21],           Extract(0x7f, 0x78, caller20) == 24_calldata[20],           Extract(0x87, 0x80, caller20) == 24_calldata[19],           Extract(0x8f, 0x88, caller20) == 24_calldata[18],           Extract(0x97, 0x90, caller20) == 24_calldata[17],           Extract(0x9f, 0x98, caller20) == 24_calldata[16])))", "smooth": {"type": "cubicBezier"}, "to": "1474"}, {"arrows": "to", "from": "1474", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1475"}, {"arrows": "to", "from": "1473", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1476"}, {"arrows": "to", "from": "1472", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1477"}, {"arrows": "to", "from": "1417", "label": "True", "smooth": {"type": "cubicBezier"}, "to": "1478"}, {"arrows": "to", "from": "1478", "label": "And(20_calldata[35] == Extract(7, 0, caller24),    20_calldata[34] == Extract(15, 8, caller24),    20_calldata[33] == Extract(23, 16, caller24),    20_calldata[32] == Extract(31, 24, caller24),    20_calldata[31] == Extract(39, 32, caller24),    20_calldata[30] == Extract(47, 40, caller24),    20_calldata[29] == Extract(55, 48, caller24),    20_calldata[28] == Extract(63, 56, caller24),    20_calldata[27] == Extract(71, 64, caller24),    20_calldata[26] == Extract(79, 72, caller24),    20_calldata[25] == Extract(87, 80, caller24),    20_calldata[24] == Extract(95, 88, caller24),    20_calldata[23] == Extract(0x67, 96, caller24),    20_calldata[22] == Extract(0x6f, 0x68, caller24),    20_calldata[21] == Extract(0x77, 0x70, caller24),    20_calldata[20] == Extract(0x7f, 0x78, caller24),    20_calldata[19] == Extract(0x87, 0x80, caller24),    20_calldata[18] == Extract(0x8f, 0x88, caller24),    20_calldata[17] == Extract(0x97, 0x90, caller24),    20_calldata[16] == Extract(0x9f, 0x98, caller24))", "smooth": {"type": "cubicBezier"}, "to": "1479"}, {"arrows": "to", "from": "1478", "label": "Extract(0x9f, 0, caller20) == Extract(0x9f, 0, caller24)", "smooth": {"type": "cubicBezier"}, "to": "1480"}, {"arrows": "to", "from": "1478", "label": "Or(Not(And(20_calldata[35] == Extract(7, 0, caller24),           20_calldata[34] == Extract(15, 8, caller24),           20_calldata[33] == Extract(23, 16, caller24),           20_calldata[32] == Extract(31, 24, caller24),           20_calldata[31] == Extract(39, 32, caller24),           20_calldata[30] == Extract(47, 40, caller24),           20_calldata[29] == Extract(55, 48, caller24),           20_calldata[28] == Extract(63, 56, caller24),           20_calldata[27] == Extract(71, 64, caller24),           20_calldata[26] == Extract(79, 72, caller24),           20_calldata[25] == Extract(87, 80, caller24),           20_calldata[24] == Extract(95, 88, caller24),           20_calldata[23] == Extract(0x67, 96, caller24),           20_calldata[22] == Extract(0x6f, 0x68, caller24),           20_calldata[21] == Extract(0x77, 0x70, caller24),           20_calldata[20] == Extract(0x7f, 0x78, caller24),           20_calldata[19] == Extract(0x87, 0x80, caller24),           20_calldata[18] == Extract(0x8f, 0x88, caller24),           20_calldata[17] == Extract(0x97, 0x90, caller24),           20_calldata[16] == Extract(0x9f, 0x98, caller24))),   Not(Extract(0x9f, 0, caller20) ==       Extract(0x9f, 0, caller24)))", "smooth": {"type": "cubicBezier"}, "to": "1481"}, {"arrows": "to", "from": "1481", "label": "And(20_calldata[35] == 24_calldata[35],    20_calldata[34] == 24_calldata[34],    20_calldata[33] == 24_calldata[33],    20_calldata[32] == 24_calldata[32],    20_calldata[31] == 24_calldata[31],    20_calldata[30] == 24_calldata[30],    20_calldata[29] == 24_calldata[29],    20_calldata[28] == 24_calldata[28],    20_calldata[27] == 24_calldata[27],    20_calldata[26] == 24_calldata[26],    20_calldata[25] == 24_calldata[25],    20_calldata[24] == 24_calldata[24],    20_calldata[23] == 24_calldata[23],    20_calldata[22] == 24_calldata[22],    20_calldata[21] == 24_calldata[21],    20_calldata[20] == 24_calldata[20],    20_calldata[19] == 24_calldata[19],    20_calldata[18] == 24_calldata[18],    20_calldata[17] == 24_calldata[17],    20_calldata[16] == 24_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1482"}, {"arrows": "to", "from": "1481", "label": "And(Extract(7, 0, caller20) == 24_calldata[35],    Extract(15, 8, caller20) == 24_calldata[34],    Extract(23, 16, caller20) == 24_calldata[33],    Extract(31, 24, caller20) == 24_calldata[32],    Extract(39, 32, caller20) == 24_calldata[31],    Extract(47, 40, caller20) == 24_calldata[30],    Extract(55, 48, caller20) == 24_calldata[29],    Extract(63, 56, caller20) == 24_calldata[28],    Extract(71, 64, caller20) == 24_calldata[27],    Extract(79, 72, caller20) == 24_calldata[26],    Extract(87, 80, caller20) == 24_calldata[25],    Extract(95, 88, caller20) == 24_calldata[24],    Extract(0x67, 96, caller20) == 24_calldata[23],    Extract(0x6f, 0x68, caller20) == 24_calldata[22],    Extract(0x77, 0x70, caller20) == 24_calldata[21],    Extract(0x7f, 0x78, caller20) == 24_calldata[20],    Extract(0x87, 0x80, caller20) == 24_calldata[19],    Extract(0x8f, 0x88, caller20) == 24_calldata[18],    Extract(0x97, 0x90, caller20) == 24_calldata[17],    Extract(0x9f, 0x98, caller20) == 24_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1483"}, {"arrows": "to", "from": "1481", "label": "And(Extract(7, 0, caller24) == 24_calldata[35],    Extract(15, 8, caller24) == 24_calldata[34],    Extract(23, 16, caller24) == 24_calldata[33],    Extract(31, 24, caller24) == 24_calldata[32],    Extract(39, 32, caller24) == 24_calldata[31],    Extract(47, 40, caller24) == 24_calldata[30],    Extract(55, 48, caller24) == 24_calldata[29],    Extract(63, 56, caller24) == 24_calldata[28],    Extract(71, 64, caller24) == 24_calldata[27],    Extract(79, 72, caller24) == 24_calldata[26],    Extract(87, 80, caller24) == 24_calldata[25],    Extract(95, 88, caller24) == 24_calldata[24],    Extract(0x67, 96, caller24) == 24_calldata[23],    Extract(0x6f, 0x68, caller24) == 24_calldata[22],    Extract(0x77, 0x70, caller24) == 24_calldata[21],    Extract(0x7f, 0x78, caller24) == 24_calldata[20],    Extract(0x87, 0x80, caller24) == 24_calldata[19],    Extract(0x8f, 0x88, caller24) == 24_calldata[18],    Extract(0x97, 0x90, caller24) == 24_calldata[17],    Extract(0x9f, 0x98, caller24) == 24_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1484"}, {"arrows": "to", "from": "1484", "label": "And(20_calldata[35] == 24_calldata[35],    20_calldata[34] == 24_calldata[34],    20_calldata[33] == 24_calldata[33],    20_calldata[32] == 24_calldata[32],    20_calldata[31] == 24_calldata[31],    20_calldata[30] == 24_calldata[30],    20_calldata[29] == 24_calldata[29],    20_calldata[28] == 24_calldata[28],    20_calldata[27] == 24_calldata[27],    20_calldata[26] == 24_calldata[26],    20_calldata[25] == 24_calldata[25],    20_calldata[24] == 24_calldata[24],    20_calldata[23] == 24_calldata[23],    20_calldata[22] == 24_calldata[22],    20_calldata[21] == 24_calldata[21],    20_calldata[20] == 24_calldata[20],    20_calldata[19] == 24_calldata[19],    20_calldata[18] == 24_calldata[18],    20_calldata[17] == 24_calldata[17],    20_calldata[16] == 24_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1485"}, {"arrows": "to", "from": "1484", "label": "And(Extract(7, 0, caller20) == 24_calldata[35],    Extract(15, 8, caller20) == 24_calldata[34],    Extract(23, 16, caller20) == 24_calldata[33],    Extract(31, 24, caller20) == 24_calldata[32],    Extract(39, 32, caller20) == 24_calldata[31],    Extract(47, 40, caller20) == 24_calldata[30],    Extract(55, 48, caller20) == 24_calldata[29],    Extract(63, 56, caller20) == 24_calldata[28],    Extract(71, 64, caller20) == 24_calldata[27],    Extract(79, 72, caller20) == 24_calldata[26],    Extract(87, 80, caller20) == 24_calldata[25],    Extract(95, 88, caller20) == 24_calldata[24],    Extract(0x67, 96, caller20) == 24_calldata[23],    Extract(0x6f, 0x68, caller20) == 24_calldata[22],    Extract(0x77, 0x70, caller20) == 24_calldata[21],    Extract(0x7f, 0x78, caller20) == 24_calldata[20],    Extract(0x87, 0x80, caller20) == 24_calldata[19],    Extract(0x8f, 0x88, caller20) == 24_calldata[18],    Extract(0x97, 0x90, caller20) == 24_calldata[17],    Extract(0x9f, 0x98, caller20) == 24_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1486"}, {"arrows": "to", "from": "1484", "label": "And(Extract(7, 0, caller24) == 24_calldata[35],    Extract(15, 8, caller24) == 24_calldata[34],    Extract(23, 16, caller24) == 24_calldata[33],    Extract(31, 24, caller24) == 24_calldata[32],    Extract(39, 32, caller24) == 24_calldata[31],    Extract(47, 40, caller24) == 24_calldata[30],    Extract(55, 48, caller24) == 24_calldata[29],    Extract(63, 56, caller24) == 24_calldata[28],    Extract(71, 64, caller24) == 24_calldata[27],    Extract(79, 72, caller24) == 24_calldata[26],    Extract(87, 80, caller24) == 24_calldata[25],    Extract(95, 88, caller24) == 24_calldata[24],    Extract(0x67, 96, caller24) == 24_calldata[23],    Extract(0x6f, 0x68, caller24) == 24_calldata[22],    Extract(0x77, 0x70, caller24) == 24_calldata[21],    Extract(0x7f, 0x78, caller24) == 24_calldata[20],    Extract(0x87, 0x80, caller24) == 24_calldata[19],    Extract(0x8f, 0x88, caller24) == 24_calldata[18],    Extract(0x97, 0x90, caller24) == 24_calldata[17],    Extract(0x9f, 0x98, caller24) == 24_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1487"}, {"arrows": "to", "from": "1484", "label": "Or(Not(And(20_calldata[35] == 24_calldata[35],           20_calldata[34] == 24_calldata[34],           20_calldata[33] == 24_calldata[33],           20_calldata[32] == 24_calldata[32],           20_calldata[31] == 24_calldata[31],           20_calldata[30] == 24_calldata[30],           20_calldata[29] == 24_calldata[29],           20_calldata[28] == 24_calldata[28],           20_calldata[27] == 24_calldata[27],           20_calldata[26] == 24_calldata[26],           20_calldata[25] == 24_calldata[25],           20_calldata[24] == 24_calldata[24],           20_calldata[23] == 24_calldata[23],           20_calldata[22] == 24_calldata[22],           20_calldata[21] == 24_calldata[21],           20_calldata[20] == 24_calldata[20],           20_calldata[19] == 24_calldata[19],           20_calldata[18] == 24_calldata[18],           20_calldata[17] == 24_calldata[17],           20_calldata[16] == 24_calldata[16])),   Not(And(Extract(7, 0, caller20) == 24_calldata[35],           Extract(15, 8, caller20) == 24_calldata[34],           Extract(23, 16, caller20) == 24_calldata[33],           Extract(31, 24, caller20) == 24_calldata[32],           Extract(39, 32, caller20) == 24_calldata[31],           Extract(47, 40, caller20) == 24_calldata[30],           Extract(55, 48, caller20) == 24_calldata[29],           Extract(63, 56, caller20) == 24_calldata[28],           Extract(71, 64, caller20) == 24_calldata[27],           Extract(79, 72, caller20) == 24_calldata[26],           Extract(87, 80, caller20) == 24_calldata[25],           Extract(95, 88, caller20) == 24_calldata[24],           Extract(0x67, 96, caller20) == 24_calldata[23],           Extract(0x6f, 0x68, caller20) == 24_calldata[22],           Extract(0x77, 0x70, caller20) == 24_calldata[21],           Extract(0x7f, 0x78, caller20) == 24_calldata[20],           Extract(0x87, 0x80, caller20) == 24_calldata[19],           Extract(0x8f, 0x88, caller20) == 24_calldata[18],           Extract(0x97, 0x90, caller20) == 24_calldata[17],           Extract(0x9f, 0x98, caller20) == 24_calldata[16])),   Not(And(Extract(7, 0, caller24) == 24_calldata[35],           Extract(15, 8, caller24) == 24_calldata[34],           Extract(23, 16, caller24) == 24_calldata[33],           Extract(31, 24, caller24) == 24_calldata[32],           Extract(39, 32, caller24) == 24_calldata[31],           Extract(47, 40, caller24) == 24_calldata[30],           Extract(55, 48, caller24) == 24_calldata[29],           Extract(63, 56, caller24) == 24_calldata[28],           Extract(71, 64, caller24) == 24_calldata[27],           Extract(79, 72, caller24) == 24_calldata[26],           Extract(87, 80, caller24) == 24_calldata[25],           Extract(95, 88, caller24) == 24_calldata[24],           Extract(0x67, 96, caller24) == 24_calldata[23],           Extract(0x6f, 0x68, caller24) == 24_calldata[22],           Extract(0x77, 0x70, caller24) == 24_calldata[21],           Extract(0x7f, 0x78, caller24) == 24_calldata[20],           Extract(0x87, 0x80, caller24) == 24_calldata[19],           Extract(0x8f, 0x88, caller24) == 24_calldata[18],           Extract(0x97, 0x90, caller24) == 24_calldata[17],           Extract(0x9f, 0x98, caller24) == 24_calldata[16])))", "smooth": {"type": "cubicBezier"}, "to": "1488"}, {"arrows": "to", "from": "1488", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1489"}, {"arrows": "to", "from": "1487", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1490"}, {"arrows": "to", "from": "1486", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1491"}, {"arrows": "to", "from": "1485", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1492"}, {"arrows": "to", "from": "1483", "label": "And(20_calldata[35] == 24_calldata[35],    20_calldata[34] == 24_calldata[34],    20_calldata[33] == 24_calldata[33],    20_calldata[32] == 24_calldata[32],    20_calldata[31] == 24_calldata[31],    20_calldata[30] == 24_calldata[30],    20_calldata[29] == 24_calldata[29],    20_calldata[28] == 24_calldata[28],    20_calldata[27] == 24_calldata[27],    20_calldata[26] == 24_calldata[26],    20_calldata[25] == 24_calldata[25],    20_calldata[24] == 24_calldata[24],    20_calldata[23] == 24_calldata[23],    20_calldata[22] == 24_calldata[22],    20_calldata[21] == 24_calldata[21],    20_calldata[20] == 24_calldata[20],    20_calldata[19] == 24_calldata[19],    20_calldata[18] == 24_calldata[18],    20_calldata[17] == 24_calldata[17],    20_calldata[16] == 24_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1493"}, {"arrows": "to", "from": "1483", "label": "And(Extract(7, 0, caller20) == 24_calldata[35],    Extract(15, 8, caller20) == 24_calldata[34],    Extract(23, 16, caller20) == 24_calldata[33],    Extract(31, 24, caller20) == 24_calldata[32],    Extract(39, 32, caller20) == 24_calldata[31],    Extract(47, 40, caller20) == 24_calldata[30],    Extract(55, 48, caller20) == 24_calldata[29],    Extract(63, 56, caller20) == 24_calldata[28],    Extract(71, 64, caller20) == 24_calldata[27],    Extract(79, 72, caller20) == 24_calldata[26],    Extract(87, 80, caller20) == 24_calldata[25],    Extract(95, 88, caller20) == 24_calldata[24],    Extract(0x67, 96, caller20) == 24_calldata[23],    Extract(0x6f, 0x68, caller20) == 24_calldata[22],    Extract(0x77, 0x70, caller20) == 24_calldata[21],    Extract(0x7f, 0x78, caller20) == 24_calldata[20],    Extract(0x87, 0x80, caller20) == 24_calldata[19],    Extract(0x8f, 0x88, caller20) == 24_calldata[18],    Extract(0x97, 0x90, caller20) == 24_calldata[17],    Extract(0x9f, 0x98, caller20) == 24_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1494"}, {"arrows": "to", "from": "1483", "label": "And(Extract(7, 0, caller24) == 24_calldata[35],    Extract(15, 8, caller24) == 24_calldata[34],    Extract(23, 16, caller24) == 24_calldata[33],    Extract(31, 24, caller24) == 24_calldata[32],    Extract(39, 32, caller24) == 24_calldata[31],    Extract(47, 40, caller24) == 24_calldata[30],    Extract(55, 48, caller24) == 24_calldata[29],    Extract(63, 56, caller24) == 24_calldata[28],    Extract(71, 64, caller24) == 24_calldata[27],    Extract(79, 72, caller24) == 24_calldata[26],    Extract(87, 80, caller24) == 24_calldata[25],    Extract(95, 88, caller24) == 24_calldata[24],    Extract(0x67, 96, caller24) == 24_calldata[23],    Extract(0x6f, 0x68, caller24) == 24_calldata[22],    Extract(0x77, 0x70, caller24) == 24_calldata[21],    Extract(0x7f, 0x78, caller24) == 24_calldata[20],    Extract(0x87, 0x80, caller24) == 24_calldata[19],    Extract(0x8f, 0x88, caller24) == 24_calldata[18],    Extract(0x97, 0x90, caller24) == 24_calldata[17],    Extract(0x9f, 0x98, caller24) == 24_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1495"}, {"arrows": "to", "from": "1483", "label": "Or(Not(And(20_calldata[35] == 24_calldata[35],           20_calldata[34] == 24_calldata[34],           20_calldata[33] == 24_calldata[33],           20_calldata[32] == 24_calldata[32],           20_calldata[31] == 24_calldata[31],           20_calldata[30] == 24_calldata[30],           20_calldata[29] == 24_calldata[29],           20_calldata[28] == 24_calldata[28],           20_calldata[27] == 24_calldata[27],           20_calldata[26] == 24_calldata[26],           20_calldata[25] == 24_calldata[25],           20_calldata[24] == 24_calldata[24],           20_calldata[23] == 24_calldata[23],           20_calldata[22] == 24_calldata[22],           20_calldata[21] == 24_calldata[21],           20_calldata[20] == 24_calldata[20],           20_calldata[19] == 24_calldata[19],           20_calldata[18] == 24_calldata[18],           20_calldata[17] == 24_calldata[17],           20_calldata[16] == 24_calldata[16])),   Not(And(Extract(7, 0, caller20) == 24_calldata[35],           Extract(15, 8, caller20) == 24_calldata[34],           Extract(23, 16, caller20) == 24_calldata[33],           Extract(31, 24, caller20) == 24_calldata[32],           Extract(39, 32, caller20) == 24_calldata[31],           Extract(47, 40, caller20) == 24_calldata[30],           Extract(55, 48, caller20) == 24_calldata[29],           Extract(63, 56, caller20) == 24_calldata[28],           Extract(71, 64, caller20) == 24_calldata[27],           Extract(79, 72, caller20) == 24_calldata[26],           Extract(87, 80, caller20) == 24_calldata[25],           Extract(95, 88, caller20) == 24_calldata[24],           Extract(0x67, 96, caller20) == 24_calldata[23],           Extract(0x6f, 0x68, caller20) == 24_calldata[22],           Extract(0x77, 0x70, caller20) == 24_calldata[21],           Extract(0x7f, 0x78, caller20) == 24_calldata[20],           Extract(0x87, 0x80, caller20) == 24_calldata[19],           Extract(0x8f, 0x88, caller20) == 24_calldata[18],           Extract(0x97, 0x90, caller20) == 24_calldata[17],           Extract(0x9f, 0x98, caller20) == 24_calldata[16])),   Not(And(Extract(7, 0, caller24) == 24_calldata[35],           Extract(15, 8, caller24) == 24_calldata[34],           Extract(23, 16, caller24) == 24_calldata[33],           Extract(31, 24, caller24) == 24_calldata[32],           Extract(39, 32, caller24) == 24_calldata[31],           Extract(47, 40, caller24) == 24_calldata[30],           Extract(55, 48, caller24) == 24_calldata[29],           Extract(63, 56, caller24) == 24_calldata[28],           Extract(71, 64, caller24) == 24_calldata[27],           Extract(79, 72, caller24) == 24_calldata[26],           Extract(87, 80, caller24) == 24_calldata[25],           Extract(95, 88, caller24) == 24_calldata[24],           Extract(0x67, 96, caller24) == 24_calldata[23],           Extract(0x6f, 0x68, caller24) == 24_calldata[22],           Extract(0x77, 0x70, caller24) == 24_calldata[21],           Extract(0x7f, 0x78, caller24) == 24_calldata[20],           Extract(0x87, 0x80, caller24) == 24_calldata[19],           Extract(0x8f, 0x88, caller24) == 24_calldata[18],           Extract(0x97, 0x90, caller24) == 24_calldata[17],           Extract(0x9f, 0x98, caller24) == 24_calldata[16])))", "smooth": {"type": "cubicBezier"}, "to": "1496"}, {"arrows": "to", "from": "1496", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1497"}, {"arrows": "to", "from": "1495", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1498"}, {"arrows": "to", "from": "1494", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1499"}, {"arrows": "to", "from": "1493", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1500"}, {"arrows": "to", "from": "1482", "label": "And(20_calldata[35] == 24_calldata[35],    20_calldata[34] == 24_calldata[34],    20_calldata[33] == 24_calldata[33],    20_calldata[32] == 24_calldata[32],    20_calldata[31] == 24_calldata[31],    20_calldata[30] == 24_calldata[30],    20_calldata[29] == 24_calldata[29],    20_calldata[28] == 24_calldata[28],    20_calldata[27] == 24_calldata[27],    20_calldata[26] == 24_calldata[26],    20_calldata[25] == 24_calldata[25],    20_calldata[24] == 24_calldata[24],    20_calldata[23] == 24_calldata[23],    20_calldata[22] == 24_calldata[22],    20_calldata[21] == 24_calldata[21],    20_calldata[20] == 24_calldata[20],    20_calldata[19] == 24_calldata[19],    20_calldata[18] == 24_calldata[18],    20_calldata[17] == 24_calldata[17],    20_calldata[16] == 24_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1501"}, {"arrows": "to", "from": "1482", "label": "And(Extract(7, 0, caller20) == 24_calldata[35],    Extract(15, 8, caller20) == 24_calldata[34],    Extract(23, 16, caller20) == 24_calldata[33],    Extract(31, 24, caller20) == 24_calldata[32],    Extract(39, 32, caller20) == 24_calldata[31],    Extract(47, 40, caller20) == 24_calldata[30],    Extract(55, 48, caller20) == 24_calldata[29],    Extract(63, 56, caller20) == 24_calldata[28],    Extract(71, 64, caller20) == 24_calldata[27],    Extract(79, 72, caller20) == 24_calldata[26],    Extract(87, 80, caller20) == 24_calldata[25],    Extract(95, 88, caller20) == 24_calldata[24],    Extract(0x67, 96, caller20) == 24_calldata[23],    Extract(0x6f, 0x68, caller20) == 24_calldata[22],    Extract(0x77, 0x70, caller20) == 24_calldata[21],    Extract(0x7f, 0x78, caller20) == 24_calldata[20],    Extract(0x87, 0x80, caller20) == 24_calldata[19],    Extract(0x8f, 0x88, caller20) == 24_calldata[18],    Extract(0x97, 0x90, caller20) == 24_calldata[17],    Extract(0x9f, 0x98, caller20) == 24_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1502"}, {"arrows": "to", "from": "1482", "label": "And(Extract(7, 0, caller24) == 24_calldata[35],    Extract(15, 8, caller24) == 24_calldata[34],    Extract(23, 16, caller24) == 24_calldata[33],    Extract(31, 24, caller24) == 24_calldata[32],    Extract(39, 32, caller24) == 24_calldata[31],    Extract(47, 40, caller24) == 24_calldata[30],    Extract(55, 48, caller24) == 24_calldata[29],    Extract(63, 56, caller24) == 24_calldata[28],    Extract(71, 64, caller24) == 24_calldata[27],    Extract(79, 72, caller24) == 24_calldata[26],    Extract(87, 80, caller24) == 24_calldata[25],    Extract(95, 88, caller24) == 24_calldata[24],    Extract(0x67, 96, caller24) == 24_calldata[23],    Extract(0x6f, 0x68, caller24) == 24_calldata[22],    Extract(0x77, 0x70, caller24) == 24_calldata[21],    Extract(0x7f, 0x78, caller24) == 24_calldata[20],    Extract(0x87, 0x80, caller24) == 24_calldata[19],    Extract(0x8f, 0x88, caller24) == 24_calldata[18],    Extract(0x97, 0x90, caller24) == 24_calldata[17],    Extract(0x9f, 0x98, caller24) == 24_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1503"}, {"arrows": "to", "from": "1482", "label": "Or(Not(And(20_calldata[35] == 24_calldata[35],           20_calldata[34] == 24_calldata[34],           20_calldata[33] == 24_calldata[33],           20_calldata[32] == 24_calldata[32],           20_calldata[31] == 24_calldata[31],           20_calldata[30] == 24_calldata[30],           20_calldata[29] == 24_calldata[29],           20_calldata[28] == 24_calldata[28],           20_calldata[27] == 24_calldata[27],           20_calldata[26] == 24_calldata[26],           20_calldata[25] == 24_calldata[25],           20_calldata[24] == 24_calldata[24],           20_calldata[23] == 24_calldata[23],           20_calldata[22] == 24_calldata[22],           20_calldata[21] == 24_calldata[21],           20_calldata[20] == 24_calldata[20],           20_calldata[19] == 24_calldata[19],           20_calldata[18] == 24_calldata[18],           20_calldata[17] == 24_calldata[17],           20_calldata[16] == 24_calldata[16])),   Not(And(Extract(7, 0, caller20) == 24_calldata[35],           Extract(15, 8, caller20) == 24_calldata[34],           Extract(23, 16, caller20) == 24_calldata[33],           Extract(31, 24, caller20) == 24_calldata[32],           Extract(39, 32, caller20) == 24_calldata[31],           Extract(47, 40, caller20) == 24_calldata[30],           Extract(55, 48, caller20) == 24_calldata[29],           Extract(63, 56, caller20) == 24_calldata[28],           Extract(71, 64, caller20) == 24_calldata[27],           Extract(79, 72, caller20) == 24_calldata[26],           Extract(87, 80, caller20) == 24_calldata[25],           Extract(95, 88, caller20) == 24_calldata[24],           Extract(0x67, 96, caller20) == 24_calldata[23],           Extract(0x6f, 0x68, caller20) == 24_calldata[22],           Extract(0x77, 0x70, caller20) == 24_calldata[21],           Extract(0x7f, 0x78, caller20) == 24_calldata[20],           Extract(0x87, 0x80, caller20) == 24_calldata[19],           Extract(0x8f, 0x88, caller20) == 24_calldata[18],           Extract(0x97, 0x90, caller20) == 24_calldata[17],           Extract(0x9f, 0x98, caller20) == 24_calldata[16])),   Not(And(Extract(7, 0, caller24) == 24_calldata[35],           Extract(15, 8, caller24) == 24_calldata[34],           Extract(23, 16, caller24) == 24_calldata[33],           Extract(31, 24, caller24) == 24_calldata[32],           Extract(39, 32, caller24) == 24_calldata[31],           Extract(47, 40, caller24) == 24_calldata[30],           Extract(55, 48, caller24) == 24_calldata[29],           Extract(63, 56, caller24) == 24_calldata[28],           Extract(71, 64, caller24) == 24_calldata[27],           Extract(79, 72, caller24) == 24_calldata[26],           Extract(87, 80, caller24) == 24_calldata[25],           Extract(95, 88, caller24) == 24_calldata[24],           Extract(0x67, 96, caller24) == 24_calldata[23],           Extract(0x6f, 0x68, caller24) == 24_calldata[22],           Extract(0x77, 0x70, caller24) == 24_calldata[21],           Extract(0x7f, 0x78, caller24) == 24_calldata[20],           Extract(0x87, 0x80, caller24) == 24_calldata[19],           Extract(0x8f, 0x88, caller24) == 24_calldata[18],           Extract(0x97, 0x90, caller24) == 24_calldata[17],           Extract(0x9f, 0x98, caller24) == 24_calldata[16])))", "smooth": {"type": "cubicBezier"}, "to": "1504"}, {"arrows": "to", "from": "1504", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1505"}, {"arrows": "to", "from": "1503", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1506"}, {"arrows": "to", "from": "1502", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1507"}, {"arrows": "to", "from": "1501", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1508"}, {"arrows": "to", "from": "1480", "label": "And(20_calldata[35] == 24_calldata[35],    20_calldata[34] == 24_calldata[34],    20_calldata[33] == 24_calldata[33],    20_calldata[32] == 24_calldata[32],    20_calldata[31] == 24_calldata[31],    20_calldata[30] == 24_calldata[30],    20_calldata[29] == 24_calldata[29],    20_calldata[28] == 24_calldata[28],    20_calldata[27] == 24_calldata[27],    20_calldata[26] == 24_calldata[26],    20_calldata[25] == 24_calldata[25],    20_calldata[24] == 24_calldata[24],    20_calldata[23] == 24_calldata[23],    20_calldata[22] == 24_calldata[22],    20_calldata[21] == 24_calldata[21],    20_calldata[20] == 24_calldata[20],    20_calldata[19] == 24_calldata[19],    20_calldata[18] == 24_calldata[18],    20_calldata[17] == 24_calldata[17],    20_calldata[16] == 24_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1509"}, {"arrows": "to", "from": "1480", "label": "And(Extract(7, 0, caller20) == 24_calldata[35],    Extract(15, 8, caller20) == 24_calldata[34],    Extract(23, 16, caller20) == 24_calldata[33],    Extract(31, 24, caller20) == 24_calldata[32],    Extract(39, 32, caller20) == 24_calldata[31],    Extract(47, 40, caller20) == 24_calldata[30],    Extract(55, 48, caller20) == 24_calldata[29],    Extract(63, 56, caller20) == 24_calldata[28],    Extract(71, 64, caller20) == 24_calldata[27],    Extract(79, 72, caller20) == 24_calldata[26],    Extract(87, 80, caller20) == 24_calldata[25],    Extract(95, 88, caller20) == 24_calldata[24],    Extract(0x67, 96, caller20) == 24_calldata[23],    Extract(0x6f, 0x68, caller20) == 24_calldata[22],    Extract(0x77, 0x70, caller20) == 24_calldata[21],    Extract(0x7f, 0x78, caller20) == 24_calldata[20],    Extract(0x87, 0x80, caller20) == 24_calldata[19],    Extract(0x8f, 0x88, caller20) == 24_calldata[18],    Extract(0x97, 0x90, caller20) == 24_calldata[17],    Extract(0x9f, 0x98, caller20) == 24_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1510"}, {"arrows": "to", "from": "1510", "label": "And(20_calldata[35] == 24_calldata[35],    20_calldata[34] == 24_calldata[34],    20_calldata[33] == 24_calldata[33],    20_calldata[32] == 24_calldata[32],    20_calldata[31] == 24_calldata[31],    20_calldata[30] == 24_calldata[30],    20_calldata[29] == 24_calldata[29],    20_calldata[28] == 24_calldata[28],    20_calldata[27] == 24_calldata[27],    20_calldata[26] == 24_calldata[26],    20_calldata[25] == 24_calldata[25],    20_calldata[24] == 24_calldata[24],    20_calldata[23] == 24_calldata[23],    20_calldata[22] == 24_calldata[22],    20_calldata[21] == 24_calldata[21],    20_calldata[20] == 24_calldata[20],    20_calldata[19] == 24_calldata[19],    20_calldata[18] == 24_calldata[18],    20_calldata[17] == 24_calldata[17],    20_calldata[16] == 24_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1511"}, {"arrows": "to", "from": "1510", "label": "And(Extract(7, 0, caller20) == 24_calldata[35],    Extract(15, 8, caller20) == 24_calldata[34],    Extract(23, 16, caller20) == 24_calldata[33],    Extract(31, 24, caller20) == 24_calldata[32],    Extract(39, 32, caller20) == 24_calldata[31],    Extract(47, 40, caller20) == 24_calldata[30],    Extract(55, 48, caller20) == 24_calldata[29],    Extract(63, 56, caller20) == 24_calldata[28],    Extract(71, 64, caller20) == 24_calldata[27],    Extract(79, 72, caller20) == 24_calldata[26],    Extract(87, 80, caller20) == 24_calldata[25],    Extract(95, 88, caller20) == 24_calldata[24],    Extract(0x67, 96, caller20) == 24_calldata[23],    Extract(0x6f, 0x68, caller20) == 24_calldata[22],    Extract(0x77, 0x70, caller20) == 24_calldata[21],    Extract(0x7f, 0x78, caller20) == 24_calldata[20],    Extract(0x87, 0x80, caller20) == 24_calldata[19],    Extract(0x8f, 0x88, caller20) == 24_calldata[18],    Extract(0x97, 0x90, caller20) == 24_calldata[17],    Extract(0x9f, 0x98, caller20) == 24_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1512"}, {"arrows": "to", "from": "1510", "label": "Or(Not(And(20_calldata[35] == 24_calldata[35],           20_calldata[34] == 24_calldata[34],           20_calldata[33] == 24_calldata[33],           20_calldata[32] == 24_calldata[32],           20_calldata[31] == 24_calldata[31],           20_calldata[30] == 24_calldata[30],           20_calldata[29] == 24_calldata[29],           20_calldata[28] == 24_calldata[28],           20_calldata[27] == 24_calldata[27],           20_calldata[26] == 24_calldata[26],           20_calldata[25] == 24_calldata[25],           20_calldata[24] == 24_calldata[24],           20_calldata[23] == 24_calldata[23],           20_calldata[22] == 24_calldata[22],           20_calldata[21] == 24_calldata[21],           20_calldata[20] == 24_calldata[20],           20_calldata[19] == 24_calldata[19],           20_calldata[18] == 24_calldata[18],           20_calldata[17] == 24_calldata[17],           20_calldata[16] == 24_calldata[16])),   Not(And(Extract(7, 0, caller20) == 24_calldata[35],           Extract(15, 8, caller20) == 24_calldata[34],           Extract(23, 16, caller20) == 24_calldata[33],           Extract(31, 24, caller20) == 24_calldata[32],           Extract(39, 32, caller20) == 24_calldata[31],           Extract(47, 40, caller20) == 24_calldata[30],           Extract(55, 48, caller20) == 24_calldata[29],           Extract(63, 56, caller20) == 24_calldata[28],           Extract(71, 64, caller20) == 24_calldata[27],           Extract(79, 72, caller20) == 24_calldata[26],           Extract(87, 80, caller20) == 24_calldata[25],           Extract(95, 88, caller20) == 24_calldata[24],           Extract(0x67, 96, caller20) == 24_calldata[23],           Extract(0x6f, 0x68, caller20) == 24_calldata[22],           Extract(0x77, 0x70, caller20) == 24_calldata[21],           Extract(0x7f, 0x78, caller20) == 24_calldata[20],           Extract(0x87, 0x80, caller20) == 24_calldata[19],           Extract(0x8f, 0x88, caller20) == 24_calldata[18],           Extract(0x97, 0x90, caller20) == 24_calldata[17],           Extract(0x9f, 0x98, caller20) == 24_calldata[16])))", "smooth": {"type": "cubicBezier"}, "to": "1513"}, {"arrows": "to", "from": "1513", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1514"}, {"arrows": "to", "from": "1512", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1515"}, {"arrows": "to", "from": "1511", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1516"}, {"arrows": "to", "from": "1509", "label": "And(20_calldata[35] == 24_calldata[35],    20_calldata[34] == 24_calldata[34],    20_calldata[33] == 24_calldata[33],    20_calldata[32] == 24_calldata[32],    20_calldata[31] == 24_calldata[31],    20_calldata[30] == 24_calldata[30],    20_calldata[29] == 24_calldata[29],    20_calldata[28] == 24_calldata[28],    20_calldata[27] == 24_calldata[27],    20_calldata[26] == 24_calldata[26],    20_calldata[25] == 24_calldata[25],    20_calldata[24] == 24_calldata[24],    20_calldata[23] == 24_calldata[23],    20_calldata[22] == 24_calldata[22],    20_calldata[21] == 24_calldata[21],    20_calldata[20] == 24_calldata[20],    20_calldata[19] == 24_calldata[19],    20_calldata[18] == 24_calldata[18],    20_calldata[17] == 24_calldata[17],    20_calldata[16] == 24_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1517"}, {"arrows": "to", "from": "1509", "label": "And(Extract(7, 0, caller20) == 24_calldata[35],    Extract(15, 8, caller20) == 24_calldata[34],    Extract(23, 16, caller20) == 24_calldata[33],    Extract(31, 24, caller20) == 24_calldata[32],    Extract(39, 32, caller20) == 24_calldata[31],    Extract(47, 40, caller20) == 24_calldata[30],    Extract(55, 48, caller20) == 24_calldata[29],    Extract(63, 56, caller20) == 24_calldata[28],    Extract(71, 64, caller20) == 24_calldata[27],    Extract(79, 72, caller20) == 24_calldata[26],    Extract(87, 80, caller20) == 24_calldata[25],    Extract(95, 88, caller20) == 24_calldata[24],    Extract(0x67, 96, caller20) == 24_calldata[23],    Extract(0x6f, 0x68, caller20) == 24_calldata[22],    Extract(0x77, 0x70, caller20) == 24_calldata[21],    Extract(0x7f, 0x78, caller20) == 24_calldata[20],    Extract(0x87, 0x80, caller20) == 24_calldata[19],    Extract(0x8f, 0x88, caller20) == 24_calldata[18],    Extract(0x97, 0x90, caller20) == 24_calldata[17],    Extract(0x9f, 0x98, caller20) == 24_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1518"}, {"arrows": "to", "from": "1509", "label": "Or(Not(And(20_calldata[35] == 24_calldata[35],           20_calldata[34] == 24_calldata[34],           20_calldata[33] == 24_calldata[33],           20_calldata[32] == 24_calldata[32],           20_calldata[31] == 24_calldata[31],           20_calldata[30] == 24_calldata[30],           20_calldata[29] == 24_calldata[29],           20_calldata[28] == 24_calldata[28],           20_calldata[27] == 24_calldata[27],           20_calldata[26] == 24_calldata[26],           20_calldata[25] == 24_calldata[25],           20_calldata[24] == 24_calldata[24],           20_calldata[23] == 24_calldata[23],           20_calldata[22] == 24_calldata[22],           20_calldata[21] == 24_calldata[21],           20_calldata[20] == 24_calldata[20],           20_calldata[19] == 24_calldata[19],           20_calldata[18] == 24_calldata[18],           20_calldata[17] == 24_calldata[17],           20_calldata[16] == 24_calldata[16])),   Not(And(Extract(7, 0, caller20) == 24_calldata[35],           Extract(15, 8, caller20) == 24_calldata[34],           Extract(23, 16, caller20) == 24_calldata[33],           Extract(31, 24, caller20) == 24_calldata[32],           Extract(39, 32, caller20) == 24_calldata[31],           Extract(47, 40, caller20) == 24_calldata[30],           Extract(55, 48, caller20) == 24_calldata[29],           Extract(63, 56, caller20) == 24_calldata[28],           Extract(71, 64, caller20) == 24_calldata[27],           Extract(79, 72, caller20) == 24_calldata[26],           Extract(87, 80, caller20) == 24_calldata[25],           Extract(95, 88, caller20) == 24_calldata[24],           Extract(0x67, 96, caller20) == 24_calldata[23],           Extract(0x6f, 0x68, caller20) == 24_calldata[22],           Extract(0x77, 0x70, caller20) == 24_calldata[21],           Extract(0x7f, 0x78, caller20) == 24_calldata[20],           Extract(0x87, 0x80, caller20) == 24_calldata[19],           Extract(0x8f, 0x88, caller20) == 24_calldata[18],           Extract(0x97, 0x90, caller20) == 24_calldata[17],           Extract(0x9f, 0x98, caller20) == 24_calldata[16])))", "smooth": {"type": "cubicBezier"}, "to": "1519"}, {"arrows": "to", "from": "1519", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1520"}, {"arrows": "to", "from": "1518", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1521"}, {"arrows": "to", "from": "1517", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1522"}, {"arrows": "to", "from": "1479", "label": "And(20_calldata[35] == 24_calldata[35],    20_calldata[34] == 24_calldata[34],    20_calldata[33] == 24_calldata[33],    20_calldata[32] == 24_calldata[32],    20_calldata[31] == 24_calldata[31],    20_calldata[30] == 24_calldata[30],    20_calldata[29] == 24_calldata[29],    20_calldata[28] == 24_calldata[28],    20_calldata[27] == 24_calldata[27],    20_calldata[26] == 24_calldata[26],    20_calldata[25] == 24_calldata[25],    20_calldata[24] == 24_calldata[24],    20_calldata[23] == 24_calldata[23],    20_calldata[22] == 24_calldata[22],    20_calldata[21] == 24_calldata[21],    20_calldata[20] == 24_calldata[20],    20_calldata[19] == 24_calldata[19],    20_calldata[18] == 24_calldata[18],    20_calldata[17] == 24_calldata[17],    20_calldata[16] == 24_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1523"}, {"arrows": "to", "from": "1479", "label": "And(Extract(7, 0, caller20) == 24_calldata[35],    Extract(15, 8, caller20) == 24_calldata[34],    Extract(23, 16, caller20) == 24_calldata[33],    Extract(31, 24, caller20) == 24_calldata[32],    Extract(39, 32, caller20) == 24_calldata[31],    Extract(47, 40, caller20) == 24_calldata[30],    Extract(55, 48, caller20) == 24_calldata[29],    Extract(63, 56, caller20) == 24_calldata[28],    Extract(71, 64, caller20) == 24_calldata[27],    Extract(79, 72, caller20) == 24_calldata[26],    Extract(87, 80, caller20) == 24_calldata[25],    Extract(95, 88, caller20) == 24_calldata[24],    Extract(0x67, 96, caller20) == 24_calldata[23],    Extract(0x6f, 0x68, caller20) == 24_calldata[22],    Extract(0x77, 0x70, caller20) == 24_calldata[21],    Extract(0x7f, 0x78, caller20) == 24_calldata[20],    Extract(0x87, 0x80, caller20) == 24_calldata[19],    Extract(0x8f, 0x88, caller20) == 24_calldata[18],    Extract(0x97, 0x90, caller20) == 24_calldata[17],    Extract(0x9f, 0x98, caller20) == 24_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1524"}, {"arrows": "to", "from": "1524", "label": "And(20_calldata[35] == 24_calldata[35],    20_calldata[34] == 24_calldata[34],    20_calldata[33] == 24_calldata[33],    20_calldata[32] == 24_calldata[32],    20_calldata[31] == 24_calldata[31],    20_calldata[30] == 24_calldata[30],    20_calldata[29] == 24_calldata[29],    20_calldata[28] == 24_calldata[28],    20_calldata[27] == 24_calldata[27],    20_calldata[26] == 24_calldata[26],    20_calldata[25] == 24_calldata[25],    20_calldata[24] == 24_calldata[24],    20_calldata[23] == 24_calldata[23],    20_calldata[22] == 24_calldata[22],    20_calldata[21] == 24_calldata[21],    20_calldata[20] == 24_calldata[20],    20_calldata[19] == 24_calldata[19],    20_calldata[18] == 24_calldata[18],    20_calldata[17] == 24_calldata[17],    20_calldata[16] == 24_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1525"}, {"arrows": "to", "from": "1524", "label": "And(Extract(7, 0, caller20) == 24_calldata[35],    Extract(15, 8, caller20) == 24_calldata[34],    Extract(23, 16, caller20) == 24_calldata[33],    Extract(31, 24, caller20) == 24_calldata[32],    Extract(39, 32, caller20) == 24_calldata[31],    Extract(47, 40, caller20) == 24_calldata[30],    Extract(55, 48, caller20) == 24_calldata[29],    Extract(63, 56, caller20) == 24_calldata[28],    Extract(71, 64, caller20) == 24_calldata[27],    Extract(79, 72, caller20) == 24_calldata[26],    Extract(87, 80, caller20) == 24_calldata[25],    Extract(95, 88, caller20) == 24_calldata[24],    Extract(0x67, 96, caller20) == 24_calldata[23],    Extract(0x6f, 0x68, caller20) == 24_calldata[22],    Extract(0x77, 0x70, caller20) == 24_calldata[21],    Extract(0x7f, 0x78, caller20) == 24_calldata[20],    Extract(0x87, 0x80, caller20) == 24_calldata[19],    Extract(0x8f, 0x88, caller20) == 24_calldata[18],    Extract(0x97, 0x90, caller20) == 24_calldata[17],    Extract(0x9f, 0x98, caller20) == 24_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1526"}, {"arrows": "to", "from": "1524", "label": "Or(Not(And(20_calldata[35] == 24_calldata[35],           20_calldata[34] == 24_calldata[34],           20_calldata[33] == 24_calldata[33],           20_calldata[32] == 24_calldata[32],           20_calldata[31] == 24_calldata[31],           20_calldata[30] == 24_calldata[30],           20_calldata[29] == 24_calldata[29],           20_calldata[28] == 24_calldata[28],           20_calldata[27] == 24_calldata[27],           20_calldata[26] == 24_calldata[26],           20_calldata[25] == 24_calldata[25],           20_calldata[24] == 24_calldata[24],           20_calldata[23] == 24_calldata[23],           20_calldata[22] == 24_calldata[22],           20_calldata[21] == 24_calldata[21],           20_calldata[20] == 24_calldata[20],           20_calldata[19] == 24_calldata[19],           20_calldata[18] == 24_calldata[18],           20_calldata[17] == 24_calldata[17],           20_calldata[16] == 24_calldata[16])),   Not(And(Extract(7, 0, caller20) == 24_calldata[35],           Extract(15, 8, caller20) == 24_calldata[34],           Extract(23, 16, caller20) == 24_calldata[33],           Extract(31, 24, caller20) == 24_calldata[32],           Extract(39, 32, caller20) == 24_calldata[31],           Extract(47, 40, caller20) == 24_calldata[30],           Extract(55, 48, caller20) == 24_calldata[29],           Extract(63, 56, caller20) == 24_calldata[28],           Extract(71, 64, caller20) == 24_calldata[27],           Extract(79, 72, caller20) == 24_calldata[26],           Extract(87, 80, caller20) == 24_calldata[25],           Extract(95, 88, caller20) == 24_calldata[24],           Extract(0x67, 96, caller20) == 24_calldata[23],           Extract(0x6f, 0x68, caller20) == 24_calldata[22],           Extract(0x77, 0x70, caller20) == 24_calldata[21],           Extract(0x7f, 0x78, caller20) == 24_calldata[20],           Extract(0x87, 0x80, caller20) == 24_calldata[19],           Extract(0x8f, 0x88, caller20) == 24_calldata[18],           Extract(0x97, 0x90, caller20) == 24_calldata[17],           Extract(0x9f, 0x98, caller20) == 24_calldata[16])))", "smooth": {"type": "cubicBezier"}, "to": "1527"}, {"arrows": "to", "from": "1527", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1528"}, {"arrows": "to", "from": "1526", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1529"}, {"arrows": "to", "from": "1525", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1530"}, {"arrows": "to", "from": "1523", "label": "And(20_calldata[35] == 24_calldata[35],    20_calldata[34] == 24_calldata[34],    20_calldata[33] == 24_calldata[33],    20_calldata[32] == 24_calldata[32],    20_calldata[31] == 24_calldata[31],    20_calldata[30] == 24_calldata[30],    20_calldata[29] == 24_calldata[29],    20_calldata[28] == 24_calldata[28],    20_calldata[27] == 24_calldata[27],    20_calldata[26] == 24_calldata[26],    20_calldata[25] == 24_calldata[25],    20_calldata[24] == 24_calldata[24],    20_calldata[23] == 24_calldata[23],    20_calldata[22] == 24_calldata[22],    20_calldata[21] == 24_calldata[21],    20_calldata[20] == 24_calldata[20],    20_calldata[19] == 24_calldata[19],    20_calldata[18] == 24_calldata[18],    20_calldata[17] == 24_calldata[17],    20_calldata[16] == 24_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1531"}, {"arrows": "to", "from": "1523", "label": "And(Extract(7, 0, caller20) == 24_calldata[35],    Extract(15, 8, caller20) == 24_calldata[34],    Extract(23, 16, caller20) == 24_calldata[33],    Extract(31, 24, caller20) == 24_calldata[32],    Extract(39, 32, caller20) == 24_calldata[31],    Extract(47, 40, caller20) == 24_calldata[30],    Extract(55, 48, caller20) == 24_calldata[29],    Extract(63, 56, caller20) == 24_calldata[28],    Extract(71, 64, caller20) == 24_calldata[27],    Extract(79, 72, caller20) == 24_calldata[26],    Extract(87, 80, caller20) == 24_calldata[25],    Extract(95, 88, caller20) == 24_calldata[24],    Extract(0x67, 96, caller20) == 24_calldata[23],    Extract(0x6f, 0x68, caller20) == 24_calldata[22],    Extract(0x77, 0x70, caller20) == 24_calldata[21],    Extract(0x7f, 0x78, caller20) == 24_calldata[20],    Extract(0x87, 0x80, caller20) == 24_calldata[19],    Extract(0x8f, 0x88, caller20) == 24_calldata[18],    Extract(0x97, 0x90, caller20) == 24_calldata[17],    Extract(0x9f, 0x98, caller20) == 24_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1532"}, {"arrows": "to", "from": "1523", "label": "Or(Not(And(20_calldata[35] == 24_calldata[35],           20_calldata[34] == 24_calldata[34],           20_calldata[33] == 24_calldata[33],           20_calldata[32] == 24_calldata[32],           20_calldata[31] == 24_calldata[31],           20_calldata[30] == 24_calldata[30],           20_calldata[29] == 24_calldata[29],           20_calldata[28] == 24_calldata[28],           20_calldata[27] == 24_calldata[27],           20_calldata[26] == 24_calldata[26],           20_calldata[25] == 24_calldata[25],           20_calldata[24] == 24_calldata[24],           20_calldata[23] == 24_calldata[23],           20_calldata[22] == 24_calldata[22],           20_calldata[21] == 24_calldata[21],           20_calldata[20] == 24_calldata[20],           20_calldata[19] == 24_calldata[19],           20_calldata[18] == 24_calldata[18],           20_calldata[17] == 24_calldata[17],           20_calldata[16] == 24_calldata[16])),   Not(And(Extract(7, 0, caller20) == 24_calldata[35],           Extract(15, 8, caller20) == 24_calldata[34],           Extract(23, 16, caller20) == 24_calldata[33],           Extract(31, 24, caller20) == 24_calldata[32],           Extract(39, 32, caller20) == 24_calldata[31],           Extract(47, 40, caller20) == 24_calldata[30],           Extract(55, 48, caller20) == 24_calldata[29],           Extract(63, 56, caller20) == 24_calldata[28],           Extract(71, 64, caller20) == 24_calldata[27],           Extract(79, 72, caller20) == 24_calldata[26],           Extract(87, 80, caller20) == 24_calldata[25],           Extract(95, 88, caller20) == 24_calldata[24],           Extract(0x67, 96, caller20) == 24_calldata[23],           Extract(0x6f, 0x68, caller20) == 24_calldata[22],           Extract(0x77, 0x70, caller20) == 24_calldata[21],           Extract(0x7f, 0x78, caller20) == 24_calldata[20],           Extract(0x87, 0x80, caller20) == 24_calldata[19],           Extract(0x8f, 0x88, caller20) == 24_calldata[18],           Extract(0x97, 0x90, caller20) == 24_calldata[17],           Extract(0x9f, 0x98, caller20) == 24_calldata[16])))", "smooth": {"type": "cubicBezier"}, "to": "1533"}, {"arrows": "to", "from": "1533", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1534"}, {"arrows": "to", "from": "1532", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1535"}, {"arrows": "to", "from": "1531", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1536"}, {"arrows": "to", "from": "1178", "label": "ULE(4, 23_calldatasize)", "smooth": {"type": "cubicBezier"}, "to": "1537"}, {"arrows": "to", "from": "1178", "label": "Not(ULE(4, 23_calldatasize))", "smooth": {"type": "cubicBezier"}, "to": "1538"}, {"arrows": "to", "from": "1537", "label": "Not(And(23_calldata[3] == 0xdd,        23_calldata[2] == 13,        23_calldata[1] == 22,        23_calldata[0] == 24))", "smooth": {"type": "cubicBezier"}, "to": "1539"}, {"arrows": "to", "from": "1537", "label": "And(23_calldata[3] == 0xdd,    23_calldata[2] == 13,    23_calldata[1] == 22,    23_calldata[0] == 24)", "smooth": {"type": "cubicBezier"}, "to": "1540"}, {"arrows": "to", "from": "1540", "label": "Not(call_value23 == 0)", "smooth": {"type": "cubicBezier"}, "to": "1541"}, {"arrows": "to", "from": "1540", "label": "call_value23 == 0", "smooth": {"type": "cubicBezier"}, "to": "1542"}, {"arrows": "to", "from": "1542", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1543"}, {"arrows": "to", "from": "1543", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1544"}, {"arrows": "to", "from": "1539", "label": "Not(And(23_calldata[3] == 0xd1,        23_calldata[2] == 0xbf,        23_calldata[1] == 65,        23_calldata[0] == 98))", "smooth": {"type": "cubicBezier"}, "to": "1545"}, {"arrows": "to", "from": "1539", "label": "And(23_calldata[3] == 0xd1,    23_calldata[2] == 0xbf,    23_calldata[1] == 65,    23_calldata[0] == 98)", "smooth": {"type": "cubicBezier"}, "to": "1546"}, {"arrows": "to", "from": "1546", "label": "Not(call_value23 == 0)", "smooth": {"type": "cubicBezier"}, "to": "1547"}, {"arrows": "to", "from": "1546", "label": "call_value23 == 0", "smooth": {"type": "cubicBezier"}, "to": "1548"}, {"arrows": "to", "from": "1548", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1549"}, {"arrows": "to", "from": "1549", "label": "And(20_calldata[35] == Extract(7, 0, caller23),    20_calldata[34] == Extract(15, 8, caller23),    20_calldata[33] == Extract(23, 16, caller23),    20_calldata[32] == Extract(31, 24, caller23),    20_calldata[31] == Extract(39, 32, caller23),    20_calldata[30] == Extract(47, 40, caller23),    20_calldata[29] == Extract(55, 48, caller23),    20_calldata[28] == Extract(63, 56, caller23),    20_calldata[27] == Extract(71, 64, caller23),    20_calldata[26] == Extract(79, 72, caller23),    20_calldata[25] == Extract(87, 80, caller23),    20_calldata[24] == Extract(95, 88, caller23),    20_calldata[23] == Extract(0x67, 96, caller23),    20_calldata[22] == Extract(0x6f, 0x68, caller23),    20_calldata[21] == Extract(0x77, 0x70, caller23),    20_calldata[20] == Extract(0x7f, 0x78, caller23),    20_calldata[19] == Extract(0x87, 0x80, caller23),    20_calldata[18] == Extract(0x8f, 0x88, caller23),    20_calldata[17] == Extract(0x97, 0x90, caller23),    20_calldata[16] == Extract(0x9f, 0x98, caller23))", "smooth": {"type": "cubicBezier"}, "to": "1550"}, {"arrows": "to", "from": "1549", "label": "Not(And(20_calldata[35] == Extract(7, 0, caller23),        20_calldata[34] == Extract(15, 8, caller23),        20_calldata[33] == Extract(23, 16, caller23),        20_calldata[32] == Extract(31, 24, caller23),        20_calldata[31] == Extract(39, 32, caller23),        20_calldata[30] == Extract(47, 40, caller23),        20_calldata[29] == Extract(55, 48, caller23),        20_calldata[28] == Extract(63, 56, caller23),        20_calldata[27] == Extract(71, 64, caller23),        20_calldata[26] == Extract(79, 72, caller23),        20_calldata[25] == Extract(87, 80, caller23),        20_calldata[24] == Extract(95, 88, caller23),        20_calldata[23] == Extract(0x67, 96, caller23),        20_calldata[22] == Extract(0x6f, 0x68, caller23),        20_calldata[21] == Extract(0x77, 0x70, caller23),        20_calldata[20] == Extract(0x7f, 0x78, caller23),        20_calldata[19] == Extract(0x87, 0x80, caller23),        20_calldata[18] == Extract(0x8f, 0x88, caller23),        20_calldata[17] == Extract(0x97, 0x90, caller23),        20_calldata[16] == Extract(0x9f, 0x98, caller23)))", "smooth": {"type": "cubicBezier"}, "to": "1551"}, {"arrows": "to", "from": "1551", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1552"}, {"arrows": "to", "from": "1550", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1553"}, {"arrows": "to", "from": "1545", "label": "Not(And(23_calldata[3] == 49,        23_calldata[2] == 0x82,        23_calldata[1] == 0xa0,        23_calldata[0] == 0x70))", "smooth": {"type": "cubicBezier"}, "to": "1554"}, {"arrows": "to", "from": "1545", "label": "And(23_calldata[3] == 49,    23_calldata[2] == 0x82,    23_calldata[1] == 0xa0,    23_calldata[0] == 0x70)", "smooth": {"type": "cubicBezier"}, "to": "1555"}, {"arrows": "to", "from": "1555", "label": "Not(call_value23 == 0)", "smooth": {"type": "cubicBezier"}, "to": "1556"}, {"arrows": "to", "from": "1555", "label": "call_value23 == 0", "smooth": {"type": "cubicBezier"}, "to": "1557"}, {"arrows": "to", "from": "1557", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1558"}, {"arrows": "to", "from": "1558", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1559"}, {"arrows": "to", "from": "1554", "label": "Not(And(23_calldata[3] == 0x87,        23_calldata[2] == 14,        23_calldata[1] == 33,        23_calldata[0] == 0xa3))", "smooth": {"type": "cubicBezier"}, "to": "1560"}, {"arrows": "to", "from": "1554", "label": "And(23_calldata[3] == 0x87,    23_calldata[2] == 14,    23_calldata[1] == 33,    23_calldata[0] == 0xa3)", "smooth": {"type": "cubicBezier"}, "to": "1561"}, {"arrows": "to", "from": "1561", "label": "Not(call_value23 == 0)", "smooth": {"type": "cubicBezier"}, "to": "1562"}, {"arrows": "to", "from": "1561", "label": "call_value23 == 0", "smooth": {"type": "cubicBezier"}, "to": "1563"}, {"arrows": "to", "from": "1563", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1564"}, {"arrows": "to", "from": "1564", "label": "True", "smooth": {"type": "cubicBezier"}, "to": "1565"}, {"arrows": "to", "from": "1565", "label": "And(20_calldata[35] == Extract(7, 0, caller23),    20_calldata[34] == Extract(15, 8, caller23),    20_calldata[33] == Extract(23, 16, caller23),    20_calldata[32] == Extract(31, 24, caller23),    20_calldata[31] == Extract(39, 32, caller23),    20_calldata[30] == Extract(47, 40, caller23),    20_calldata[29] == Extract(55, 48, caller23),    20_calldata[28] == Extract(63, 56, caller23),    20_calldata[27] == Extract(71, 64, caller23),    20_calldata[26] == Extract(79, 72, caller23),    20_calldata[25] == Extract(87, 80, caller23),    20_calldata[24] == Extract(95, 88, caller23),    20_calldata[23] == Extract(0x67, 96, caller23),    20_calldata[22] == Extract(0x6f, 0x68, caller23),    20_calldata[21] == Extract(0x77, 0x70, caller23),    20_calldata[20] == Extract(0x7f, 0x78, caller23),    20_calldata[19] == Extract(0x87, 0x80, caller23),    20_calldata[18] == Extract(0x8f, 0x88, caller23),    20_calldata[17] == Extract(0x97, 0x90, caller23),    20_calldata[16] == Extract(0x9f, 0x98, caller23))", "smooth": {"type": "cubicBezier"}, "to": "1566"}, {"arrows": "to", "from": "1565", "label": "Not(And(20_calldata[35] == Extract(7, 0, caller23),        20_calldata[34] == Extract(15, 8, caller23),        20_calldata[33] == Extract(23, 16, caller23),        20_calldata[32] == Extract(31, 24, caller23),        20_calldata[31] == Extract(39, 32, caller23),        20_calldata[30] == Extract(47, 40, caller23),        20_calldata[29] == Extract(55, 48, caller23),        20_calldata[28] == Extract(63, 56, caller23),        20_calldata[27] == Extract(71, 64, caller23),        20_calldata[26] == Extract(79, 72, caller23),        20_calldata[25] == Extract(87, 80, caller23),        20_calldata[24] == Extract(95, 88, caller23),        20_calldata[23] == Extract(0x67, 96, caller23),        20_calldata[22] == Extract(0x6f, 0x68, caller23),        20_calldata[21] == Extract(0x77, 0x70, caller23),        20_calldata[20] == Extract(0x7f, 0x78, caller23),        20_calldata[19] == Extract(0x87, 0x80, caller23),        20_calldata[18] == Extract(0x8f, 0x88, caller23),        20_calldata[17] == Extract(0x97, 0x90, caller23),        20_calldata[16] == Extract(0x9f, 0x98, caller23)))", "smooth": {"type": "cubicBezier"}, "to": "1567"}, {"arrows": "to", "from": "1567", "label": "And(20_calldata[35] == 23_calldata[35],    20_calldata[34] == 23_calldata[34],    20_calldata[33] == 23_calldata[33],    20_calldata[32] == 23_calldata[32],    20_calldata[31] == 23_calldata[31],    20_calldata[30] == 23_calldata[30],    20_calldata[29] == 23_calldata[29],    20_calldata[28] == 23_calldata[28],    20_calldata[27] == 23_calldata[27],    20_calldata[26] == 23_calldata[26],    20_calldata[25] == 23_calldata[25],    20_calldata[24] == 23_calldata[24],    20_calldata[23] == 23_calldata[23],    20_calldata[22] == 23_calldata[22],    20_calldata[21] == 23_calldata[21],    20_calldata[20] == 23_calldata[20],    20_calldata[19] == 23_calldata[19],    20_calldata[18] == 23_calldata[18],    20_calldata[17] == 23_calldata[17],    20_calldata[16] == 23_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1568"}, {"arrows": "to", "from": "1567", "label": "And(Extract(7, 0, caller23) == 23_calldata[35],    Extract(15, 8, caller23) == 23_calldata[34],    Extract(23, 16, caller23) == 23_calldata[33],    Extract(31, 24, caller23) == 23_calldata[32],    Extract(39, 32, caller23) == 23_calldata[31],    Extract(47, 40, caller23) == 23_calldata[30],    Extract(55, 48, caller23) == 23_calldata[29],    Extract(63, 56, caller23) == 23_calldata[28],    Extract(71, 64, caller23) == 23_calldata[27],    Extract(79, 72, caller23) == 23_calldata[26],    Extract(87, 80, caller23) == 23_calldata[25],    Extract(95, 88, caller23) == 23_calldata[24],    Extract(0x67, 96, caller23) == 23_calldata[23],    Extract(0x6f, 0x68, caller23) == 23_calldata[22],    Extract(0x77, 0x70, caller23) == 23_calldata[21],    Extract(0x7f, 0x78, caller23) == 23_calldata[20],    Extract(0x87, 0x80, caller23) == 23_calldata[19],    Extract(0x8f, 0x88, caller23) == 23_calldata[18],    Extract(0x97, 0x90, caller23) == 23_calldata[17],    Extract(0x9f, 0x98, caller23) == 23_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1569"}, {"arrows": "to", "from": "1569", "label": "And(20_calldata[35] == 23_calldata[35],    20_calldata[34] == 23_calldata[34],    20_calldata[33] == 23_calldata[33],    20_calldata[32] == 23_calldata[32],    20_calldata[31] == 23_calldata[31],    20_calldata[30] == 23_calldata[30],    20_calldata[29] == 23_calldata[29],    20_calldata[28] == 23_calldata[28],    20_calldata[27] == 23_calldata[27],    20_calldata[26] == 23_calldata[26],    20_calldata[25] == 23_calldata[25],    20_calldata[24] == 23_calldata[24],    20_calldata[23] == 23_calldata[23],    20_calldata[22] == 23_calldata[22],    20_calldata[21] == 23_calldata[21],    20_calldata[20] == 23_calldata[20],    20_calldata[19] == 23_calldata[19],    20_calldata[18] == 23_calldata[18],    20_calldata[17] == 23_calldata[17],    20_calldata[16] == 23_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1570"}, {"arrows": "to", "from": "1569", "label": "And(Extract(7, 0, caller23) == 23_calldata[35],    Extract(15, 8, caller23) == 23_calldata[34],    Extract(23, 16, caller23) == 23_calldata[33],    Extract(31, 24, caller23) == 23_calldata[32],    Extract(39, 32, caller23) == 23_calldata[31],    Extract(47, 40, caller23) == 23_calldata[30],    Extract(55, 48, caller23) == 23_calldata[29],    Extract(63, 56, caller23) == 23_calldata[28],    Extract(71, 64, caller23) == 23_calldata[27],    Extract(79, 72, caller23) == 23_calldata[26],    Extract(87, 80, caller23) == 23_calldata[25],    Extract(95, 88, caller23) == 23_calldata[24],    Extract(0x67, 96, caller23) == 23_calldata[23],    Extract(0x6f, 0x68, caller23) == 23_calldata[22],    Extract(0x77, 0x70, caller23) == 23_calldata[21],    Extract(0x7f, 0x78, caller23) == 23_calldata[20],    Extract(0x87, 0x80, caller23) == 23_calldata[19],    Extract(0x8f, 0x88, caller23) == 23_calldata[18],    Extract(0x97, 0x90, caller23) == 23_calldata[17],    Extract(0x9f, 0x98, caller23) == 23_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1571"}, {"arrows": "to", "from": "1569", "label": "Or(Not(And(20_calldata[35] == 23_calldata[35],           20_calldata[34] == 23_calldata[34],           20_calldata[33] == 23_calldata[33],           20_calldata[32] == 23_calldata[32],           20_calldata[31] == 23_calldata[31],           20_calldata[30] == 23_calldata[30],           20_calldata[29] == 23_calldata[29],           20_calldata[28] == 23_calldata[28],           20_calldata[27] == 23_calldata[27],           20_calldata[26] == 23_calldata[26],           20_calldata[25] == 23_calldata[25],           20_calldata[24] == 23_calldata[24],           20_calldata[23] == 23_calldata[23],           20_calldata[22] == 23_calldata[22],           20_calldata[21] == 23_calldata[21],           20_calldata[20] == 23_calldata[20],           20_calldata[19] == 23_calldata[19],           20_calldata[18] == 23_calldata[18],           20_calldata[17] == 23_calldata[17],           20_calldata[16] == 23_calldata[16])),   Not(And(Extract(7, 0, caller23) == 23_calldata[35],           Extract(15, 8, caller23) == 23_calldata[34],           Extract(23, 16, caller23) == 23_calldata[33],           Extract(31, 24, caller23) == 23_calldata[32],           Extract(39, 32, caller23) == 23_calldata[31],           Extract(47, 40, caller23) == 23_calldata[30],           Extract(55, 48, caller23) == 23_calldata[29],           Extract(63, 56, caller23) == 23_calldata[28],           Extract(71, 64, caller23) == 23_calldata[27],           Extract(79, 72, caller23) == 23_calldata[26],           Extract(87, 80, caller23) == 23_calldata[25],           Extract(95, 88, caller23) == 23_calldata[24],           Extract(0x67, 96, caller23) == 23_calldata[23],           Extract(0x6f, 0x68, caller23) == 23_calldata[22],           Extract(0x77, 0x70, caller23) == 23_calldata[21],           Extract(0x7f, 0x78, caller23) == 23_calldata[20],           Extract(0x87, 0x80, caller23) == 23_calldata[19],           Extract(0x8f, 0x88, caller23) == 23_calldata[18],           Extract(0x97, 0x90, caller23) == 23_calldata[17],           Extract(0x9f, 0x98, caller23) == 23_calldata[16])))", "smooth": {"type": "cubicBezier"}, "to": "1572"}, {"arrows": "to", "from": "1572", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1573"}, {"arrows": "to", "from": "1571", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1574"}, {"arrows": "to", "from": "1570", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1575"}, {"arrows": "to", "from": "1568", "label": "And(20_calldata[35] == 23_calldata[35],    20_calldata[34] == 23_calldata[34],    20_calldata[33] == 23_calldata[33],    20_calldata[32] == 23_calldata[32],    20_calldata[31] == 23_calldata[31],    20_calldata[30] == 23_calldata[30],    20_calldata[29] == 23_calldata[29],    20_calldata[28] == 23_calldata[28],    20_calldata[27] == 23_calldata[27],    20_calldata[26] == 23_calldata[26],    20_calldata[25] == 23_calldata[25],    20_calldata[24] == 23_calldata[24],    20_calldata[23] == 23_calldata[23],    20_calldata[22] == 23_calldata[22],    20_calldata[21] == 23_calldata[21],    20_calldata[20] == 23_calldata[20],    20_calldata[19] == 23_calldata[19],    20_calldata[18] == 23_calldata[18],    20_calldata[17] == 23_calldata[17],    20_calldata[16] == 23_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1576"}, {"arrows": "to", "from": "1568", "label": "And(Extract(7, 0, caller23) == 23_calldata[35],    Extract(15, 8, caller23) == 23_calldata[34],    Extract(23, 16, caller23) == 23_calldata[33],    Extract(31, 24, caller23) == 23_calldata[32],    Extract(39, 32, caller23) == 23_calldata[31],    Extract(47, 40, caller23) == 23_calldata[30],    Extract(55, 48, caller23) == 23_calldata[29],    Extract(63, 56, caller23) == 23_calldata[28],    Extract(71, 64, caller23) == 23_calldata[27],    Extract(79, 72, caller23) == 23_calldata[26],    Extract(87, 80, caller23) == 23_calldata[25],    Extract(95, 88, caller23) == 23_calldata[24],    Extract(0x67, 96, caller23) == 23_calldata[23],    Extract(0x6f, 0x68, caller23) == 23_calldata[22],    Extract(0x77, 0x70, caller23) == 23_calldata[21],    Extract(0x7f, 0x78, caller23) == 23_calldata[20],    Extract(0x87, 0x80, caller23) == 23_calldata[19],    Extract(0x8f, 0x88, caller23) == 23_calldata[18],    Extract(0x97, 0x90, caller23) == 23_calldata[17],    Extract(0x9f, 0x98, caller23) == 23_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1577"}, {"arrows": "to", "from": "1568", "label": "Or(Not(And(20_calldata[35] == 23_calldata[35],           20_calldata[34] == 23_calldata[34],           20_calldata[33] == 23_calldata[33],           20_calldata[32] == 23_calldata[32],           20_calldata[31] == 23_calldata[31],           20_calldata[30] == 23_calldata[30],           20_calldata[29] == 23_calldata[29],           20_calldata[28] == 23_calldata[28],           20_calldata[27] == 23_calldata[27],           20_calldata[26] == 23_calldata[26],           20_calldata[25] == 23_calldata[25],           20_calldata[24] == 23_calldata[24],           20_calldata[23] == 23_calldata[23],           20_calldata[22] == 23_calldata[22],           20_calldata[21] == 23_calldata[21],           20_calldata[20] == 23_calldata[20],           20_calldata[19] == 23_calldata[19],           20_calldata[18] == 23_calldata[18],           20_calldata[17] == 23_calldata[17],           20_calldata[16] == 23_calldata[16])),   Not(And(Extract(7, 0, caller23) == 23_calldata[35],           Extract(15, 8, caller23) == 23_calldata[34],           Extract(23, 16, caller23) == 23_calldata[33],           Extract(31, 24, caller23) == 23_calldata[32],           Extract(39, 32, caller23) == 23_calldata[31],           Extract(47, 40, caller23) == 23_calldata[30],           Extract(55, 48, caller23) == 23_calldata[29],           Extract(63, 56, caller23) == 23_calldata[28],           Extract(71, 64, caller23) == 23_calldata[27],           Extract(79, 72, caller23) == 23_calldata[26],           Extract(87, 80, caller23) == 23_calldata[25],           Extract(95, 88, caller23) == 23_calldata[24],           Extract(0x67, 96, caller23) == 23_calldata[23],           Extract(0x6f, 0x68, caller23) == 23_calldata[22],           Extract(0x77, 0x70, caller23) == 23_calldata[21],           Extract(0x7f, 0x78, caller23) == 23_calldata[20],           Extract(0x87, 0x80, caller23) == 23_calldata[19],           Extract(0x8f, 0x88, caller23) == 23_calldata[18],           Extract(0x97, 0x90, caller23) == 23_calldata[17],           Extract(0x9f, 0x98, caller23) == 23_calldata[16])))", "smooth": {"type": "cubicBezier"}, "to": "1578"}, {"arrows": "to", "from": "1578", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1579"}, {"arrows": "to", "from": "1577", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1580"}, {"arrows": "to", "from": "1576", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1581"}, {"arrows": "to", "from": "1566", "label": "And(20_calldata[35] == 23_calldata[35],    20_calldata[34] == 23_calldata[34],    20_calldata[33] == 23_calldata[33],    20_calldata[32] == 23_calldata[32],    20_calldata[31] == 23_calldata[31],    20_calldata[30] == 23_calldata[30],    20_calldata[29] == 23_calldata[29],    20_calldata[28] == 23_calldata[28],    20_calldata[27] == 23_calldata[27],    20_calldata[26] == 23_calldata[26],    20_calldata[25] == 23_calldata[25],    20_calldata[24] == 23_calldata[24],    20_calldata[23] == 23_calldata[23],    20_calldata[22] == 23_calldata[22],    20_calldata[21] == 23_calldata[21],    20_calldata[20] == 23_calldata[20],    20_calldata[19] == 23_calldata[19],    20_calldata[18] == 23_calldata[18],    20_calldata[17] == 23_calldata[17],    20_calldata[16] == 23_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1582"}, {"arrows": "to", "from": "1566", "label": "Not(And(20_calldata[35] == 23_calldata[35],        20_calldata[34] == 23_calldata[34],        20_calldata[33] == 23_calldata[33],        20_calldata[32] == 23_calldata[32],        20_calldata[31] == 23_calldata[31],        20_calldata[30] == 23_calldata[30],        20_calldata[29] == 23_calldata[29],        20_calldata[28] == 23_calldata[28],        20_calldata[27] == 23_calldata[27],        20_calldata[26] == 23_calldata[26],        20_calldata[25] == 23_calldata[25],        20_calldata[24] == 23_calldata[24],        20_calldata[23] == 23_calldata[23],        20_calldata[22] == 23_calldata[22],        20_calldata[21] == 23_calldata[21],        20_calldata[20] == 23_calldata[20],        20_calldata[19] == 23_calldata[19],        20_calldata[18] == 23_calldata[18],        20_calldata[17] == 23_calldata[17],        20_calldata[16] == 23_calldata[16]))", "smooth": {"type": "cubicBezier"}, "to": "1583"}, {"arrows": "to", "from": "1583", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1584"}, {"arrows": "to", "from": "1582", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1585"}, {"arrows": "to", "from": "1177", "label": "ULE(4, 22_calldatasize)", "smooth": {"type": "cubicBezier"}, "to": "1586"}, {"arrows": "to", "from": "1177", "label": "Not(ULE(4, 22_calldatasize))", "smooth": {"type": "cubicBezier"}, "to": "1587"}, {"arrows": "to", "from": "1586", "label": "Not(And(22_calldata[3] == 0xdd,        22_calldata[2] == 13,        22_calldata[1] == 22,        22_calldata[0] == 24))", "smooth": {"type": "cubicBezier"}, "to": "1588"}, {"arrows": "to", "from": "1586", "label": "And(22_calldata[3] == 0xdd,    22_calldata[2] == 13,    22_calldata[1] == 22,    22_calldata[0] == 24)", "smooth": {"type": "cubicBezier"}, "to": "1589"}, {"arrows": "to", "from": "1589", "label": "Not(call_value22 == 0)", "smooth": {"type": "cubicBezier"}, "to": "1590"}, {"arrows": "to", "from": "1589", "label": "call_value22 == 0", "smooth": {"type": "cubicBezier"}, "to": "1591"}, {"arrows": "to", "from": "1591", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1592"}, {"arrows": "to", "from": "1592", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1593"}, {"arrows": "to", "from": "1588", "label": "Not(And(22_calldata[3] == 0xd1,        22_calldata[2] == 0xbf,        22_calldata[1] == 65,        22_calldata[0] == 98))", "smooth": {"type": "cubicBezier"}, "to": "1594"}, {"arrows": "to", "from": "1588", "label": "And(22_calldata[3] == 0xd1,    22_calldata[2] == 0xbf,    22_calldata[1] == 65,    22_calldata[0] == 98)", "smooth": {"type": "cubicBezier"}, "to": "1595"}, {"arrows": "to", "from": "1595", "label": "Not(call_value22 == 0)", "smooth": {"type": "cubicBezier"}, "to": "1596"}, {"arrows": "to", "from": "1595", "label": "call_value22 == 0", "smooth": {"type": "cubicBezier"}, "to": "1597"}, {"arrows": "to", "from": "1597", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1598"}, {"arrows": "to", "from": "1598", "label": "Extract(0x9f, 0, caller20) == Extract(0x9f, 0, caller22)", "smooth": {"type": "cubicBezier"}, "to": "1599"}, {"arrows": "to", "from": "1598", "label": "Not(Extract(0x9f, 0, caller20) == Extract(0x9f, 0, caller22))", "smooth": {"type": "cubicBezier"}, "to": "1600"}, {"arrows": "to", "from": "1600", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1601"}, {"arrows": "to", "from": "1599", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1602"}, {"arrows": "to", "from": "1594", "label": "Not(And(22_calldata[3] == 49,        22_calldata[2] == 0x82,        22_calldata[1] == 0xa0,        22_calldata[0] == 0x70))", "smooth": {"type": "cubicBezier"}, "to": "1603"}, {"arrows": "to", "from": "1594", "label": "And(22_calldata[3] == 49,    22_calldata[2] == 0x82,    22_calldata[1] == 0xa0,    22_calldata[0] == 0x70)", "smooth": {"type": "cubicBezier"}, "to": "1604"}, {"arrows": "to", "from": "1604", "label": "Not(call_value22 == 0)", "smooth": {"type": "cubicBezier"}, "to": "1605"}, {"arrows": "to", "from": "1604", "label": "call_value22 == 0", "smooth": {"type": "cubicBezier"}, "to": "1606"}, {"arrows": "to", "from": "1606", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1607"}, {"arrows": "to", "from": "1607", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1608"}, {"arrows": "to", "from": "1603", "label": "Not(And(22_calldata[3] == 0x87,        22_calldata[2] == 14,        22_calldata[1] == 33,        22_calldata[0] == 0xa3))", "smooth": {"type": "cubicBezier"}, "to": "1609"}, {"arrows": "to", "from": "1603", "label": "And(22_calldata[3] == 0x87,    22_calldata[2] == 14,    22_calldata[1] == 33,    22_calldata[0] == 0xa3)", "smooth": {"type": "cubicBezier"}, "to": "1610"}, {"arrows": "to", "from": "1610", "label": "Not(call_value22 == 0)", "smooth": {"type": "cubicBezier"}, "to": "1611"}, {"arrows": "to", "from": "1610", "label": "call_value22 == 0", "smooth": {"type": "cubicBezier"}, "to": "1612"}, {"arrows": "to", "from": "1612", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1613"}, {"arrows": "to", "from": "1613", "label": "True", "smooth": {"type": "cubicBezier"}, "to": "1614"}, {"arrows": "to", "from": "1614", "label": "Extract(0x9f, 0, caller20) == Extract(0x9f, 0, caller22)", "smooth": {"type": "cubicBezier"}, "to": "1615"}, {"arrows": "to", "from": "1614", "label": "Not(Extract(0x9f, 0, caller20) == Extract(0x9f, 0, caller22))", "smooth": {"type": "cubicBezier"}, "to": "1616"}, {"arrows": "to", "from": "1616", "label": "And(Extract(7, 0, caller20) == 22_calldata[35],    Extract(15, 8, caller20) == 22_calldata[34],    Extract(23, 16, caller20) == 22_calldata[33],    Extract(31, 24, caller20) == 22_calldata[32],    Extract(39, 32, caller20) == 22_calldata[31],    Extract(47, 40, caller20) == 22_calldata[30],    Extract(55, 48, caller20) == 22_calldata[29],    Extract(63, 56, caller20) == 22_calldata[28],    Extract(71, 64, caller20) == 22_calldata[27],    Extract(79, 72, caller20) == 22_calldata[26],    Extract(87, 80, caller20) == 22_calldata[25],    Extract(95, 88, caller20) == 22_calldata[24],    Extract(0x67, 96, caller20) == 22_calldata[23],    Extract(0x6f, 0x68, caller20) == 22_calldata[22],    Extract(0x77, 0x70, caller20) == 22_calldata[21],    Extract(0x7f, 0x78, caller20) == 22_calldata[20],    Extract(0x87, 0x80, caller20) == 22_calldata[19],    Extract(0x8f, 0x88, caller20) == 22_calldata[18],    Extract(0x97, 0x90, caller20) == 22_calldata[17],    Extract(0x9f, 0x98, caller20) == 22_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1617"}, {"arrows": "to", "from": "1616", "label": "And(Extract(7, 0, caller22) == 22_calldata[35],    Extract(15, 8, caller22) == 22_calldata[34],    Extract(23, 16, caller22) == 22_calldata[33],    Extract(31, 24, caller22) == 22_calldata[32],    Extract(39, 32, caller22) == 22_calldata[31],    Extract(47, 40, caller22) == 22_calldata[30],    Extract(55, 48, caller22) == 22_calldata[29],    Extract(63, 56, caller22) == 22_calldata[28],    Extract(71, 64, caller22) == 22_calldata[27],    Extract(79, 72, caller22) == 22_calldata[26],    Extract(87, 80, caller22) == 22_calldata[25],    Extract(95, 88, caller22) == 22_calldata[24],    Extract(0x67, 96, caller22) == 22_calldata[23],    Extract(0x6f, 0x68, caller22) == 22_calldata[22],    Extract(0x77, 0x70, caller22) == 22_calldata[21],    Extract(0x7f, 0x78, caller22) == 22_calldata[20],    Extract(0x87, 0x80, caller22) == 22_calldata[19],    Extract(0x8f, 0x88, caller22) == 22_calldata[18],    Extract(0x97, 0x90, caller22) == 22_calldata[17],    Extract(0x9f, 0x98, caller22) == 22_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1618"}, {"arrows": "to", "from": "1618", "label": "And(Extract(7, 0, caller20) == 22_calldata[35],    Extract(15, 8, caller20) == 22_calldata[34],    Extract(23, 16, caller20) == 22_calldata[33],    Extract(31, 24, caller20) == 22_calldata[32],    Extract(39, 32, caller20) == 22_calldata[31],    Extract(47, 40, caller20) == 22_calldata[30],    Extract(55, 48, caller20) == 22_calldata[29],    Extract(63, 56, caller20) == 22_calldata[28],    Extract(71, 64, caller20) == 22_calldata[27],    Extract(79, 72, caller20) == 22_calldata[26],    Extract(87, 80, caller20) == 22_calldata[25],    Extract(95, 88, caller20) == 22_calldata[24],    Extract(0x67, 96, caller20) == 22_calldata[23],    Extract(0x6f, 0x68, caller20) == 22_calldata[22],    Extract(0x77, 0x70, caller20) == 22_calldata[21],    Extract(0x7f, 0x78, caller20) == 22_calldata[20],    Extract(0x87, 0x80, caller20) == 22_calldata[19],    Extract(0x8f, 0x88, caller20) == 22_calldata[18],    Extract(0x97, 0x90, caller20) == 22_calldata[17],    Extract(0x9f, 0x98, caller20) == 22_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1619"}, {"arrows": "to", "from": "1618", "label": "And(Extract(7, 0, caller22) == 22_calldata[35],    Extract(15, 8, caller22) == 22_calldata[34],    Extract(23, 16, caller22) == 22_calldata[33],    Extract(31, 24, caller22) == 22_calldata[32],    Extract(39, 32, caller22) == 22_calldata[31],    Extract(47, 40, caller22) == 22_calldata[30],    Extract(55, 48, caller22) == 22_calldata[29],    Extract(63, 56, caller22) == 22_calldata[28],    Extract(71, 64, caller22) == 22_calldata[27],    Extract(79, 72, caller22) == 22_calldata[26],    Extract(87, 80, caller22) == 22_calldata[25],    Extract(95, 88, caller22) == 22_calldata[24],    Extract(0x67, 96, caller22) == 22_calldata[23],    Extract(0x6f, 0x68, caller22) == 22_calldata[22],    Extract(0x77, 0x70, caller22) == 22_calldata[21],    Extract(0x7f, 0x78, caller22) == 22_calldata[20],    Extract(0x87, 0x80, caller22) == 22_calldata[19],    Extract(0x8f, 0x88, caller22) == 22_calldata[18],    Extract(0x97, 0x90, caller22) == 22_calldata[17],    Extract(0x9f, 0x98, caller22) == 22_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1620"}, {"arrows": "to", "from": "1618", "label": "Or(Not(And(Extract(7, 0, caller20) == 22_calldata[35],           Extract(15, 8, caller20) == 22_calldata[34],           Extract(23, 16, caller20) == 22_calldata[33],           Extract(31, 24, caller20) == 22_calldata[32],           Extract(39, 32, caller20) == 22_calldata[31],           Extract(47, 40, caller20) == 22_calldata[30],           Extract(55, 48, caller20) == 22_calldata[29],           Extract(63, 56, caller20) == 22_calldata[28],           Extract(71, 64, caller20) == 22_calldata[27],           Extract(79, 72, caller20) == 22_calldata[26],           Extract(87, 80, caller20) == 22_calldata[25],           Extract(95, 88, caller20) == 22_calldata[24],           Extract(0x67, 96, caller20) == 22_calldata[23],           Extract(0x6f, 0x68, caller20) == 22_calldata[22],           Extract(0x77, 0x70, caller20) == 22_calldata[21],           Extract(0x7f, 0x78, caller20) == 22_calldata[20],           Extract(0x87, 0x80, caller20) == 22_calldata[19],           Extract(0x8f, 0x88, caller20) == 22_calldata[18],           Extract(0x97, 0x90, caller20) == 22_calldata[17],           Extract(0x9f, 0x98, caller20) == 22_calldata[16])),   Not(And(Extract(7, 0, caller22) == 22_calldata[35],           Extract(15, 8, caller22) == 22_calldata[34],           Extract(23, 16, caller22) == 22_calldata[33],           Extract(31, 24, caller22) == 22_calldata[32],           Extract(39, 32, caller22) == 22_calldata[31],           Extract(47, 40, caller22) == 22_calldata[30],           Extract(55, 48, caller22) == 22_calldata[29],           Extract(63, 56, caller22) == 22_calldata[28],           Extract(71, 64, caller22) == 22_calldata[27],           Extract(79, 72, caller22) == 22_calldata[26],           Extract(87, 80, caller22) == 22_calldata[25],           Extract(95, 88, caller22) == 22_calldata[24],           Extract(0x67, 96, caller22) == 22_calldata[23],           Extract(0x6f, 0x68, caller22) == 22_calldata[22],           Extract(0x77, 0x70, caller22) == 22_calldata[21],           Extract(0x7f, 0x78, caller22) == 22_calldata[20],           Extract(0x87, 0x80, caller22) == 22_calldata[19],           Extract(0x8f, 0x88, caller22) == 22_calldata[18],           Extract(0x97, 0x90, caller22) == 22_calldata[17],           Extract(0x9f, 0x98, caller22) == 22_calldata[16])))", "smooth": {"type": "cubicBezier"}, "to": "1621"}, {"arrows": "to", "from": "1621", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1622"}, {"arrows": "to", "from": "1620", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1623"}, {"arrows": "to", "from": "1619", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1624"}, {"arrows": "to", "from": "1617", "label": "And(Extract(7, 0, caller20) == 22_calldata[35],    Extract(15, 8, caller20) == 22_calldata[34],    Extract(23, 16, caller20) == 22_calldata[33],    Extract(31, 24, caller20) == 22_calldata[32],    Extract(39, 32, caller20) == 22_calldata[31],    Extract(47, 40, caller20) == 22_calldata[30],    Extract(55, 48, caller20) == 22_calldata[29],    Extract(63, 56, caller20) == 22_calldata[28],    Extract(71, 64, caller20) == 22_calldata[27],    Extract(79, 72, caller20) == 22_calldata[26],    Extract(87, 80, caller20) == 22_calldata[25],    Extract(95, 88, caller20) == 22_calldata[24],    Extract(0x67, 96, caller20) == 22_calldata[23],    Extract(0x6f, 0x68, caller20) == 22_calldata[22],    Extract(0x77, 0x70, caller20) == 22_calldata[21],    Extract(0x7f, 0x78, caller20) == 22_calldata[20],    Extract(0x87, 0x80, caller20) == 22_calldata[19],    Extract(0x8f, 0x88, caller20) == 22_calldata[18],    Extract(0x97, 0x90, caller20) == 22_calldata[17],    Extract(0x9f, 0x98, caller20) == 22_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1625"}, {"arrows": "to", "from": "1617", "label": "And(Extract(7, 0, caller22) == 22_calldata[35],    Extract(15, 8, caller22) == 22_calldata[34],    Extract(23, 16, caller22) == 22_calldata[33],    Extract(31, 24, caller22) == 22_calldata[32],    Extract(39, 32, caller22) == 22_calldata[31],    Extract(47, 40, caller22) == 22_calldata[30],    Extract(55, 48, caller22) == 22_calldata[29],    Extract(63, 56, caller22) == 22_calldata[28],    Extract(71, 64, caller22) == 22_calldata[27],    Extract(79, 72, caller22) == 22_calldata[26],    Extract(87, 80, caller22) == 22_calldata[25],    Extract(95, 88, caller22) == 22_calldata[24],    Extract(0x67, 96, caller22) == 22_calldata[23],    Extract(0x6f, 0x68, caller22) == 22_calldata[22],    Extract(0x77, 0x70, caller22) == 22_calldata[21],    Extract(0x7f, 0x78, caller22) == 22_calldata[20],    Extract(0x87, 0x80, caller22) == 22_calldata[19],    Extract(0x8f, 0x88, caller22) == 22_calldata[18],    Extract(0x97, 0x90, caller22) == 22_calldata[17],    Extract(0x9f, 0x98, caller22) == 22_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1626"}, {"arrows": "to", "from": "1617", "label": "Or(Not(And(Extract(7, 0, caller20) == 22_calldata[35],           Extract(15, 8, caller20) == 22_calldata[34],           Extract(23, 16, caller20) == 22_calldata[33],           Extract(31, 24, caller20) == 22_calldata[32],           Extract(39, 32, caller20) == 22_calldata[31],           Extract(47, 40, caller20) == 22_calldata[30],           Extract(55, 48, caller20) == 22_calldata[29],           Extract(63, 56, caller20) == 22_calldata[28],           Extract(71, 64, caller20) == 22_calldata[27],           Extract(79, 72, caller20) == 22_calldata[26],           Extract(87, 80, caller20) == 22_calldata[25],           Extract(95, 88, caller20) == 22_calldata[24],           Extract(0x67, 96, caller20) == 22_calldata[23],           Extract(0x6f, 0x68, caller20) == 22_calldata[22],           Extract(0x77, 0x70, caller20) == 22_calldata[21],           Extract(0x7f, 0x78, caller20) == 22_calldata[20],           Extract(0x87, 0x80, caller20) == 22_calldata[19],           Extract(0x8f, 0x88, caller20) == 22_calldata[18],           Extract(0x97, 0x90, caller20) == 22_calldata[17],           Extract(0x9f, 0x98, caller20) == 22_calldata[16])),   Not(And(Extract(7, 0, caller22) == 22_calldata[35],           Extract(15, 8, caller22) == 22_calldata[34],           Extract(23, 16, caller22) == 22_calldata[33],           Extract(31, 24, caller22) == 22_calldata[32],           Extract(39, 32, caller22) == 22_calldata[31],           Extract(47, 40, caller22) == 22_calldata[30],           Extract(55, 48, caller22) == 22_calldata[29],           Extract(63, 56, caller22) == 22_calldata[28],           Extract(71, 64, caller22) == 22_calldata[27],           Extract(79, 72, caller22) == 22_calldata[26],           Extract(87, 80, caller22) == 22_calldata[25],           Extract(95, 88, caller22) == 22_calldata[24],           Extract(0x67, 96, caller22) == 22_calldata[23],           Extract(0x6f, 0x68, caller22) == 22_calldata[22],           Extract(0x77, 0x70, caller22) == 22_calldata[21],           Extract(0x7f, 0x78, caller22) == 22_calldata[20],           Extract(0x87, 0x80, caller22) == 22_calldata[19],           Extract(0x8f, 0x88, caller22) == 22_calldata[18],           Extract(0x97, 0x90, caller22) == 22_calldata[17],           Extract(0x9f, 0x98, caller22) == 22_calldata[16])))", "smooth": {"type": "cubicBezier"}, "to": "1627"}, {"arrows": "to", "from": "1627", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1628"}, {"arrows": "to", "from": "1626", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1629"}, {"arrows": "to", "from": "1625", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1630"}, {"arrows": "to", "from": "1615", "label": "And(Extract(7, 0, caller20) == 22_calldata[35],    Extract(15, 8, caller20) == 22_calldata[34],    Extract(23, 16, caller20) == 22_calldata[33],    Extract(31, 24, caller20) == 22_calldata[32],    Extract(39, 32, caller20) == 22_calldata[31],    Extract(47, 40, caller20) == 22_calldata[30],    Extract(55, 48, caller20) == 22_calldata[29],    Extract(63, 56, caller20) == 22_calldata[28],    Extract(71, 64, caller20) == 22_calldata[27],    Extract(79, 72, caller20) == 22_calldata[26],    Extract(87, 80, caller20) == 22_calldata[25],    Extract(95, 88, caller20) == 22_calldata[24],    Extract(0x67, 96, caller20) == 22_calldata[23],    Extract(0x6f, 0x68, caller20) == 22_calldata[22],    Extract(0x77, 0x70, caller20) == 22_calldata[21],    Extract(0x7f, 0x78, caller20) == 22_calldata[20],    Extract(0x87, 0x80, caller20) == 22_calldata[19],    Extract(0x8f, 0x88, caller20) == 22_calldata[18],    Extract(0x97, 0x90, caller20) == 22_calldata[17],    Extract(0x9f, 0x98, caller20) == 22_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1631"}, {"arrows": "to", "from": "1615", "label": "Not(And(Extract(7, 0, caller20) == 22_calldata[35],        Extract(15, 8, caller20) == 22_calldata[34],        Extract(23, 16, caller20) == 22_calldata[33],        Extract(31, 24, caller20) == 22_calldata[32],        Extract(39, 32, caller20) == 22_calldata[31],        Extract(47, 40, caller20) == 22_calldata[30],        Extract(55, 48, caller20) == 22_calldata[29],        Extract(63, 56, caller20) == 22_calldata[28],        Extract(71, 64, caller20) == 22_calldata[27],        Extract(79, 72, caller20) == 22_calldata[26],        Extract(87, 80, caller20) == 22_calldata[25],        Extract(95, 88, caller20) == 22_calldata[24],        Extract(0x67, 96, caller20) == 22_calldata[23],        Extract(0x6f, 0x68, caller20) == 22_calldata[22],        Extract(0x77, 0x70, caller20) == 22_calldata[21],        Extract(0x7f, 0x78, caller20) == 22_calldata[20],        Extract(0x87, 0x80, caller20) == 22_calldata[19],        Extract(0x8f, 0x88, caller20) == 22_calldata[18],        Extract(0x97, 0x90, caller20) == 22_calldata[17],        Extract(0x9f, 0x98, caller20) == 22_calldata[16]))", "smooth": {"type": "cubicBezier"}, "to": "1632"}, {"arrows": "to", "from": "1632", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1633"}, {"arrows": "to", "from": "1631", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1634"}, {"arrows": "to", "from": "1176", "label": "ULE(4, 21_calldatasize)", "smooth": {"type": "cubicBezier"}, "to": "1635"}, {"arrows": "to", "from": "1176", "label": "Not(ULE(4, 21_calldatasize))", "smooth": {"type": "cubicBezier"}, "to": "1636"}, {"arrows": "to", "from": "1635", "label": "Not(And(21_calldata[3] == 0xdd,        21_calldata[2] == 13,        21_calldata[1] == 22,        21_calldata[0] == 24))", "smooth": {"type": "cubicBezier"}, "to": "1637"}, {"arrows": "to", "from": "1635", "label": "And(21_calldata[3] == 0xdd,    21_calldata[2] == 13,    21_calldata[1] == 22,    21_calldata[0] == 24)", "smooth": {"type": "cubicBezier"}, "to": "1638"}, {"arrows": "to", "from": "1638", "label": "Not(call_value21 == 0)", "smooth": {"type": "cubicBezier"}, "to": "1639"}, {"arrows": "to", "from": "1638", "label": "call_value21 == 0", "smooth": {"type": "cubicBezier"}, "to": "1640"}, {"arrows": "to", "from": "1640", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1641"}, {"arrows": "to", "from": "1641", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1642"}, {"arrows": "to", "from": "1637", "label": "Not(And(21_calldata[3] == 0xd1,        21_calldata[2] == 0xbf,        21_calldata[1] == 65,        21_calldata[0] == 98))", "smooth": {"type": "cubicBezier"}, "to": "1643"}, {"arrows": "to", "from": "1637", "label": "And(21_calldata[3] == 0xd1,    21_calldata[2] == 0xbf,    21_calldata[1] == 65,    21_calldata[0] == 98)", "smooth": {"type": "cubicBezier"}, "to": "1644"}, {"arrows": "to", "from": "1644", "label": "Not(call_value21 == 0)", "smooth": {"type": "cubicBezier"}, "to": "1645"}, {"arrows": "to", "from": "1644", "label": "call_value21 == 0", "smooth": {"type": "cubicBezier"}, "to": "1646"}, {"arrows": "to", "from": "1646", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1647"}, {"arrows": "to", "from": "1647", "label": "And(20_calldata[35] == Extract(7, 0, caller21),    20_calldata[34] == Extract(15, 8, caller21),    20_calldata[33] == Extract(23, 16, caller21),    20_calldata[32] == Extract(31, 24, caller21),    20_calldata[31] == Extract(39, 32, caller21),    20_calldata[30] == Extract(47, 40, caller21),    20_calldata[29] == Extract(55, 48, caller21),    20_calldata[28] == Extract(63, 56, caller21),    20_calldata[27] == Extract(71, 64, caller21),    20_calldata[26] == Extract(79, 72, caller21),    20_calldata[25] == Extract(87, 80, caller21),    20_calldata[24] == Extract(95, 88, caller21),    20_calldata[23] == Extract(0x67, 96, caller21),    20_calldata[22] == Extract(0x6f, 0x68, caller21),    20_calldata[21] == Extract(0x77, 0x70, caller21),    20_calldata[20] == Extract(0x7f, 0x78, caller21),    20_calldata[19] == Extract(0x87, 0x80, caller21),    20_calldata[18] == Extract(0x8f, 0x88, caller21),    20_calldata[17] == Extract(0x97, 0x90, caller21),    20_calldata[16] == Extract(0x9f, 0x98, caller21))", "smooth": {"type": "cubicBezier"}, "to": "1648"}, {"arrows": "to", "from": "1647", "label": "Not(And(20_calldata[35] == Extract(7, 0, caller21),        20_calldata[34] == Extract(15, 8, caller21),        20_calldata[33] == Extract(23, 16, caller21),        20_calldata[32] == Extract(31, 24, caller21),        20_calldata[31] == Extract(39, 32, caller21),        20_calldata[30] == Extract(47, 40, caller21),        20_calldata[29] == Extract(55, 48, caller21),        20_calldata[28] == Extract(63, 56, caller21),        20_calldata[27] == Extract(71, 64, caller21),        20_calldata[26] == Extract(79, 72, caller21),        20_calldata[25] == Extract(87, 80, caller21),        20_calldata[24] == Extract(95, 88, caller21),        20_calldata[23] == Extract(0x67, 96, caller21),        20_calldata[22] == Extract(0x6f, 0x68, caller21),        20_calldata[21] == Extract(0x77, 0x70, caller21),        20_calldata[20] == Extract(0x7f, 0x78, caller21),        20_calldata[19] == Extract(0x87, 0x80, caller21),        20_calldata[18] == Extract(0x8f, 0x88, caller21),        20_calldata[17] == Extract(0x97, 0x90, caller21),        20_calldata[16] == Extract(0x9f, 0x98, caller21)))", "smooth": {"type": "cubicBezier"}, "to": "1649"}, {"arrows": "to", "from": "1649", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1650"}, {"arrows": "to", "from": "1648", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1651"}, {"arrows": "to", "from": "1643", "label": "Not(And(21_calldata[3] == 49,        21_calldata[2] == 0x82,        21_calldata[1] == 0xa0,        21_calldata[0] == 0x70))", "smooth": {"type": "cubicBezier"}, "to": "1652"}, {"arrows": "to", "from": "1643", "label": "And(21_calldata[3] == 49,    21_calldata[2] == 0x82,    21_calldata[1] == 0xa0,    21_calldata[0] == 0x70)", "smooth": {"type": "cubicBezier"}, "to": "1653"}, {"arrows": "to", "from": "1653", "label": "Not(call_value21 == 0)", "smooth": {"type": "cubicBezier"}, "to": "1654"}, {"arrows": "to", "from": "1653", "label": "call_value21 == 0", "smooth": {"type": "cubicBezier"}, "to": "1655"}, {"arrows": "to", "from": "1655", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1656"}, {"arrows": "to", "from": "1656", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1657"}, {"arrows": "to", "from": "1652", "label": "Not(And(21_calldata[3] == 0x87,        21_calldata[2] == 14,        21_calldata[1] == 33,        21_calldata[0] == 0xa3))", "smooth": {"type": "cubicBezier"}, "to": "1658"}, {"arrows": "to", "from": "1652", "label": "And(21_calldata[3] == 0x87,    21_calldata[2] == 14,    21_calldata[1] == 33,    21_calldata[0] == 0xa3)", "smooth": {"type": "cubicBezier"}, "to": "1659"}, {"arrows": "to", "from": "1659", "label": "Not(call_value21 == 0)", "smooth": {"type": "cubicBezier"}, "to": "1660"}, {"arrows": "to", "from": "1659", "label": "call_value21 == 0", "smooth": {"type": "cubicBezier"}, "to": "1661"}, {"arrows": "to", "from": "1661", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1662"}, {"arrows": "to", "from": "1662", "label": "True", "smooth": {"type": "cubicBezier"}, "to": "1663"}, {"arrows": "to", "from": "1663", "label": "And(20_calldata[35] == Extract(7, 0, caller21),    20_calldata[34] == Extract(15, 8, caller21),    20_calldata[33] == Extract(23, 16, caller21),    20_calldata[32] == Extract(31, 24, caller21),    20_calldata[31] == Extract(39, 32, caller21),    20_calldata[30] == Extract(47, 40, caller21),    20_calldata[29] == Extract(55, 48, caller21),    20_calldata[28] == Extract(63, 56, caller21),    20_calldata[27] == Extract(71, 64, caller21),    20_calldata[26] == Extract(79, 72, caller21),    20_calldata[25] == Extract(87, 80, caller21),    20_calldata[24] == Extract(95, 88, caller21),    20_calldata[23] == Extract(0x67, 96, caller21),    20_calldata[22] == Extract(0x6f, 0x68, caller21),    20_calldata[21] == Extract(0x77, 0x70, caller21),    20_calldata[20] == Extract(0x7f, 0x78, caller21),    20_calldata[19] == Extract(0x87, 0x80, caller21),    20_calldata[18] == Extract(0x8f, 0x88, caller21),    20_calldata[17] == Extract(0x97, 0x90, caller21),    20_calldata[16] == Extract(0x9f, 0x98, caller21))", "smooth": {"type": "cubicBezier"}, "to": "1664"}, {"arrows": "to", "from": "1663", "label": "Not(And(20_calldata[35] == Extract(7, 0, caller21),        20_calldata[34] == Extract(15, 8, caller21),        20_calldata[33] == Extract(23, 16, caller21),        20_calldata[32] == Extract(31, 24, caller21),        20_calldata[31] == Extract(39, 32, caller21),        20_calldata[30] == Extract(47, 40, caller21),        20_calldata[29] == Extract(55, 48, caller21),        20_calldata[28] == Extract(63, 56, caller21),        20_calldata[27] == Extract(71, 64, caller21),        20_calldata[26] == Extract(79, 72, caller21),        20_calldata[25] == Extract(87, 80, caller21),        20_calldata[24] == Extract(95, 88, caller21),        20_calldata[23] == Extract(0x67, 96, caller21),        20_calldata[22] == Extract(0x6f, 0x68, caller21),        20_calldata[21] == Extract(0x77, 0x70, caller21),        20_calldata[20] == Extract(0x7f, 0x78, caller21),        20_calldata[19] == Extract(0x87, 0x80, caller21),        20_calldata[18] == Extract(0x8f, 0x88, caller21),        20_calldata[17] == Extract(0x97, 0x90, caller21),        20_calldata[16] == Extract(0x9f, 0x98, caller21)))", "smooth": {"type": "cubicBezier"}, "to": "1665"}, {"arrows": "to", "from": "1665", "label": "And(20_calldata[35] == 21_calldata[35],    20_calldata[34] == 21_calldata[34],    20_calldata[33] == 21_calldata[33],    20_calldata[32] == 21_calldata[32],    20_calldata[31] == 21_calldata[31],    20_calldata[30] == 21_calldata[30],    20_calldata[29] == 21_calldata[29],    20_calldata[28] == 21_calldata[28],    20_calldata[27] == 21_calldata[27],    20_calldata[26] == 21_calldata[26],    20_calldata[25] == 21_calldata[25],    20_calldata[24] == 21_calldata[24],    20_calldata[23] == 21_calldata[23],    20_calldata[22] == 21_calldata[22],    20_calldata[21] == 21_calldata[21],    20_calldata[20] == 21_calldata[20],    20_calldata[19] == 21_calldata[19],    20_calldata[18] == 21_calldata[18],    20_calldata[17] == 21_calldata[17],    20_calldata[16] == 21_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1666"}, {"arrows": "to", "from": "1665", "label": "And(Extract(7, 0, caller21) == 21_calldata[35],    Extract(15, 8, caller21) == 21_calldata[34],    Extract(23, 16, caller21) == 21_calldata[33],    Extract(31, 24, caller21) == 21_calldata[32],    Extract(39, 32, caller21) == 21_calldata[31],    Extract(47, 40, caller21) == 21_calldata[30],    Extract(55, 48, caller21) == 21_calldata[29],    Extract(63, 56, caller21) == 21_calldata[28],    Extract(71, 64, caller21) == 21_calldata[27],    Extract(79, 72, caller21) == 21_calldata[26],    Extract(87, 80, caller21) == 21_calldata[25],    Extract(95, 88, caller21) == 21_calldata[24],    Extract(0x67, 96, caller21) == 21_calldata[23],    Extract(0x6f, 0x68, caller21) == 21_calldata[22],    Extract(0x77, 0x70, caller21) == 21_calldata[21],    Extract(0x7f, 0x78, caller21) == 21_calldata[20],    Extract(0x87, 0x80, caller21) == 21_calldata[19],    Extract(0x8f, 0x88, caller21) == 21_calldata[18],    Extract(0x97, 0x90, caller21) == 21_calldata[17],    Extract(0x9f, 0x98, caller21) == 21_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1667"}, {"arrows": "to", "from": "1667", "label": "And(20_calldata[35] == 21_calldata[35],    20_calldata[34] == 21_calldata[34],    20_calldata[33] == 21_calldata[33],    20_calldata[32] == 21_calldata[32],    20_calldata[31] == 21_calldata[31],    20_calldata[30] == 21_calldata[30],    20_calldata[29] == 21_calldata[29],    20_calldata[28] == 21_calldata[28],    20_calldata[27] == 21_calldata[27],    20_calldata[26] == 21_calldata[26],    20_calldata[25] == 21_calldata[25],    20_calldata[24] == 21_calldata[24],    20_calldata[23] == 21_calldata[23],    20_calldata[22] == 21_calldata[22],    20_calldata[21] == 21_calldata[21],    20_calldata[20] == 21_calldata[20],    20_calldata[19] == 21_calldata[19],    20_calldata[18] == 21_calldata[18],    20_calldata[17] == 21_calldata[17],    20_calldata[16] == 21_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1668"}, {"arrows": "to", "from": "1667", "label": "And(Extract(7, 0, caller21) == 21_calldata[35],    Extract(15, 8, caller21) == 21_calldata[34],    Extract(23, 16, caller21) == 21_calldata[33],    Extract(31, 24, caller21) == 21_calldata[32],    Extract(39, 32, caller21) == 21_calldata[31],    Extract(47, 40, caller21) == 21_calldata[30],    Extract(55, 48, caller21) == 21_calldata[29],    Extract(63, 56, caller21) == 21_calldata[28],    Extract(71, 64, caller21) == 21_calldata[27],    Extract(79, 72, caller21) == 21_calldata[26],    Extract(87, 80, caller21) == 21_calldata[25],    Extract(95, 88, caller21) == 21_calldata[24],    Extract(0x67, 96, caller21) == 21_calldata[23],    Extract(0x6f, 0x68, caller21) == 21_calldata[22],    Extract(0x77, 0x70, caller21) == 21_calldata[21],    Extract(0x7f, 0x78, caller21) == 21_calldata[20],    Extract(0x87, 0x80, caller21) == 21_calldata[19],    Extract(0x8f, 0x88, caller21) == 21_calldata[18],    Extract(0x97, 0x90, caller21) == 21_calldata[17],    Extract(0x9f, 0x98, caller21) == 21_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1669"}, {"arrows": "to", "from": "1667", "label": "Or(Not(And(20_calldata[35] == 21_calldata[35],           20_calldata[34] == 21_calldata[34],           20_calldata[33] == 21_calldata[33],           20_calldata[32] == 21_calldata[32],           20_calldata[31] == 21_calldata[31],           20_calldata[30] == 21_calldata[30],           20_calldata[29] == 21_calldata[29],           20_calldata[28] == 21_calldata[28],           20_calldata[27] == 21_calldata[27],           20_calldata[26] == 21_calldata[26],           20_calldata[25] == 21_calldata[25],           20_calldata[24] == 21_calldata[24],           20_calldata[23] == 21_calldata[23],           20_calldata[22] == 21_calldata[22],           20_calldata[21] == 21_calldata[21],           20_calldata[20] == 21_calldata[20],           20_calldata[19] == 21_calldata[19],           20_calldata[18] == 21_calldata[18],           20_calldata[17] == 21_calldata[17],           20_calldata[16] == 21_calldata[16])),   Not(And(Extract(7, 0, caller21) == 21_calldata[35],           Extract(15, 8, caller21) == 21_calldata[34],           Extract(23, 16, caller21) == 21_calldata[33],           Extract(31, 24, caller21) == 21_calldata[32],           Extract(39, 32, caller21) == 21_calldata[31],           Extract(47, 40, caller21) == 21_calldata[30],           Extract(55, 48, caller21) == 21_calldata[29],           Extract(63, 56, caller21) == 21_calldata[28],           Extract(71, 64, caller21) == 21_calldata[27],           Extract(79, 72, caller21) == 21_calldata[26],           Extract(87, 80, caller21) == 21_calldata[25],           Extract(95, 88, caller21) == 21_calldata[24],           Extract(0x67, 96, caller21) == 21_calldata[23],           Extract(0x6f, 0x68, caller21) == 21_calldata[22],           Extract(0x77, 0x70, caller21) == 21_calldata[21],           Extract(0x7f, 0x78, caller21) == 21_calldata[20],           Extract(0x87, 0x80, caller21) == 21_calldata[19],           Extract(0x8f, 0x88, caller21) == 21_calldata[18],           Extract(0x97, 0x90, caller21) == 21_calldata[17],           Extract(0x9f, 0x98, caller21) == 21_calldata[16])))", "smooth": {"type": "cubicBezier"}, "to": "1670"}, {"arrows": "to", "from": "1670", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1671"}, {"arrows": "to", "from": "1669", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1672"}, {"arrows": "to", "from": "1668", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1673"}, {"arrows": "to", "from": "1666", "label": "And(20_calldata[35] == 21_calldata[35],    20_calldata[34] == 21_calldata[34],    20_calldata[33] == 21_calldata[33],    20_calldata[32] == 21_calldata[32],    20_calldata[31] == 21_calldata[31],    20_calldata[30] == 21_calldata[30],    20_calldata[29] == 21_calldata[29],    20_calldata[28] == 21_calldata[28],    20_calldata[27] == 21_calldata[27],    20_calldata[26] == 21_calldata[26],    20_calldata[25] == 21_calldata[25],    20_calldata[24] == 21_calldata[24],    20_calldata[23] == 21_calldata[23],    20_calldata[22] == 21_calldata[22],    20_calldata[21] == 21_calldata[21],    20_calldata[20] == 21_calldata[20],    20_calldata[19] == 21_calldata[19],    20_calldata[18] == 21_calldata[18],    20_calldata[17] == 21_calldata[17],    20_calldata[16] == 21_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1674"}, {"arrows": "to", "from": "1666", "label": "And(Extract(7, 0, caller21) == 21_calldata[35],    Extract(15, 8, caller21) == 21_calldata[34],    Extract(23, 16, caller21) == 21_calldata[33],    Extract(31, 24, caller21) == 21_calldata[32],    Extract(39, 32, caller21) == 21_calldata[31],    Extract(47, 40, caller21) == 21_calldata[30],    Extract(55, 48, caller21) == 21_calldata[29],    Extract(63, 56, caller21) == 21_calldata[28],    Extract(71, 64, caller21) == 21_calldata[27],    Extract(79, 72, caller21) == 21_calldata[26],    Extract(87, 80, caller21) == 21_calldata[25],    Extract(95, 88, caller21) == 21_calldata[24],    Extract(0x67, 96, caller21) == 21_calldata[23],    Extract(0x6f, 0x68, caller21) == 21_calldata[22],    Extract(0x77, 0x70, caller21) == 21_calldata[21],    Extract(0x7f, 0x78, caller21) == 21_calldata[20],    Extract(0x87, 0x80, caller21) == 21_calldata[19],    Extract(0x8f, 0x88, caller21) == 21_calldata[18],    Extract(0x97, 0x90, caller21) == 21_calldata[17],    Extract(0x9f, 0x98, caller21) == 21_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1675"}, {"arrows": "to", "from": "1666", "label": "Or(Not(And(20_calldata[35] == 21_calldata[35],           20_calldata[34] == 21_calldata[34],           20_calldata[33] == 21_calldata[33],           20_calldata[32] == 21_calldata[32],           20_calldata[31] == 21_calldata[31],           20_calldata[30] == 21_calldata[30],           20_calldata[29] == 21_calldata[29],           20_calldata[28] == 21_calldata[28],           20_calldata[27] == 21_calldata[27],           20_calldata[26] == 21_calldata[26],           20_calldata[25] == 21_calldata[25],           20_calldata[24] == 21_calldata[24],           20_calldata[23] == 21_calldata[23],           20_calldata[22] == 21_calldata[22],           20_calldata[21] == 21_calldata[21],           20_calldata[20] == 21_calldata[20],           20_calldata[19] == 21_calldata[19],           20_calldata[18] == 21_calldata[18],           20_calldata[17] == 21_calldata[17],           20_calldata[16] == 21_calldata[16])),   Not(And(Extract(7, 0, caller21) == 21_calldata[35],           Extract(15, 8, caller21) == 21_calldata[34],           Extract(23, 16, caller21) == 21_calldata[33],           Extract(31, 24, caller21) == 21_calldata[32],           Extract(39, 32, caller21) == 21_calldata[31],           Extract(47, 40, caller21) == 21_calldata[30],           Extract(55, 48, caller21) == 21_calldata[29],           Extract(63, 56, caller21) == 21_calldata[28],           Extract(71, 64, caller21) == 21_calldata[27],           Extract(79, 72, caller21) == 21_calldata[26],           Extract(87, 80, caller21) == 21_calldata[25],           Extract(95, 88, caller21) == 21_calldata[24],           Extract(0x67, 96, caller21) == 21_calldata[23],           Extract(0x6f, 0x68, caller21) == 21_calldata[22],           Extract(0x77, 0x70, caller21) == 21_calldata[21],           Extract(0x7f, 0x78, caller21) == 21_calldata[20],           Extract(0x87, 0x80, caller21) == 21_calldata[19],           Extract(0x8f, 0x88, caller21) == 21_calldata[18],           Extract(0x97, 0x90, caller21) == 21_calldata[17],           Extract(0x9f, 0x98, caller21) == 21_calldata[16])))", "smooth": {"type": "cubicBezier"}, "to": "1676"}, {"arrows": "to", "from": "1676", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1677"}, {"arrows": "to", "from": "1675", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1678"}, {"arrows": "to", "from": "1674", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1679"}, {"arrows": "to", "from": "1664", "label": "And(20_calldata[35] == 21_calldata[35],    20_calldata[34] == 21_calldata[34],    20_calldata[33] == 21_calldata[33],    20_calldata[32] == 21_calldata[32],    20_calldata[31] == 21_calldata[31],    20_calldata[30] == 21_calldata[30],    20_calldata[29] == 21_calldata[29],    20_calldata[28] == 21_calldata[28],    20_calldata[27] == 21_calldata[27],    20_calldata[26] == 21_calldata[26],    20_calldata[25] == 21_calldata[25],    20_calldata[24] == 21_calldata[24],    20_calldata[23] == 21_calldata[23],    20_calldata[22] == 21_calldata[22],    20_calldata[21] == 21_calldata[21],    20_calldata[20] == 21_calldata[20],    20_calldata[19] == 21_calldata[19],    20_calldata[18] == 21_calldata[18],    20_calldata[17] == 21_calldata[17],    20_calldata[16] == 21_calldata[16])", "smooth": {"type": "cubicBezier"}, "to": "1680"}, {"arrows": "to", "from": "1664", "label": "Not(And(20_calldata[35] == 21_calldata[35],        20_calldata[34] == 21_calldata[34],        20_calldata[33] == 21_calldata[33],        20_calldata[32] == 21_calldata[32],        20_calldata[31] == 21_calldata[31],        20_calldata[30] == 21_calldata[30],        20_calldata[29] == 21_calldata[29],        20_calldata[28] == 21_calldata[28],        20_calldata[27] == 21_calldata[27],        20_calldata[26] == 21_calldata[26],        20_calldata[25] == 21_calldata[25],        20_calldata[24] == 21_calldata[24],        20_calldata[23] == 21_calldata[23],        20_calldata[22] == 21_calldata[22],        20_calldata[21] == 21_calldata[21],        20_calldata[20] == 21_calldata[20],        20_calldata[19] == 21_calldata[19],        20_calldata[18] == 21_calldata[18],        20_calldata[17] == 21_calldata[17],        20_calldata[16] == 21_calldata[16]))", "smooth": {"type": "cubicBezier"}, "to": "1681"}, {"arrows": "to", "from": "1681", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1682"}, {"arrows": "to", "from": "1680", "label": "", "smooth": {"type": "cubicBezier"}, "to": "1683"}];
+    </script>
+</head>
+<body>
+<p>Mythril / Ethereum LASER Symbolic VM</p>
+<div id="mynetwork"></div>
+<script type="text/javascript">
+    var container = document.getElementById('mynetwork');
+
+    var nodesSet = new vis.DataSet(nodes);
+    var edgesSet = new vis.DataSet(edges);
+    var data = {'nodes': nodesSet, 'edges': edgesSet}
+
+    var gph = new vis.Network(container, data, options);
+    gph.on("click", function (params) {
+        // parse node id
+        var nodeID = params['nodes']['0'];
+        if (nodeID) {
+            var clickedNode = nodesSet.get(nodeID);
+
+            if(clickedNode.isExpanded) {
+                clickedNode.label = clickedNode.truncLabel;
+            }
+            else {
+                clickedNode.label = clickedNode.fullLabel;
+            }
+
+            clickedNode.isExpanded = !clickedNode.isExpanded;
+
+            nodesSet.update(clickedNode);
+        }
+    });
+</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/tests/teststorage/contractstorage.fs b/tests/teststorage/contractstorage.fs
new file mode 100644
index 0000000000000000000000000000000000000000..a3c113189b8dfe443dd7f0fb554fe26643b88afe
Binary files /dev/null and b/tests/teststorage/contractstorage.fs differ
diff --git a/tests/teststorage/contractstorage.fs.index b/tests/teststorage/contractstorage.fs.index
new file mode 100644
index 0000000000000000000000000000000000000000..c7d9803d5b9aad25ee20e956fecf8890d44507f6
Binary files /dev/null and b/tests/teststorage/contractstorage.fs.index differ
diff --git a/tests/teststorage/contractstorage.fs.tmp b/tests/teststorage/contractstorage.fs.tmp
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/tests/util_tests.py b/tests/util_tests.py
new file mode 100644
index 0000000000000000000000000000000000000000..06fdea89a3c73f6456fbc4cc1184c210980d2ac7
--- /dev/null
+++ b/tests/util_tests.py
@@ -0,0 +1,94 @@
+import pytest
+
+from mythril.ethereum.util import extract_version
+
+
+test_data = (
+    ("pragma solidity 0.5.0\n", ["0.5.0"]),
+    ("pragma solidity =0.5.0\n", ["0.5.0"]),
+    ("pragma solidity ^0.4.26\n", ["0.4.26"]),
+    ("pragma solidity ^0.6.3;\n", [f"0.6.{x}" for x in range(3, 13)]),
+    ("pragma solidity ^0.6.3              ;\n", [f"0.6.{x}" for x in range(3, 13)]),
+    (
+        "pragma solidity ^0.6.3;                       \n",
+        [f"0.6.{x}" for x in range(3, 13)],
+    ),
+    (
+        "pragma solidity ^0.6.3       ;                       \n",
+        [f"0.6.{x}" for x in range(3, 13)],
+    ),
+    (
+        """pragma solidity >=0.4.0 <0.6.0             ;               
+        contract SimpleStorage {
+            uint storedData;
+            function set(uint x) public {
+                storedData = x;
+            }
+            function get() public view returns (uint) {
+                return storedData;
+            }
+        }""",
+        [f"0.4.{x}" for x in range(11, 27)] + [f"0.5.{x}" for x in range(0, 18)],
+    ),
+    (
+        """
+        pragma solidity >=0.4.0 <0.6.0
+        ;contract SimpleStorage {
+            uint storedData;
+            function set(uint x) public {
+                storedData = x;
+            }
+            function get() public view returns (uint) {
+                return storedData;
+            }
+        }""",
+        [f"0.4.{x}" for x in range(11, 27)] + [f"0.5.{x}" for x in range(0, 18)],
+    ),
+    (
+        """
+        pragma solidity >=0.4.0 <0.6.0
+        ;contract SimpleStorage {
+            uint storedData;
+            function set(uint x) public {
+                storedData = x;
+            }
+            function get() public view returns (uint) {
+                return storedData;
+            }
+        }""",
+        [f"0.4.{x}" for x in range(11, 27)] + [f"0.5.{x}" for x in range(0, 18)],
+    ),
+    (
+        """
+        pragma solidity >= 0.5.0 < 0.6.0;
+        ;contract SimpleStorage {
+            uint storedData;
+            function set(uint x) public {
+                storedData = x;
+            }
+            function get() public view returns (uint) {
+                return storedData;
+            }
+        }""",
+        [f"0.5.{x}" for x in range(0, 18)],
+    ),
+    (
+        """
+        pragma solidity   >=   0  .  4  .0 <  0  .  6  .         0
+        ;contract SimpleStorage {
+            uint storedData;
+            function set(uint x) public {
+                storedData = x;
+            }
+            function get() public view returns (uint) {
+                return storedData;
+            }
+        }""",
+        [f"0.4.{x}" for x in range(11, 27)] + [f"0.5.{x}" for x in range(0, 18)],
+    ),
+)
+
+
+@pytest.mark.parametrize("input_,output", test_data)
+def test_sar(input_, output):
+    assert extract_version(input_) in output
diff --git a/tox.ini b/tox.ini
new file mode 100644
index 0000000000000000000000000000000000000000..fb4bebf812ea16b9ee7424c9670b014f4f746cb2
--- /dev/null
+++ b/tox.ini
@@ -0,0 +1,98 @@
+[tox]
+envlist = python3.7, python3.9, python3.10
+
+[testenv]
+deps =
+    pytest
+    pytest-mock
+passenv = MYTHRIL_DIR,INFURA_ID
+allowlist_externals = mkdir
+commands =
+    mkdir -p {toxinidir}/tests/testdata/outputs_current/
+    mkdir -p {toxinidir}/tests/testdata/outputs_current_laser_result/
+    py.test -v \
+        --junitxml={toxworkdir}/output/{envname}/junit.xml \
+        --disable-pytest-warnings \
+        {posargs}
+
+[testenv:py37]
+basepython = python3.7
+setenv =
+    COVERAGE_FILE = .coverage.{envname}
+deps =
+    mypy==0.782
+    pytest
+    pytest-mock
+    pytest-cov
+    
+allowlist_externals = mkdir
+commands =
+    mypy --follow-imports=silent --warn-unused-ignores --ignore-missing-imports --no-strict-optional mythril
+    mkdir -p {toxinidir}/tests/testdata/outputs_current/
+    mkdir -p {toxinidir}/tests/testdata/outputs_current_laser_result/
+    py.test -v \
+        --cov=mythril \
+        --cov-config=tox.ini \
+        --cov-report=xml:{toxworkdir}/output/{envname}/coverage.xml \
+        --cov-report=html:{toxworkdir}/output/{envname}/covhtml \
+        --junitxml={toxworkdir}/output/{envname}/junit.xml \
+        --disable-pytest-warnings \
+        {posargs}
+
+[testenv:py38]
+basepython = python3.8
+setenv =
+    COVERAGE_FILE = .coverage.{envname}
+deps =
+    mypy==0.782
+    pytest
+    pytest-mock
+    pytest-cov
+    
+passenv = MYTHRIL_DIR,INFURA_ID
+allowlist_externals = mkdir
+commands =
+    mypy --follow-imports=silent --warn-unused-ignores --ignore-missing-imports --no-strict-optional mythril
+    mkdir -p {toxinidir}/tests/testdata/outputs_current/
+    mkdir -p {toxinidir}/tests/testdata/outputs_current_laser_result/
+    py.test -v \
+        --cov=mythril \
+        --cov-config=tox.ini \
+        --cov-report=xml:{toxworkdir}/output/{envname}/coverage.xml \
+        --cov-report=html:{toxworkdir}/output/{envname}/covhtml \
+        --junitxml={toxworkdir}/output/{envname}/junit.xml \
+        --disable-pytest-warnings \
+        {posargs}
+
+[testenv:py39]
+basepython = python3.9
+setenv =
+    COVERAGE_FILE = .coverage.{envname}
+deps =
+    mypy==0.782
+    pytest
+    pytest-mock
+    pytest-cov
+    
+passenv = MYTHRIL_DIR,INFURA_ID
+allowlist_externals = mkdir
+commands =
+    mypy --follow-imports=silent --warn-unused-ignores --ignore-missing-imports --no-strict-optional mythril
+    mkdir -p {toxinidir}/tests/testdata/outputs_current/
+    mkdir -p {toxinidir}/tests/testdata/outputs_current_laser_result/
+    py.test -v \
+        --cov=mythril \
+        --cov-config=tox.ini \
+        --cov-report=xml:{toxworkdir}/output/{envname}/coverage.xml \
+        --cov-report=html:{toxworkdir}/output/{envname}/covhtml \
+        --junitxml={toxworkdir}/output/{envname}/junit.xml \
+        --disable-pytest-warnings \
+        {posargs}
+
+
+[coverage:report]
+omit =
+    *__init__.py
+    /usr/*
+    *_test.py
+    setup.py